Я работаю над системным приложением, которое обновляет его, загружая 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 ...
Компонент "SomeOldReceiver" не существует в обновленном apk.
Кажется, что выполняется "старый" код из существующего APK (вызывается его приложение onCreate()), пытающееся получить доступ к "новому" манифесту, который существует в обновленном APK, и не может найти "старый" приемник (возможно ли это?).
Мое приложение также прослушивает PACAKGE_ADDED и PACKAGE_REMOVED намерения.
Этот сбой происходит на относительно большом проценте пользователей.
Любое предложение или подсказка о том, почему эта ошибка происходит и как ее исправить, будет очень признательна.