Проверка комплекта приложений Android на наличие пропущенных разделений вызывает "RuntimeException: менеджер пакетов умер" - PullRequest
1 голос
/ 30 мая 2019

Я следовал этому руководству , чтобы интегрировать проверку в мое приложение для предотвращения сбоев во время выполнения при использовании комплектов приложений Android (для отсутствующих ресурсов).

Я добавил следующий код в свой класс приложения в методе onCreate() перед супер вызовом:

if (MissingSplitsManagerFactory.create(this).disableAppIfMissingRequiredSplits()) {
    // Skip app initialization.
    return
}

Это работает без проблем на моем собственном тестовом устройстве. Однако, если я загружаю комплект приложений Android в Google Play, некоторые устройства в отчете перед запуском дают следующее исключение:

FATAL EXCEPTION: main
Process: com.example, PID: 25603
java.lang.RuntimeException: Unable to create application com.example.App: java.lang.RuntimeException: Package manager has died
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4858)
    at android.app.ActivityThread.access$1600(ActivityThread.java:163)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1423)
    at android.os.Handler.dispatchMessage(Handler.java:102)com.example
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5585)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
Caused by: java.lang.RuntimeException: Package manager has died
    at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:136)
    at Cfa.a(SourceFile)
    at com.example.App.onCreate(SourceFile:17)
    at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1014)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4855)
    ... 8 more
Caused by: android.os.DeadObjectException: Transaction failed on small parcel; remote process probably died
    at android.os.BinderProxy.transactNative(Native Method)
    at android.os.BinderProxy.transact(Binder.java:503)
    at android.content.pm.IPackageManager$Stub$Proxy.getPackageInfo(IPackageManager.java:2215)
    at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:131)
    ... 12 more

После некоторых поисков я обнаружил, что эта проблема связана не с библиотекой Play Core, а с менеджером пакетов Android. Похоже, что библиотека Play Core использует менеджер пакетов, чтобы проверить, нет ли разделений. Я не знаю, как решить эту проблему, поскольку это исключение находится за пределами моего кода, поэтому я был бы признателен за любую помощь в поиске решения.

...