【问题标题】:Android app crash with ResourceNotFoundExceptionAndroid 应用程序因 ResourceNotFoundException 而崩溃
【发布时间】:2017-10-16 09:40:49
【问题描述】:

我最近检查了我的 GP 崩溃日志,并且经常收到此调用堆栈。请你帮助我好吗。

一些事情:

  • failed to add asset path 有时显示/data/app/com.xxx.xxx.xxx-x/base.apk,有时显示/mnt/asec/com.xxx.xxx.xxx-x/base.apk
  • 设备的 android 版本(据报道)与 Android 4.4 不同。到 Android 7.0
  • 在 GP 控制台中,Android version 显示所有崩溃的 Android 7.0,但设备列表中的设备具有 Android version 6.0、5.0 等,不清楚。
  • 我有两个具有共享用户 ID 的应用程序,例如包名称为 P1、P2。对于 P1,failed to add asset path 有时会显示/data/app/P2,有时会显示/mnt/asec/P1。这不正确吗?是什么原因造成的?

调用堆栈:

java.lang.RuntimeException: Unable to create BackupAgent android.app.backup.FullBackupAgent: android.content.res.Resources$NotFoundException: failed to add asset path data/app/com.P2.xxx/base.apk
    at android.app.ActivityThread.handleCreateBackupAgent(ActivityThread.java:3452)
    at android.app.ActivityThread.-wrap5(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1796)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6688)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
Caused by: android.content.res.Resources$NotFoundException: failed to add asset path /data/app/com.P2.xxx/base.apk
    at android.app.ResourcesManager.createAssetManager(ResourcesManager.java:281)
    at android.app.ResourcesManager.createResourcesImpl(ResourcesManager.java:359)
    at android.app.ResourcesManager.getOrCreateResources(ResourcesManager.java:638)
    at android.app.ResourcesManager.getResources(ResourcesManager.java:730)
    at android.app.ActivityThread.getTopLevelResources(ActivityThread.java:2068)
    at android.app.LoadedApk.getResources(LoadedApk.java:780)
    at android.app.ContextImpl.<init>(ContextImpl.java:2244)
    at android.app.ContextImpl.createAppContext(ContextImpl.java:2184)
    at android.app.ContextImpl.createAppContext(ContextImpl.java:2175)
    at android.app.ActivityThread.handleCreateBackupAgent(ActivityThread.java:3422)

又一次崩溃:

android.content.res.Resources$NotFoundException: failed to add asset path /mnt/asec/com.P1.xxx/base.apk
    at android.app.ResourcesManager.createAssetManager(ResourcesManager.java:281)
    at android.app.ResourcesManager.createResourcesImpl(ResourcesManager.java:359)
    at android.app.ResourcesManager.getOrCreateResources(ResourcesManager.java:638)
    at android.app.ResourcesManager.getResources(ResourcesManager.java:730)
    at android.app.ActivityThread.getTopLevelResources(ActivityThread.java:2052)
    at android.app.LoadedApk.getResources(LoadedApk.java:787)
    at android.app.ContextImpl.<init>(ContextImpl.java:2266)
    at android.app.ContextImpl.createAppContext(ContextImpl.java:2210)
    at android.app.ContextImpl.createAppContext(ContextImpl.java:2196)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5861)
    at android.app.ActivityThread.-wrap3(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1710)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6776)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)

【问题讨论】:

  • 您的资产中有什么?请张贴您的清单。是否是特定设备引发了此异常?
  • Unable to create BackupAgent 提示用户可能正在尝试备份您的应用数据(您的清单可能有 allowBackup = true 并且您是否允许将您的应用安装在外部存储上?
  • 它在三星 Galaxy 6,7、Xperia 等多个设备上都可以看到。Allowbackup 对于主应用程序是错误的,但对于某些子模块是正确的,尽管在主应用程序清单中,tools:replace 覆盖了 allowBackup。所以它是假的。
  • 是的,它可以安装在外部存储中。
  • 我在查看“E/ResourcesManager(2375): failed to add assets path /data/app/-sHDd-VYemA3rocflBxq8QA==/base.apk”时遇到了困难,其中 sHDd-VYem ... 是 +a 最近卸载的 + .apk 的路径!没有外部存储,没有备份,什么都没有。清单就像泪珠一样清晰。

标签: android crash android-resources callstack


【解决方案1】:

请检查应用程序是否具有外部驱动器权限。 在我的情况下,当 ADB 将应用程序安装到屏幕锁定的设备时触发了这个问题,当设备唤醒时,同样的测试已经通过,所以即使这个应用程序可用的权限

【讨论】:

    【解决方案2】:

    我刚刚重新安装了该应用程序(没有卸载旧应用程序),它对我有用。

    【讨论】:

    • OP 正在谈论用户设备上发生崩溃的 Google Play 报告,他无法跟踪他们并强制在他们的手机上重新安装...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2019-12-26
    • 2012-05-28
    相关资源
    最近更新 更多