我按照本指南将检查集成到我的应用程序中,以防止在使用 Android App Bundles 时在运行时崩溃(用于丢失资源)。
onCreate()
我在超级调用之前的方法中将以下代码添加到我的应用程序类中:
if (MissingSplitsManagerFactory.create(this).disableAppIfMissingRequiredSplits()) {
// Skip app initialization.
return
}
这在我自己的测试设备上没有问题。但是,如果我将 Android App Bundle 上传到 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 库使用包管理器来检查是否缺少拆分。我不知道如何解决此问题,因为此异常不在我的代码范围内,因此我将不胜感激找到解决方案的任何帮助。