修改AndroidManifest.xml后仍无法上传App Bundle至Google Play控制台
你手里的主AndroidManifest.xml已经给带intent filter的MainActivity正确设置了android:exported="true",但报错说明项目依赖的第三方插件(或库)的AndroidManifest.xml中,存在带intent filter的Activity、Service或Broadcast Receiver,却未配置android:exported属性。Flutter编译时会自动合并所有模块的Manifest文件,这些未合规的组件会被打包进最终的App Bundle,导致Google Play的兼容性检测失败。
1. 定位违规组件
执行以下命令生成合并后的完整Manifest文件,从中找出所有带intent filter但未设置android:exported的组件:
./gradlew app:mergeDebugAndroidManifest
生成的文件路径通常为app/build/intermediates/merged_manifests/debug/AndroidManifest.xml,打开后搜索<intent-filter>,逐一核对对应的组件(activity/service/receiver)是否包含android:exported属性。
2. 修复违规组件
方式一:升级依赖插件
优先检查违规组件所属的第三方插件是否有最新版本,多数老版本的推送、分享、Firebase类插件都已修复Android 12的兼容性问题,升级到最新版本即可自动补全android:exported配置。
方式二:手动在主Manifest中覆盖设置
如果暂时无法升级插件,可在你的主AndroidManifest.xml中针对违规组件添加android:exported属性进行覆盖。比如发现某插件的com.example.ThirdPartyActivity存在问题,可添加如下代码:
<activity android:name="com.example.ThirdPartyActivity" android:exported="true" <!-- 若组件无需对外暴露则设为false,根据实际用途判断 --> tools:node="merge" />
注意要在Manifest根标签中添加tools命名空间,否则tools:node会报错:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.myapp.usa">
3. 验证修复
重新编译生成App Bundle后再次上传,若仍报错则重复步骤1,确保所有带intent filter的组件都已配置android:exported属性。
内容的提问来源于stack exchange,提问作者Fire Base

