Flutter启动报错:需指定RECEIVER_EXPORTED或RECEIVER_NOT_EXPORTED
Flutter启动时抛出SecurityException问题解决
启动Flutter应用时触发SecurityException,报错日志如下:
E/GeneratedPluginRegistrant(14556): Error registering plugin share_plus, dev.fluttercommunity.plus.share.SharePlusPlugin
E/GeneratedPluginRegistrant(14556): java.lang.SecurityException: com.namp.zeon: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts
当前项目依赖中包含share_plus: ^4.5.3。
解决步骤
- 升级share_plus插件版本:该错误源于Android 12(API 31)及以上系统要求广播接收器必须指定
RECEIVER_EXPORTED或RECEIVER_NOT_EXPORTED属性,旧版本share_plus未适配此规则。将share_plus升级到5.0.0及以上稳定版本即可修复问题。
修改pubspec.yaml中的依赖配置:dependencies: share_plus: ^5.0.0 # 或更高版本 - 更新依赖:在项目根目录执行命令:
flutter pub get - 清理重建项目:若更新后仍有异常,执行以下命令清理缓存并重新构建:
flutter clean flutter pub get flutter run
备选方案(无法升级插件时)
如果暂时无法升级插件,可通过修改Android原生代码适配,但更推荐直接升级插件以避免兼容性问题:
- 打开项目
android/app/src/main/kotlin/[你的包名]/MainActivity.kt(或对应Java文件) - 在广播接收器注册逻辑中手动添加
RECEIVER_EXPORTED或RECEIVER_NOT_EXPORTED属性。
内容的提问来源于stack exchange,提问作者Ragul PR
相关产品推荐
相关产品推荐

