上传Flutter应用至Google Play失败,因AndroidManifest文件报错
问题根源
你已经给主Activity配置了android:exported="true",但报错依旧,核心原因是你引入的第三方Flutter插件的AndroidManifest中,存在带intent filter却未设置android:exported的组件(Activity、Service、广播接收器等)。这些插件的配置会自动合并到你的最终Manifest文件里,导致Google Play检测到违规项。
排查与修复步骤
查看合并后的完整Manifest文件
编译应用后,去项目的build/app/intermediates/merged_manifests/目录下,找到对应构建变体(比如release版)的AndroidManifest.xml。打开后搜索所有带<intent-filter>标签的组件,逐个检查是否缺了android:exported属性。手动覆盖插件的组件配置
如果找到违规组件,直接在你的主AndroidManifest.xml里添加对应配置来补全android:exported。比如某个插件的Service有intent filter但没设导出属性,就加:<service android:name="com.example.plugin.SomeService" android:exported="false" /> <!-- 不需要对外暴露的组件设false,需要的话设true,根据组件用途判断 -->升级第三方插件到最新版
大部分主流插件已经适配了Android 12的要求,把pubspec.yaml里的插件版本更改为最新,执行flutter pub get拉取更新后,很多情况下问题会自动解决。升级Flutter SDK版本
确保你的Flutter SDK在2.10版本以上,旧版SDK的嵌入框架可能存在默认配置不兼容Android 12的情况,执行flutter upgrade即可完成升级。
内容的提问来源于stack exchange,提问作者Crispus3

