APK无法安装。

4
我们的应用程序曾经可以正常运行。最后一次更新是在2个半星期前发布的,当时apk文件被创建并且可以正常工作。
过去两天,我们尝试创建apk(签名或未签名都有问题),Android Studio没有抛出任何错误,但是当apk要安装到手机上时,应用程序无法安装并显示“应用程序未安装”的错误。
此外,在Android Monitor中还出现了以下错误。
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:2706)
                                               at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:2171)
                                               at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:6359)
                                               at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:6127)
                                               at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:170)
                                               at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3999)
                                               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:2706) 
                                               at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:2171) 
                                               at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:6359) 
                                               at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:6127) 
                                               at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:170) 
                                               at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3999) 
                                               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 

有人遇到过类似的问题吗?谢谢您提前。

你正在使用Android Studio 2.3签署apk吗? - Atef Hares
是的,从我所看到的情况来看,Android Studio在旧版apk和新版apk之间进行了中间更新。这是兼容性问题吗?我们需要配置其他东西吗? - Giorgos Pippos
2
我在发布APK时遇到了问题,无法安装。如果签名v2被选中,则会出现这种情况,因此请尝试取消选择v2并仅使用v1(即jar签名)。 - Atef Hares
1
@AtefHares,你应该把它作为一个答案。在调试中,它对我也起作用了。此外,这里有一篇帖子详细介绍了两者之间的区别 - codeMagic
1
@codeMagic 完成了!很高兴我也能帮到你 :) - Atef Hares
显示剩余2条评论
2个回答

8

我之前在发布apk时遇到过类似的问题,无法安装。如果勾选签名 v2,就会出现这种情况。

不幸的是,我不确定为什么会引起这样的问题!但是,如果你勾选了v2,请尝试取消勾选并仅使用v1(即jar签名)。


感谢@codeMagic为我们提供了有关这两种类型差异的STO帖子


1
我已经按照上述提到的方法解决了这个问题,通过仅应用v1签名并关闭v2签名来实现。此外,可以通过gradle构建文件设置v1SigningEnabledv2SigningEnabled的值来完成此操作,如下所示:
signingConfigs {
    staging {
        keyAlias *****
        keyPassword *****
        storeFile file(*****)
        storePassword *****
        v1SigningEnabled true
        v2SigningEnabled false
    }
    release {
        keyAlias *****
        keyPassword *****
        storeFile file(*****)
        storePassword *****
        v1SigningEnabled true
        v2SigningEnabled false
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接