Android库模块(子项目)中Firebase Crashlytics无法正常工作
解决库模块Firebase Crashlytics无法工作的方案
我之前也碰到过一模一样的问题!主应用模块的Crashlytics跑得顺风顺水,控制台能正常收到崩溃报告,但库模块里的崩溃就是死活不上报,试了老Fabric那套方案完全没用,后来终于摸清楚Firebase版本的正确配置逻辑了,给你整理几个关键步骤:
确保所有模块都正确引入Crashlytics依赖与插件
别只在主模块配置!每个库模块的模块级build.gradle里都要做这两步:- 顶部应用Crashlytics相关插件:
plugins { id 'com.android.library' id 'com.google.gms.google-services' id 'com.google.firebase.crashlytics' }- 添加Crashlytics依赖(建议用最新版本号):
implementation 'com.google.firebase:firebase-crashlytics:29.0.0'用主应用上下文初始化库模块的Crashlytics
库模块不能用自身的上下文做初始化,必须拿到主应用的ApplicationContext。可以在库模块里写一个初始化工具类,让主模块在启动时调用:// 库模块中的初始化工具类 public class LibraryCrashlyticsHelper { public static void init(Context appContext) { FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance(); crashlytics.setCrashlyticsCollectionEnabled(true); // 这里可以按需添加自定义用户标识、日志等 } }然后在主应用的
Application类的onCreate方法里触发初始化:@Override public void onCreate() { super.onCreate(); LibraryCrashlyticsHelper.init(getApplicationContext()); }检查混淆规则(开启R8/ProGuard时必做)
每个库模块的proguard-rules.pro都要加上Crashlytics的混淆保护规则,避免核心代码被误删:-keep class com.google.firebase.crashlytics.** { *; } -keepattributes *Annotation* -keepattributes SourceFile,LineNumberTable -dontwarn com.google.firebase.crashlytics.**主模块的混淆规则也要包含这些内容,确保全局生效。
验证崩溃上报是否生效
可以在库模块里写个测试崩溃的方法,手动触发验证:public void triggerLibraryCrash() { throw new RuntimeException("测试:来自库模块的崩溃"); }调用后重启应用(Crashlytics需要重启后上报),等个3-5分钟再去Firebase控制台查看,应该就能看到这条崩溃记录了。
要注意的是,Firebase版本的Crashlytics不需要给库模块单独配置API密钥或配置文件,所有模块共享主应用的google-services.json,只要插件、依赖和上下文初始化这几点做对,问题基本就能解决。
内容的提问来源于stack exchange,提问作者Alexandar
相关产品推荐
相关产品推荐

