路径“lib/arm64-v8a/libnode.so”找到 2 个文件 - Nodejs-mobile-react-native 的 jniLibs 问题

Tho*_*mar 5 java-native-interface android gradle react-native

我一直在尝试nodejs-mobile-react-native在 Android 上工作,但当我尝试构建项目时出现以下错误:

> Task :nodejs-mobile-react-native:mergeDebugNativeLibs FAILED

Execution failed for task ':nodejs-mobile-react-native:mergeDebugNativeLibs'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.MergeNativeLibsTask$MergeNativeLibsTaskWorkAction
   > 2 files found with path 'lib/arm64-v8a/libnode.so' from inputs:
      - /Users/<me>/projects/react-native/<my project>/node_modules/nodejs-mobile-react-native/android/build/intermediates/merged_jni_libs/debug/out/arm64-v8a/libnode.so
      - /Users/<me>/Projects/react-native/<my project>/node_modules/nodejs-mobile-react-native/android/build/intermediates/cxx/Debug/4a1j5e35/obj/arm64-v8a/libnode.so
     If you are using jniLibs and CMake IMPORTED targets, see
     https://developer.android.com/r/tools/jniLibs-vs-imported-targets
Run Code Online (Sandbox Code Playgroud)

我对该项目有这样的设置:

"react": "^17.0.2",
"react-native": "^0.66.3",
"nodejs-mobile-react-native": "^0.6.3",

Gradle version 7.0.2
Java version 11
NDK version 21.4.7075529
CMake version 3.18.1
Android SDK Platform 31 (12)
Run Code Online (Sandbox Code Playgroud)

我在我的系统中尝试了这些设置(或没有),app/build.gradle但它不起作用

packagingOptions {
  pickFirst 'lib/armeabi-v7a/libnode.so'
  pickFirst 'lib/arm64-v8a/libnode.so'
  pickFirst 'lib/x86/libnode.so'
  pickFirst 'lib/x86_64/libnode.so'
}
Run Code Online (Sandbox Code Playgroud)

Tho*_*mar 3

我找到了解决方案。

问题是packagingOptions必须将其应用于此处的nodejs-mobile-react-native项目的gradle文件

/node_modules/nodejs-mobile-react-native/android/build.gradle
Run Code Online (Sandbox Code Playgroud)

为了自动执行此操作,我必须创建一个 bash 脚本来添加这些行

/node_modules/nodejs-mobile-react-native/android/build.gradle
Run Code Online (Sandbox Code Playgroud)

就在上面,并使用该文件的脚本lintOptions调用该 bash 脚本。postinstallpackage.json