React Native安卓应用目标API升至31后构建安装失败求助
解决React Native安卓API31+构建失败:INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
问题原因
Android API 31及以上要求所有带有intent filters的组件必须显式声明android:exported属性,而旧版OneSignal SDK的com.onesignal.GcmBroadcastReceiver组件未满足此要求,导致安装包解析失败。
解决方案
方案1:手动修改AndroidManifest.xml
在项目的android/app/src/main/AndroidManifest.xml中添加或修改该接收器的配置,显式设置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>
android:exported="true":该接收器需要接收Google推送的外部Intent,必须设为true;tools:node="merge":确保与OneSignal SDK自带的Manifest配置合并,避免冲突。
方案2:升级OneSignal SDK到适配API31的版本
旧版OneSignal SDK未适配API31的exported要求,升级到最新稳定版即可自动修复此问题:
- 在项目根目录的
package.json中更新react-native-onesignal版本(建议>=4.5.0及以上); - 执行
npm install或yarn install重新安装依赖; - 同步Android Gradle配置,重新构建项目。
方案3:通过Gradle配置自动注入属性
如果不想手动修改Manifest,可在android/app/build.gradle的defaultConfig中添加占位符,让Gradle自动处理:
android { defaultConfig { ... manifestPlaceholders = [ onesignal_exported: "true" ] } }
注:此方案需确保使用的OneSignal SDK版本支持该占位符配置。
内容的提问来源于stack exchange,提问作者Sajib saha
相关产品推荐
相关产品推荐

