执行com.android.build.gradle.internal.tasks时发生错误,合并本机图书库任务$合并本机图书库任务工作操作

up9lanfz  于 2022-11-14  发布在  Android
关注(0)|答案(8)|浏览(352)

由于以下错误,我的react原生项目构建不知何故失败:

Execution failed for task ':app:mergeDebugNativeLibs'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.MergeNativeLibsTask$MergeNativeLibsTaskWorkAction
   > 2 files found with path 'lib/arm64-v8a/libfbjni.so' from inputs:
      - C:\Users\Antonio\.gradle\caches\transforms-3\7cca348744e25f57fc2d9f871aa73c9a\transformed\jetified-react-native-0.71.0-rc.0-debug\jni\arm64-v8a\libfbjni.so
      - C:\Users\Antonio\.gradle\caches\transforms-3\08b0f5c7017bf081f79b63ea5b053dc0\transformed\jetified-fbjni-0.3.0\jni\arm64-v8a\libfbjni.so
     If you are using jniLibs and CMake IMPORTED targets, see
     https://developer.android.com/r/tools/jniLibs-vs-imported-targets

有人知道什么可能导致构建失败吗?我还没有编辑任何构建文件和/或删除/安装/升级新的包,谢谢

vojdkbi0

vojdkbi01#

答案取决于您的react native的版本。
https://github.com/facebook/react-native/issues/35210
小贴士:

  • 不要只更新react-native软件包,请执行npm安装
  • 在运行应用程序之前清理gradle
  • 仅当您的react原生版本〈0.63时,才添加以下代码
def REACT_NATIVE_VERSION = new File(['node', '--print',"JSON.parse(require('fs').readFileSync(require.resolve('react-native/package.json'), 'utf-8')).version"].execute(null, rootDir).text.trim())

allprojects {
    configurations.all {
        resolutionStrategy {
            // Remove this override in 0.65+, as a proper fix is included in react-native itself.
            force "com.facebook.react:react-native:" + REACT_NATIVE_VERSION
        }
    }
}
xsuvu9jc

xsuvu9jc2#

这是官方推荐的修复程序!
通过此问题发现:https://github.com/facebook/react-native/issues/35210
this PR here复制
对于我的RN 0.66.0项目,我只需添加以下行:

allprojects {
    repositories {
        exclusiveContent {
            // Official recommended fix for Android build problem with React Native versions below 0.71
            // https://github.com/facebook/react-native/issues/35210
            // TODO: remove this exclusiveContent section when we upgrade to React Native 0.71 (or above)
            // copied from https://github.com/Scottish-Tech-Army/Volunteer-app/pull/101/commits/40a30310ee46194efbaf1c07aef8a0df70231eeb
            filter {
                includeGroup "com.facebook.react"
            }
            forRepository {
                maven {
                    url "$rootDir/../node_modules/react-native/android"
                }
            }
        }
    }
}
smdnsysy

smdnsysy3#

对我来说,这是有效的(在阅读了Tony的链接后),我的react版本是0.66.0
已更改此文件android\app\build.gradle

implementation "com.facebook.react:react-native:+"  // From node_modules

implementation "com.facebook.react:react-native:0.66.0!!"  // From node_modules
u4dcyp6a

u4dcyp6a4#

简短回答:
在您的android/app/build.gradle中创建一个新的应用程序
变更
implementation 'com.facebook.react:react-native:+'
to ---〉(将0.67.2替换为当前React原生版本)
implementation 'com.facebook.react:react-native:0.67.2!!'
长答:
发生这种情况是因为所有模板都按范围引用React Native依赖项,如implementation 'com.facebook.react:react-native:+'。通常,此依赖项从./node_modules/react-native/android中的本地Maven存储库中解析,但由于它已发布到Maven Central,因此它现在获取最新的RC。
您可以通过在应用的Gradle文件中使用类似implementation 'com.facebook.react:react-native:0.67.2!!'的内容将React Native依赖项强制设置为您期望的版本来解决此问题。如果您的项目或其可传递依赖项依赖于较新的版本,则!!是限制Gradle升级的简写。

yrdbyhpb

yrdbyhpb5#

对我来说,如果你的React原生应用程序版本〉= 0.63,你可以更新补丁版本,这应该解决你的问题。
链接:https://github.com/facebook/react-native/issues/35210#:~:text=We%20have%20prepared%20releases%20for%20all%20the%20main%20versions%20of%20react%2Dnative%20with%20an%20hotfix%3A
如果没有,请转到android/build.gradle,然后在allprojects对象中添加以下代码,其中包含package.json中react native的当前版本

configurations.all {
 resolutionStrategy {
  force 'com.facebook.react:react-native:CURRENT_VERSION_OF_REACT_NATIVE'
 }
}
e7arh2l6

e7arh2l66#

如果您使用的不是最新版本的react-native. https://github.com/facebook/react-native/issues/35210,以下是解决此问题的解决方法

2guxujil

2guxujil7#

我也遇到了同样的问题。现在有一个新的react-native补丁,所以在你的package.json中更新它。
我的是

"react-native": "^0.70.3"

我把它改成了

"react-native": "^0.70.5"

这对我很有效

kninwzqo

kninwzqo8#

转到android文件夹-〉build.gradle文件-〉在allprojects对象中并 * 添加以下代码 *。从node_modules -〉react-native -〉package.json//“版本”中添加react原生版本:“0.68.2”。

configurations.all {
    resolutionStrategy {
        force 'com.facebook.react:react-native:0.68.2'
    }
}

参见FB/rn#35204

相关问题