API 34接收器导出报错:需指定RECEIVER_EXPORTED或RECEIVER_NOT_EXPORTED
解决com.google.android.play:core:1.10.3广播接收器EXPORTED属性错误
方案1:升级Play Core库版本
这是最彻底的解决方式。Google在com.google.android.play:core:1.10.4及后续版本中,已经修复了Manifest内广播接收器未声明android:exported属性的问题。直接修改项目Module级别build.gradle中的依赖:
implementation 'com.google.android.play:core:1.10.4' // 或直接使用最新稳定版,比如: // implementation 'com.google.android.play:core:1.12.0'
同步项目后,错误会自动消失。
方案2:手动在Manifest中覆盖接收器属性
如果暂时无法升级库,可在自己的AndroidManifest.xml中重新声明Play Core库内的广播接收器,强制添加android:exported属性,并通过tools:replace覆盖库中的原有设置。以InstallReferrerReceiver为例:
<receiver android:name="com.google.android.play.core.install.InstallReferrerReceiver" android:exported="true" tools:replace="android:exported"> <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER" /> </intent-filter> </receiver>
注意:
- 需确认接收器的完整类名(可通过查看Play Core库的Manifest文件确认所有相关接收器)
- 根据接收器用途设置
android:exported:接收系统广播(如INSTALL_REFERRER)设为true,仅应用内通信设为false
方案3:临时降低targetSdkVersion(不推荐)
如果你的App当前targetSdkVersion设为31(Android 12)及以上,可临时将其降至30,避开Android 12对广播接收器的exported属性强制要求。但这只是临时应急方案,长期来看仍需适配高版本系统,不建议作为最终解决办法。
内容的提问来源于stack exchange,提问作者burhanyaprak
相关产品推荐
相关产品推荐

