android - 自更新 APK 时崩溃(组件类不存在)

标签 android android-manifest android-install-apk android-broadcastreceiver

我正在开发一个系统应用程序,它通过下载一个 apk 并使用 PackageManager 的 installPackage() 方法来更新它自己。

我收到以下异常:

Fatal Exception: java.lang.IllegalArgumentException: Component class com.myapp.package.receivers.SomeOldReceiver does not exist in com.myapp.package
           at android.os.Parcel.readException(Parcel.java:1544)
           at android.os.Parcel.readException(Parcel.java:1493)
           at android.content.pm.IPackageManager$Stub$Proxy.setComponentEnabledSetting(IPackageManager.java:3420)
           at android.app.ApplicationPackageManager.setComponentEnabledSetting(ApplicationPackageManager.java:1492)
           at com.myapp.package.utils.AndroidUtils.enableDisableComponent(SourceFile:113)
           at ...

更新后的 apk 中不存在“SomeOldReceiver”组件。

似乎执行了现有 APK 中的“旧”代码(调用了其应用程序的 onCreate()),试图访问更新后的 APK 中存在的"new" list ,但找不到“旧”接收器(这甚至可能吗?)。

我的应用程序还会监听 PACAKGE_ADDED 和 PACKAGE_REMOVED Intent 。

这种崩溃发生在相对较大比例的用户身上。

任何关于为什么会发生此错误以及如何修复它的建议或线索将不胜感激。

最佳答案

更新 APK 有多种方法。我不确定您使用的是哪一种。我遇到了类似的问题。这是因为应用程序在更新过程中有多个实例。您可以将应用程序设置为单个实例或只要确保没有旧实例在运行即可。我希望这会有所帮助。

关于android - 自更新 APK 时崩溃(组件类不存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35743983/

相关文章:

android - android源代码如何工作?

android - 无法使用 ontouchlistener 拖动自定义 ImageView

android - 应用程序意外停止,

android - 要么..要么 Android <uses-feature> list 中的区别

Android:正确的 Intent 过滤器指示我的应用程序可以打开文件类型?

android - 无法在小米 Redmi Note 4 上从 ADB 安装 Android APK

c# - Android c# 按钮重叠

java - 如何在我的 android 应用程序中修复 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED

android - 从内存安装 APK

android - 使用busybox在后台安装apk