为何firebase-appcheck-debug-testing在SDK 31版本下编译失败?
解决依赖Firebase App Check的SDK 31应用构建问题
一、处理AndroidManifest.xml的android:exported错误
面向Android 12(SDK 31及以上)的应用,所有带有<intent-filter>的组件(Activity、Service、BroadcastReceiver)必须显式声明android:exported属性,取值为true或false,否则会触发清单合并错误。
解决步骤:
- 打开项目的
AndroidManifest.xml,逐一检查所有包含<intent-filter>的<activity>标签,补充android:exported属性:- 主Activity(带有
android.intent.action.MAIN和android.intent.category.LAUNCHER过滤器)设为android:exported="true",因为需要被系统Launcher启动; - 仅内部使用的Activity设为
android:exported="false"。
- 主Activity(带有
- 检查合并后的清单:通过Android Studio的
Merged Manifest标签查看最终生成的清单,找到依赖库(比如Firebase App Check调试库)中未指定android:exported的Activity,在自己的AndroidManifest.xml中覆盖该组件并补充属性。例如:<activity android:name="com.google.firebase.appcheck.debug.DebugActivity" android:exported="false" />
二、处理com.google.android.play.core.client包名冲突警告
这个警告是因为com.google.android.play:integrity:1.0.1和com.google.android.play:core:1.9.1两个库存在包名重叠,属于版本兼容问题。
解决方法:
- 升级
com.google.android.play:core到最新稳定版本:新版Play Core已拆分模块化,避免了包名冲突。在Module级别的build.gradle中更新依赖,例如:implementation 'com.google.android.play:core:1.10.3' implementation 'com.google.android.play:integrity:1.1.0' - 若不需要完整的Play Core库,可直接移除
com.google.android.play:core依赖,仅保留所需的子模块(比如integrity),因为子模块已包含必要的依赖内容。 - 执行
./gradlew clean build清理构建缓存后重新编译项目。
内容的提问来源于stack exchange,提问作者Adam Williams
相关产品推荐
相关产品推荐

