React Native升级Android SDK 30至31遇INSTALL_PARSE_FAILED_MANIFEST_MALFORMED错误
解决INSTALL_PARSE_FAILED_MANIFEST_MALFORMED错误(React Native 0.59.9 + targetSdk 31)
1. 对齐编译与目标SDK版本
你的compileSdkVersion停留在28,但targetSdkVersion已升到31,这是核心问题——Android构建规则要求compileSdkVersion必须大于等于targetSdkVersion。修改gradle配置:
compileSdkVersion = 31 buildToolsVersion = "31.0.0" // 同步升级到对应版本 targetSdkVersion = 31
2. 适配Android 12的android:exported强制要求
Android 12(SDK31)规定所有四大组件(Activity、Service、Receiver、Provider)必须显式声明android:exported属性,取值为true或false。React Native 0.59.9的默认Manifest未包含该配置,需手动添加:
- 打开
android/app/src/main/AndroidManifest.xml - 给所有
<activity>、<service>、<receiver>标签补充属性:
示例(主Activity):
注意检查React Native自带的组件(如<activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenSize" android:windowSoftInputMode="adjustResize" android:exported="true"> <!-- 添加此行 --> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>DevSettingsActivity),也要补上该属性。
3. 清理构建缓存
修改配置后,清理旧缓存避免干扰:
cd android ./gradlew clean cd .. npx react-native run-android
额外建议(可选但重要)
React Native 0.59.9是2019年的旧版本,对Android 12的原生支持非常有限,即使解决当前错误,后续可能还会遇到更多兼容性问题。如果条件允许,建议升级到0.65+版本(该版本开始正式支持Android 12),升级时需注意:
- 将gradle插件版本升至4.2.0以上
- 完成support库到AndroidX的迁移
- 调整相关依赖版本匹配新的RN版本
内容的提问来源于stack exchange,提问作者mareesh waran
相关产品推荐
相关产品推荐

