Google Play Console上传APK报错:未设置android:exported属性
解决Android 12及以上版本安装包上传失败的OneSignal组件问题
上传APK或Android App Bundle至Google Play Console时失败,报错提示:您上传的安装包存在带intent filter但未设置android:exported属性的activity、activity alias、service或broadcast receiver,无法在Android 12及以上版本安装。清单合并检测到以下三个OneSignal组件未显式指定android:exported属性:
com.onesignal.GcmBroadcastReceivercom.onesignal.BootUpReceivercom.onesignal.UpgradeReceiver
解决方案
方法1:升级OneSignal SDK到适配版本
OneSignal的新版本已针对Android 12要求做适配,会自动为相关组件添加android:exported属性。直接在项目Module级别的build.gradle中更新OneSignal依赖到最新稳定版即可,无需手动修改清单文件。
方法2:手动在AndroidManifest.xml中声明组件
若暂时无法升级SDK,可在自身AndroidManifest.xml的<application>标签内,显式声明这三个广播接收器并指定android:exported属性。由于这些接收器需要接收系统或OneSignal的外部广播,设置android:exported="true",同时添加tools:node="merge"确保清单合并时不冲突。
添加代码示例:
<!-- 手动声明OneSignal广播接收器,补充android:exported属性 --> <receiver android:name="com.onesignal.GcmBroadcastReceiver" android:exported="true" tools:node="merge"> <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> </intent-filter> </receiver> <receiver android:name="com.onesignal.BootUpReceiver" android:exported="true" tools:node="merge"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.MY_PACKAGE_REPLACED" /> </intent-filter> </receiver> <receiver android:name="com.onesignal.UpgradeReceiver" android:exported="true" tools:node="merge"> <intent-filter> <action android:name="android.intent.action.MY_PACKAGE_REPLACED" /> </intent-filter> </receiver>
添加后重新构建安装包,即可满足Google Play Console的Android 12+适配要求。
内容的提问来源于stack exchange,提问作者Mwanajamii Services
相关产品推荐
相关产品推荐

