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
相关产品推荐
相关产品推荐

