升级targetSDK至31后,上传APK到Google Play Console遇android:exported错误
targetSDK 31升级后Google Play上传报错解决方案
问题根源
你已经按要求给Launcher Activity和部分组件设置了android:exported,但还有两个推送相关的Receiver组件没声明该属性——Android 12(targetSDK 31)强制要求所有组件(Activity、Service、Receiver)只要包含android:exported,哪怕是第三方库提供的组件。
看你的Manifest里这两个未配置的Receiver:
<receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationActions" /> <receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationPublisher" />
它们完全没设置android:exported,这就是上传失败的核心原因。
修复操作
1. 补全Receiver的exported属性
给这两个Receiver添加android:exported="false"(它们是内部推送处理组件,不需要对外暴露):
<receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationActions" android:exported="false" /> <receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationPublisher" android:exported="false" />
2. 匹配Build工具版本
你当前用的buildToolsVersion = "30.0.2"和compileSdkVersion 31不匹配,建议升级到31.0.0及以上,避免工具链兼容性问题:
ext { buildToolsVersion = "31.0.0" minSdkVersion = 21 compileSdkVersion = 31 targetSdkVersion = 31 googlePlayServicesAuthVersion = "16.0.1" ndkVersion = "21.4.7075529" }
3. 清理重建
执行./gradlew clean清理项目缓存,再重新构建签名APK/App Bundle,确保修改生效。
额外检查
- 打开Android Studio的Manifest Merged视图,查看最终合并后的清单文件,确认所有组件(包括第三方库自动注入的)都有明确的
android:exported属性。 - 把react-native-push-notification升级到最新稳定版,避免库本身存在未适配Android 12的问题。
内容的提问来源于stack exchange,提问作者Fred
相关产品推荐
相关产品推荐

