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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 23:04:57