2017-02-21 114 views
0

我正在从Eclipse迁移到Android Studio。当我将Google-play-services集成到我的项目中时,我无法将APK安装到设备上,并显示以下错误消息:“INSTALL_PARSE_FAILED_MANIFEST_MALFORMED”。怎么来eerrAppartrently Android Studio和这个库与我的传统应用程序的包名称以大写字母开头的兼容性问题。当我将包名称的第一个字母(Android Studio中的ApplicationId)更改为较低时,一切都很好。请注意,我的基本包名称全部为小写。问题出在ApplicationId上。Google-play-services和INSTALL_PARSE_FAILED_MANIFEST_MALFORMED

该应用程序已在商店中生活了几年,我不想将其作为新应用程序上传。

真的停留在这 - 有解决方法吗?

回答

0

请参考Naming Conventions

你不能简单地使用产品包名称大写了。

+0

只是为了澄清,这是我的ApplicationId,而不是清单中我的项目包名称。在Eclipse中一切正常。在添加Google服务之前,它也在Android Studio中工作。我现在坚持与Eclipse?我不相信没有解决方法来支持这一点。 –

0

这为我工作:

,而不是导入Eclipse项目到Android的工作室,

(1)创建你已经提上了谷歌Play商店的包名称的新的Android Studio项目但使用全部小写字母。

(2)然后将所有文件复制到Android Studio项目中。 (3)将build.gradle(Module App)文件中的软件包ID改为大写的原始软件包名称(见下文)和sync(这将在apk中创建软件包名称,其中原始软件包名称用大写字符,它会上传到谷歌Play商店并更换旧的!

(4)本安装APK(大写包名)在我的测试手机,它完美地工作。

apply plugin: 'com.android.application' 
android { 
    compileSdkVersion 21 
    buildToolsVersion "21.1.2" 
    defaultConfig { 
     applicationId "DrWebsterApps.New.England.Patriots.Game" 
     minSdkVersion 9 
     targetSdkVersion 21 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 
dependencies { 
    compile 'com.android.support:appcompat-v7:21.0.0' 
    compile 'com.google.android.gms:play-services:7.0.0' 
} 

(5)作为测试用例,这里是弹出当前运行的应用程序包名称以证明它的代码:

import android.app.AlertDialog; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.app.Activity; 
import android.app.ActivityManager; 
import android.app.ListActivity; 
import android.app.ActivityManager.RunningAppProcessInfo; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.widget.LinearLayout; 
import android.widget.TextView; 
import java.util.List; 

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     /* put this in the manifest.xml file!!! 
      <uses-permission android:name="android.permission.GET_TASKS"/> 
*/ 
     ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 
     List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1); 

     createDialogAnswer(taskInfo.get(0).topActivity.getPackageName()); 


} 

    public void createDialogAnswer(String msg) { 

     AlertDialog.Builder adb; 
     LinearLayout linear = new LinearLayout(this); 
     linear.setBackgroundColor(Color.RED); 
     linear.setOrientation(LinearLayout.VERTICAL); 
     adb = new AlertDialog.Builder(this); 
     // String team = (string)R.string.app_name; 
     adb.setTitle(" Trivia App"); 
     adb.setView(linear); 

     LayoutInflater mInflater = (LayoutInflater) this 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View PopUpView = mInflater.inflate(R.layout.scores, linear); 
     TextView mytext = (TextView) PopUpView.findViewById(R.id.QPopUp); 

     // mytext.setTextColor(getResources().getColor(R.color.White)); 
     // mytext.setTextSize(getResources().getDimension(R.dimen.aboutApp_text_size)); 

     mytext.append(msg + " \n"); 

     adb.setNegativeButton("Quit", myDialogOnClickListener); 
     adb.show(); 

    } 

    DialogInterface.OnClickListener myDialogOnClickListener = new DialogInterface.OnClickListener() { 

     public void onClick(DialogInterface v, int x) { 

     finish(); 
     } 
    };