升级Crashlytics至2.9.1后启动遇Resources$NotFoundException崩溃求助
我之前也碰到过类似的Crashlytics升级后在初始化前触发崩溃的情况,结合你提供的ActivityThread.installProvider栈信息,大概率是组件配置冲突或者依赖兼容性问题导致的,下面给你整理几个实用的排查和解决方向:
检查Manifest中ContentProvider的冲突
Crashlytics 2.9.1对内置的CrashlyticsInitProvider做了调整,很可能和其他依赖库的Provider出现了authorities冲突,或者你自己的Manifest里重复声明了这个组件。
你可以尝试在Manifest中显式声明该Provider,并通过tools:replace解决冲突:<provider android:name="com.crashlytics.android.CrashlyticsInitProvider" android:authorities="${applicationId}.crashlyticsinitprovider" android:exported="false" android:initOrder="100" tools:replace="android:authorities" />记得要确保
tools命名空间已经在Manifest根节点声明:xmlns:tools="http://schemas.android.com/tools"同步升级相关依赖插件
Crashlytics的SDK版本需要和Fabric Gradle插件版本匹配,2.9.1对应的插件建议升级到1.28.1版本,在项目根目录的build.gradle里调整:buildscript { dependencies { classpath 'io.fabric.tools:gradle:1.28.1' } }另外如果你的项目整合了Firebase,要确保Firebase相关依赖版本和Crashlytics对齐,避免版本不一致导致的初始化异常。
切换为手动初始化Crashlytics
既然崩溃发生在自动初始化阶段,你可以先禁用自动初始化,改为在Application的onCreate里手动触发:- 在Manifest中添加meta-data关闭自动初始化:
<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" /> - 在Application类的
onCreate方法中尽早初始化:@Override public void onCreate() { super.onCreate(); // 旧版Fabric初始化方式 Fabric.with(this, new Crashlytics()); // 如果是Firebase整合版 FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true); }
- 在Manifest中添加meta-data关闭自动初始化:
更新ProGuard/R8规则
新版本Crashlytics可能需要额外的混淆规则,避免核心类被误删导致初始化失败,确保你的ProGuard文件里包含:-keep class com.crashlytics.** { *; } -keep class com.google.firebase.crashlytics.** { *; } -keepattributes SourceFile,LineNumberTable
如果上面的方法都没解决,建议你查看Play Console里崩溃的完整栈信息(尤其是Caused By部分),或者在本地用相同系统版本的设备复现,通过Android Studio的Logcat查看安装过程中的详细错误日志,这样能更精准定位问题。
内容的提问来源于stack exchange,提问作者user726916

