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

Posted

技术标签:

【中文标题】使用路径“lib/arm64-v8a/libnode.so”找到 2 个文件 - nodejs-mobile-react-native 的 jniLibs 问题【英文标题】:2 files found with path 'lib/arm64-v8a/libnode.so' - Problem with jniLibs for nodejs-mobile-react-native 【发布时间】:2022-01-15 13:08:04 【问题描述】:

我一直在尝试让 nodejs-mobile-react-nativeandroid 上运行,但在尝试构建项目时出现以下错误:

> 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

我有这个项目的设置:

"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)

我在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'

【问题讨论】:

【参考方案1】:

我找到了解决办法。

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

/node_modules/nodejs-mobile-react-native/android/build.gradle

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

packagingOptions 
  pickFirst 'lib/armeabi-v7a/libnode.so'
  pickFirst 'lib/arm64-v8a/libnode.so'
  pickFirst 'lib/x86_64/libnode.so'
  pickFirst 'lib/x86/libnode.so'

lintOptions 的正上方并使用package.json 文件的postinstall 脚本调用该bash 脚本。

【讨论】:

能否请您提供如何实施后安装 1.创建一个添加这些行的 bash 脚本,比如说 scripts/android/init.sh 2. 在 package.json 中将其添加到 scripts 文件夹 "postinstall": ./scripts/android/init.sh 答案不干净 请显示代码和路径。 codes and path。那是什么意思?什么代码?您的意思是使用sed 命令修改bash 脚本中的build.gradle 文件吗?你可以谷歌一下。

以上是关于使用路径“lib/arm64-v8a/libnode.so”找到 2 个文件 - nodejs-mobile-react-native 的 jniLibs 问题的主要内容,如果未能解决你的问题,请参考以下文章

关于WEB-INF下的jsp,使用绝对路径如何访问?

Xcode - 使用相对路径而不是框架搜索路径的直接路径

什么相对路径?什么是绝对路径?

如何使用Python以跨平台方式检查路径是绝对路径还是相对路径?

Servlet路径的使用

使用cmd获取当前用户路径变量而不使用系统路径