You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

旧Flutter 1.22.6项目上传App Bundle至Google Play遇android:exported报错

问题原因及解决方案

你的问题并非出自自己编写的AndroidManifest.xml,而是第三方Flutter插件的清单配置——这些插件自带的AndroidManifest.xml中,可能包含带intent-filter的Activity、Service或Broadcast Receiver,但没有设置android:exported属性。Flutter 1.22.6是2020年的旧版本,当时的插件生态还未适配Android 12(targetSDK 31)的强制要求,导致合并后的最终Manifest里出现不符合要求的组件,触发Google Play的报错。

排查步骤

  1. 查看合并后的完整Manifest:
    • 用Android Studio打开项目的android目录,执行Build > Analyze APK,选择你生成的App Bundle(.aab文件),找到base/manifest/AndroidManifest.xml,这里会显示所有合并后的组件(包括插件带来的)。
    • 或者在终端执行命令:
      # macOS/Linux
      ./gradlew app:mergeDebugAndroidManifest
      # Windows
      gradlew.bat app:mergeDebugAndroidManifest
      
      之后查看app/build/intermediates/merged_manifests/debug/AndroidManifest.xml文件,找到所有带intent-filter但缺失android:exported的组件。

解决方法

1. 升级第三方插件

优先检查你使用的插件(比如UCrop相关插件、定位插件等)是否有适配Android 12的新版本,升级到最新版后,插件一般会自动补上android:exported属性。

2. 手动覆盖插件的组件配置

如果插件没有新版本,在你的主AndroidManifest.xml中重新声明有问题的组件,显式添加android:exported属性。比如某个插件的Service不符合要求,可添加:

<service
    android:name="com.example.plugin.SomeProblemService"
    android:exported="false" /> <!-- 根据组件用途设置true/false:允许外部调用则设为true,否则false -->

3. 升级Flutter版本

Flutter 1.22.6过于老旧,后续版本(如2.10及以上)已经对Android 12的适配做了全面优化,插件生态也更完善,能从根源减少这类兼容性问题。不过升级Flutter需要注意处理null safety、API变更等兼容性问题,建议先做好代码备份。

内容的提问来源于stack exchange,提问作者Promina Test

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 22:39:59