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

Flutter项目编译失败:已加android:exported仍报<receiver>错误

解决Flutter Android 12+编译失败:未显式指定android:exported属性问题

核心排查方向

这个报错的本质是Android 12(API 31)及以上要求所有包含的组件(、、)必须显式声明android:exported属性,你只给加了还报错,大概率是其他组件漏了:

  • 检查项目主AndroidManifest.xml里的所有:比如默认的MainActivity,只要它有(比如LAUNCHER入口),必须加android:exported="true"或者false,示例:
<activity
    android:name=".MainActivity"
    android:exported="true"
    android:launchMode="singleTop"
    android:theme="@style/LaunchTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>
  • 检查第三方插件的合并Manifest:很多Flutter插件会自带自己的AndroidManifest文件,编译时会和你的主Manifest合并,如果插件里的组件(比如某些service、receiver)带但没加android:exported,就会触发报错。解决方法是在主Manifest里显式声明这些组件并加上属性,比如:
<service
    android:name="com.example.plugin.SomeService"
    android:exported="false"
    tools:node="merge"/>

tools:node="merge"用来确保和插件的配置合并,不会覆盖其他必要属性。

确认版本配置

检查app/build.gradle里的版本配置是否正确指向Android 12+:

android {
    compileSdkVersion 33 // 至少31
    defaultConfig {
        targetSdkVersion 33 // 至少31
        // ...其他配置
    }
}

如果compileSdk或targetSdk低于31,即使加了exported也可能因为版本检测逻辑报错。

最后排查点

如果以上都做了还是报错,打开Android Studio的Merged Manifest视图(在AndroidManifest.xml编辑器底部),搜索所有带的组件,逐一检查是否都有android:exported属性,找到漏加的补上即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 20:12:05