React Native - gradle,清单合并错误

Gui*_*ret 9 android android-studio react-native expo

当尝试构建我的 Android React Native 应用程序时,我收到此错误

Execution failed for task ':app:processReleaseMainManifest'.
> Manifest merger failed : Attribute meta-data#org.unimodules.core.AppLoader#react-native-headless@value value=(org.unimodules.adapters.react.apploader.RNHeadlessAppLoader) from [:unimodules-react-native-adapter] AndroidManifest.xml:14:13-88
        is also present at [:expo-modules-core] AndroidManifest.xml:14:13-86 value=(expo.modules.adapters.react.apploader.RNHeadlessAppLoader).
        Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:12:9-14:91 to override.
Run Code Online (Sandbox Code Playgroud)

Rad*_*ekR 6

现在我知道就我而言,node_modules 文件夹中的两个清单文件之间存在冲突:

> cd <YOUR_PROJECT_DIR>/node_modules   
> grep -r -i RNHeadlessAppLoader | grep AndroidMan

./expo-modules-core/android/src/main/AndroidManifest.xml:
android:value="expo.modules.adapters.react.apploader.RNHeadlessAppLoader" />
   
./@unimodules/react-native-adapter/android/src/main/AndroidManifest.xml:   
android:value="org.unimodules.adapters.react.apploader.RNHeadlessAppLoader"/>
Run Code Online (Sandbox Code Playgroud)

解决方案

  • 将这样的xmlns:tools="http://schemas.android.com/tools"属性添加到<manifest>标签中<YOUR_PROJECT_DIR>/android/app/src/main/AndroidManifest.xml
  • application在清单文件的部分添加此类标签
<meta-data
tools:replace="android:value" 
android:name="org.unimodules.core.AppLoader#react-native-headless"
android:value="org.unimodules.adapters.react.apploader.RNHeadlessAppLoader"/>
Run Code Online (Sandbox Code Playgroud)