Android 12及以下Release版本CoreComponentFactory与Preconditions异常解决
解决方案:Android 12及以下Release包混淆引发的运行时异常修复
问题根源
Debug包正常、关闭isMinifyEnabled后恢复正常,说明是代码混淆过程中误移除/混淆了必要的系统及第三方依赖类:
androidx.core.app.CoreComponentFactory被处理导致AppComponentFactory实例化失败com.google.android.gms.common.internal.Preconditions被处理导致Firebase初始化流程中断
具体修复步骤
1. 补充ProGuard保留规则
在proguard-rules.pro文件中添加以下规则,强制保留相关类不被混淆或移除:
# 保留AndroidX核心组件工厂类,解决AppComponentFactory实例化异常 -keep class androidx.core.app.CoreComponentFactory { *; } # 保留GMS核心校验类,解决FirebaseInitProvider初始化异常 -keep class com.google.android.gms.common.internal.Preconditions { *; } # 可选:追加Firebase初始化组件保留规则,避免其他潜在问题 -keep class com.google.firebase.provider.FirebaseInitProvider { *; } -keep class com.google.android.gms.** { *; }
2. 检查依赖配置正确性
- 确认
libs.versions.toml中androidx-core和firebase-bom(或单独Firebase依赖)的版本兼容Android 12及以下系统 - 确保
:app模块build.gradle中依赖引入无误,建议使用Firebase BOM统一管理版本,避免版本冲突:
implementation platform(libs.firebase.bom) implementation 'com.google.firebase:firebase-analytics' # 按需添加其他Firebase依赖
3. 适配R8混淆(Android Gradle Plugin 3.4+默认启用)
如果项目使用R8作为默认混淆工具,确保Gradle配置中正确加载自定义规则:
android { buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } }
验证方式
修改配置后重新构建Release包,在Android 12及以下设备上测试应用启动,确认两类运行时异常不再触发。
内容的提问来源于stack exchange,提问作者Pierre Vieira
相关产品推荐
相关产品推荐

