APK无法安装
APK cannot install
我们的应用程序,曾经工作。最后一次更新是在 2 个半星期前发布的,当时 apk 文件已创建并正常运行。
最近 2 天,当我们尝试创建 apk(签名或未签名问题出现)时,Android Studio 没有抛出任何错误,但是当 apk 将要安装在 phone,应用安装失败,报错"App not Installed"
此外 Android 监视器中出现以下错误。
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
有没有人遇到过类似的问题?
提前致谢。
我之前在发布 apk 时遇到过类似的问题,我无法安装它,如果选中 signature v2 就会发生这种情况。
不幸的是,我不太确定为什么会导致这样的问题!无论如何,如果您选中了 v2,请尝试取消选中它并仅使用 v1(jar 签名)。
还要感谢 @codeMagic for providing us with 关于两种类型之间差异的 STO 线程。
我修复了上面提到的相同问题,通过仅应用 v1 签名并关闭 v2 签名,此外,这可以通过 gradle
构建文件通过 v1SigningEnabled
& [= 的设置值来完成13=] 如下:
signingConfigs {
staging {
keyAlias *****
keyPassword *****
storeFile file(*****)
storePassword *****
v1SigningEnabled true
v2SigningEnabled false
}
release {
keyAlias *****
keyPassword *****
storeFile file(*****)
storePassword *****
v1SigningEnabled true
v2SigningEnabled false
}
}
我们的应用程序,曾经工作。最后一次更新是在 2 个半星期前发布的,当时 apk 文件已创建并正常运行。
最近 2 天,当我们尝试创建 apk(签名或未签名问题出现)时,Android Studio 没有抛出任何错误,但是当 apk 将要安装在 phone,应用安装失败,报错"App not Installed"
此外 Android 监视器中出现以下错误。
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
有没有人遇到过类似的问题?
提前致谢。
我之前在发布 apk 时遇到过类似的问题,我无法安装它,如果选中 signature v2 就会发生这种情况。
不幸的是,我不太确定为什么会导致这样的问题!无论如何,如果您选中了 v2,请尝试取消选中它并仅使用 v1(jar 签名)。
还要感谢 @codeMagic for providing us with
我修复了上面提到的相同问题,通过仅应用 v1 签名并关闭 v2 签名,此外,这可以通过 gradle
构建文件通过 v1SigningEnabled
& [= 的设置值来完成13=] 如下:
signingConfigs {
staging {
keyAlias *****
keyPassword *****
storeFile file(*****)
storePassword *****
v1SigningEnabled true
v2SigningEnabled false
}
release {
keyAlias *****
keyPassword *****
storeFile file(*****)
storePassword *****
v1SigningEnabled true
v2SigningEnabled false
}
}