升级React Native 0.73.6遇ManifestMerger解析错误求助
问题
将React Native SDK升级至0.73.6版本,已按照React Native Upgrade Helper修改对应文件,但执行以下命令时失败:
gradlew.bat app:installDebug -PreactNativeDevServerPort=8081
错误详情:退出码1,任务:app:processDebugMainManifest执行失败,抛出com.android.manifmerger.ManifestMerger2$MergeFailureException,提示解析D:\PROJECT\PROJECT_NAME\android\app\src\main\AndroidManifest.xml出错,可通过--stacktrace查看堆栈信息。
当前使用的AndroidManifest.xml代码如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" /> <application android:requestLegacyExternalStorage="true" android:usesCleartextTraffic="true" android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="false" android:theme="@style/AppTheme"> <!-- <meta-data android:name="com.dieam.reactnativepushnotification.notification_foreground" android:value="true"/> --> <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@mipmap/ic_notification" /> <activity android:name=".MainActivity" android:exported="true" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustPan" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
解决方案
1. 修复重复的属性声明
你的AndroidManifest.xml中<activity>标签重复声明了android:exported="true",这是XML语法错误,直接导致Manifest合并失败。同一XML元素的同一属性只能出现一次。
修改后的<activity>代码:
<activity android:name=".MainActivity" android:exported="true" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustPan"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
2. 后续排查(若修复后仍报错)
- 执行命令查看详细堆栈信息,定位具体错误点:
gradlew.bat app:installDebug -PreactNativeDevServerPort=8081 --stacktrace - 检查资源文件完整性:确认
@mipmap/ic_notification、@mipmap/ic_launcher等资源在android/app/src/main/res/mipmap-*目录下存在,缺失资源会导致Manifest解析失败。 - 清理项目后重新构建:
cd android && gradlew clean && cd .. && npx react-native run-android - 验证注释格式:确保XML注释没有语法错误(如未闭合的
-->)。
内容的提问来源于stack exchange,提问作者Lim Chin Feng
相关产品推荐
相关产品推荐

