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

适配Android 12+添加android:exported仍报错的技术求助

解决Flutter targetSdkVersion 31构建错误:缺少android:exported属性

问题原因

Android 12及以上版本要求,所有带有<intent-filter>的组件(Activity、Service、BroadcastReceiver等)必须显式声明android:exported属性——不管是你自己代码里的组件,还是第三方插件自动引入的组件。你已经给MainActivity添加了该属性,但报错说明还有其他组件未处理。

解决步骤

1. 定位具体缺失属性的组件

方法一:用Android Studio查看合并后的Manifest

  • 打开项目的android/app/src/main/AndroidManifest.xml文件
  • 点击底部的Merged Manifest标签,查看所有合并后的完整清单(包含插件自动引入的组件)
  • 搜索所有带有<intent-filter>的组件,检查哪个没有android:exported属性

方法二:用命令行查看详细错误日志

在项目根目录执行:

cd android
./gradlew app:processReleaseManifest --stacktrace

日志会明确指出哪个组件缺少android:exported属性,直接定位问题。

2. 添加缺失的android:exported属性

根据找到的组件类型和功能需求,在自己的AndroidManifest.xml的<application>标签内声明该组件并添加属性:

  • 如果是应用入口类(带有MAIN/LAUNCHER intent-filter),设为android:exported="true"
  • 如果是仅内部使用的组件(比如插件的下载服务、通知接收器),设为android:exported="false"

举个例子,如果找到某插件的BroadcastReceiver缺失属性,添加如下代码:

<receiver
    android:name="com.example.plugin.SomeReceiver"
    android:exported="false">
    <intent-filter>
        <!-- 保留原有的intent-filter内容 -->
    </intent-filter>
</receiver>

3. 验证修复

重新执行构建命令:

flutter build appbundle

或者用Gradle命令:

cd android
./gradlew bundleRelease

针对你的情况的额外提示

从你提供的Manifest来看,flutter_downloader的Provider已经正确设置了android:exported="false",所以问题大概率来自其他第三方插件(比如推送、分享类插件等)引入的组件。按照上面的步骤定位后添加属性即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 09:02:15