TargetSDKVersion34下Android应用SecurityException崩溃问题求助
问题解决方法
崩溃根源
你的崩溃并非LocalBroadcastManager导致,而是旧版本的Google Play Core库(1.10.3)未适配Android 14(API 34)的广播接收器注册规则。Android 14要求所有动态注册的广播接收器必须显式指定RECEIVER_EXPORTED或RECEIVER_NOT_EXPORTED标记,而1.10.3版本的Play Core内部调用registerReceiver时未添加该标记,触发了SecurityException。
解决方案
1. 升级Google Play Core库到适配版本
将Play Core依赖升级到1.12.0及以上版本(该版本开始适配API 34的广播注册要求)。在项目的Module级别build.gradle中修改依赖:
implementation 'com.google.android.play:core:1.12.0' // 也可以直接使用最新稳定版,比如当前最新为1.12.3
2. (可选)替换过时的LocalBroadcastManager
虽然这不是当前崩溃的原因,但LocalBroadcastManager已被AndroidX标记为过时,推荐使用更现代的组件替代:
- 使用
LiveData/StateFlow实现组件内通信 - 使用EventBus等第三方事件总线库
- 自定义接口回调
验证步骤
- 同步Gradle依赖,清理并重建项目
- 重新运行应用,测试崩溃场景是否消失
内容的提问来源于stack exchange,提问作者sejn
相关产品推荐
相关产品推荐

