【问题标题】:React Native - gradle, manifest merge errorReact Native - gradle,清单合并错误
【发布时间】:2021-12-16 23:21:32
【问题描述】:

在尝试构建我的 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.

【问题讨论】:

    标签: android react-native android-studio expo


    【解决方案1】:

    现在我知道,在我的情况下,我在 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"/>
    

    解决方案

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

    【讨论】:

    • 你做了什么?使其捆绑
    • 还在解决:(
    • 也算我,有类似的错误。我正在尝试将我的 react 本机版本更新到最新版本并获得此
    • 这将正确解决合并冲突,我刚刚测试过。但是升级过程中还有其他构建错误
    • 它解决了错误,但它现在给出了不同的权限错误
    【解决方案2】:

    更新到上次博览会 SDK 似乎对我有用(版本 43)。因为他们用expo 替换了react-native-unimodules 包。

    【讨论】:

    • 是的,它对我有用。如果由于某种原因有人无法升级,请查看我的解决方案(上方或下方)
    【解决方案3】:

    我从 expo 42 更新到 expo 43 时遇到了这个问题(我已经退出但仍在使用一些 expo 模块)

    我卸载 react-native-unimodules 并备份我的 android 文件夹

    然后我运行expo prebuild(它以一些错误结束,但最终运行正常)

    它会生成新的android文件夹,然后我慢慢将它与旧的android文件夹进行比较,然后添加我需要的任何东西

    最后,我设法让它运行

    expo 43 似乎比 expo 42 快,所以我认为这是值得的问题

    【讨论】:

    • 我认为最好不要运行expo build并按照expo上写的步骤更新到SDK 43
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-04
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    相关资源
    最近更新 更多