无法重新安装在Android Studio 3.2上生成的已签名APK

时间:2018-12-03 16:46:56

标签: android android-studio android-studio-3.2

我已经成功构建了一个签名的APK,并将其安装在我的设备上。然后,我卸载该应用程序(设置->应用程序管理器-> MyApp->卸载),然后尝试再次安装。第二次尝试安装时,显示以下堆栈跟踪信息“未安装应用程序”:

12-03 14:37:12.785 834-859/? E/Parcel: Class not found when unmarshalling: com.android.packageinstaller.InstallFlowAnalytics
    java.lang.ClassNotFoundException: com.android.packageinstaller.InstallFlowAnalytics
        at java.lang.Class.classForName(Native Method)
        at java.lang.Class.forName(Class.java:324)
        at android.os.Parcel.readParcelableCreator(Parcel.java:2404)
        at android.os.Parcel.readParcelable(Parcel.java:2358)
        at android.os.Parcel.readValue(Parcel.java:2264)
        at android.os.Parcel.readArrayMapInternal(Parcel.java:2614)
        at android.os.BaseBundle.unparcel(BaseBundle.java:221)
        at android.os.BaseBundle.getString(BaseBundle.java:920)
        at android.content.Intent.getStringExtra(Intent.java:6183)
        at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:2695)
        at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:2157)
        at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:6333)
        at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:6111)
        at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:170)
        at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3983)
        at android.os.Binder.execTransact(Binder.java:453)
     Caused by: java.lang.ClassNotFoundException: com.android.packageinstaller.InstallFlowAnalytics
        at java.lang.Class.classForName(Native Method)
        at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
        at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
        at java.lang.Class.classForName(Native Method) 
        at java.lang.Class.forName(Class.java:324) 
        at android.os.Parcel.readParcelableCreator(Parcel.java:2404) 
        at android.os.Parcel.readParcelable(Parcel.java:2358) 
        at android.os.Parcel.readValue(Parcel.java:2264) 
        at android.os.Parcel.readArrayMapInternal(Parcel.java:2614) 
        at android.os.BaseBundle.unparcel(BaseBundle.java:221) 
        at android.os.BaseBundle.getString(BaseBundle.java:920) 
        at android.content.Intent.getStringExtra(Intent.java:6183) 
        at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:2695) 
        at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:2157) 
        at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:6333) 
        at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:6111) 
        at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:170) 
        at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3983) 
        at android.os.Binder.execTransact(Binder.java:453) 
     Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available

如果我增加versionCode并重复此过程,我又可以第一次安装该应用程序,但是无法卸载并重新安装。

我已经在3种不同的设备上尝试过此操作。我尝试仅使用“ V1(Jar签名)”进行签名,还尝试对V1和V2进行签名。

我该如何解决这个问题?

更新0:我第一次尝试安装(这是我唯一能做到的),它显示弹出窗口“被Play保护阻止”,并带有选项“随时安装”。

1 个答案:

答案 0 :(得分:1)

刚发现问题。罪魁祸首是游戏保护。如果禁用它,则可以重新安装该应用程序。否则,它将失败。

我真的认为这是Play Protect上的错误,因为在我第一次安装该应用程序时,它会询问我是否仍然要阻止或安装该应用程序,并且在下次尝试安装该应用程序时使用(相同versionCode ),它只是阻止安装。