【问题标题】:Crashlytics crashing with Resources$NotFoundException on app launchCrashlytics 在应用启动时因 Resources$NotFoundException 而崩溃
【发布时间】:2019-05-15 09:37:02
【问题描述】:

我最近检查了我的 google play 崩溃,发现我有成千上万的用户遇到了这个崩溃,但 crashlytics 上没有:

java.lang.RuntimeException: 
  at android.app.ActivityThread.installProvider (ActivityThread.java:7110)
  at android.app.ActivityThread.installContentProviders (ActivityThread.java:6594)
  at android.app.ActivityThread.handleBindApplication (ActivityThread.java:6498)
  at android.app.ActivityThread.-wrap2 (Unknown Source)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1963)
  at android.os.Handler.dispatchMessage (Handler.java:108)
  at android.os.Looper.loop (Looper.java:166)
  at android.app.ActivityThread.main (ActivityThread.java:7425)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:245)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:921)
Caused by: android.content.res.Resources$NotFoundException: 
  at android.content.res.ResourcesImpl.getResourcePackageName (ResourcesImpl.java:325)
  at android.content.res.Resources.getResourcePackageName (Resources.java:2099)
  at io.fabric.sdk.android.services.common.CommonUtils.getResourcePackageName (CommonUtils.java:768)
  at io.fabric.sdk.android.services.common.CommonUtils.getResourcesIdentifier (CommonUtils.java:518)
  at io.fabric.sdk.android.services.common.CommonUtils.getBooleanResourceValue (CommonUtils.java:499)
  at io.fabric.sdk.android.services.common.FirebaseInfo.isFirebaseCrashlyticsEnabled (FirebaseInfo.java:56)
  at com.crashlytics.android.CrashlyticsInitProvider.shouldInitializeFabric (CrashlyticsInitProvider.java:85)
  at com.crashlytics.android.CrashlyticsInitProvider.onCreate (CrashlyticsInitProvider.java:25)
  at android.content.ContentProvider.attachInfo (ContentProvider.java:1919)
  at android.content.ContentProvider.attachInfo (ContentProvider.java:1894)
  at android.app.ActivityThread.installProvider (ActivityThread.java:7107)
  at android.app.ActivityThread.installContentProviders (ActivityThread.java:6594)
  at android.app.ActivityThread.handleBindApplication (ActivityThread.java:6498)
  at android.app.ActivityThread.-wrap2 (Unknown Source)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1963)
  at android.os.Handler.dispatchMessage (Handler.java:108)
  at android.os.Looper.loop (Looper.java:166)
  at android.app.ActivityThread.main (ActivityThread.java:7425)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:245)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:921)

stackoverflow 上的类似问题: Question 1 Question 2

我有一个关于 Fabric 支持的持续电子邮件线程,但他们认为发生这种情况的唯一原因是:

2018-12-09 14:39:09.899 [DEBUG] (Thread-6) com.crashlytics - Crashlytics 发现 ProjectName,一个缺少所需工件的模块:根目录:E:\DevelopmentEnvironment\Projects\ProjectName(Exists),Manifest : E:\DevelopmentEnvironment\Projects\ProjectName\AndroidManifest.xml(不存在),资源:E:\DevelopmentEnvironment\Projects\ProjectName\res(不存在),资产:E:\DevelopmentEnvironment\Projects\ProjectName\资产(不存在),数据:C:\Users\hvkro_000.crashlytics\com.crashlytics.tools\ProjectName-bec53d32b3aec63f870c6dd19f7186ae46e1e3a1(不存在),NDK_OUT:空(不存在),NDK_LIBS_OUT:空(不存在) 't Exist) , (Maven?false), (Gradle false), (Using any IML?true), (Using any Default?true) (Manifest-Found-In: root?false src/main?false) (Res- Found-In: root?false src/main?false) (Assets-Found-In: root?false src/main?false)

我们找不到您的清单。我相信这是问题所在。

我无法最终复制该问题,但正如您在下面看到的那样,相当多的用户正在发生这种情况。 我已经做了很长时间了,我无法弄清楚是什么导致了这个问题。 任何帮助将不胜感激。

【问题讨论】:

  • 粘贴代码
  • 它发生在应用程序启动时,我已经给出了堆栈跟踪,它不是来自我的应用程序内部,它是在初始化 crashlytics 时
  • 问题出在 API 8 级及以上设备上。
  • 你解决了吗?我们也面临这样的问题。创建应用程序时,它在 Fabric.with() 处崩溃。
  • 还没解决。别无选择,只能暂时忽略它。

标签: android firebase crashlytics google-fabric


【解决方案1】:

经过一个小的改动,我能够解决这个问题。 以前我是这样初始化 Fabric 的:

Fabric.with(this, new Crashlytics.Builder().core(crashlyticsCore).build());

然后我将其更新为如下所示:

final Crashlytics crashlytics = new Crashlytics.Builder().core(crashlyticsCore).build();
    final Fabric fabric = new Fabric.Builder(this)
            .kits(crashlytics)
            .debuggable(BuildConfig.DEBUG)
            .build();
    Fabric.with(fabric);

此更改为我解决了这个问题。 但是面料团队应该在我之前发现它,因为我已经与他们分享了我是如何初始化面料的。前面的代码是在他们的文档中如何使用fabric 来初始化的。他们至少应该弃用这种初始化方式。

【讨论】:

    【解决方案2】:

    对我来说,这发生在我迁移到 app bundle 之后。

    我无法重现它,但在分析 Crashlytics 日志历史记录后,我意识到它是在我转移到 app bundle 后开始发生的。所以我搬回了 apk,现在我不再遇到这些问题了。

    【讨论】:

    • 可能有些用户是从 3rd 方 APK 镜像站点安装您的应用,如果您使用的是 app bundle,生成的 APK 可能是 xxhdpi 设备的,所以如果用户有设备如果 DPI 比例较低,xhdpi 等资源将在该 APK 中不可用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多