You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 17:27:08