Android 上的 React Native 有一些 C/C++ 代码被编译成 .so 文件。我如何构建这些 .so 文件?我认为这与 https://github.com/facebook/react-native/blob/master/ReactAndroid/src/main/jni/Application.mk 有关.
我尝试创建一个新的 React Native 项目并从项目根目录运行以下命令:
NDK_PROJECT_PATH=node_modules/react-native/ReactAndroid/src/main $ANDROID_HOME/ndk-bundle/ndk-build
但是我得到一个错误:
Android NDK: Your APP_BUILD_SCRIPT points to an unknown file: Android.mk
最佳答案
更新:有关更多官方说明,您可以按照 building from source 的 React Native 文档中的步骤进行操作。 .从源代码构建将运行 buildReactNdkLib构建这些 .so 文件的 Gradle 任务。
我想出了如何生成这些 .so 文件:
- 在 React Native 源代码中我找到了这个 build.gradle file有一个
buildReactNdkLib
任务。 我捕获了它运行的命令,在我的例子中是:
~/Library/Android/sdk/ndk-bundle/ndk-build NDK_PROJECT_PATH=null NDK_APPLICATION_MK=~/.../react-native/ReactAndroid/src/main/jni/Application.mk NDK_OUT=~/.../react-native/ReactAndroid/build/tmp/buildReactNdkLib NDK_LIBS_OUT=~/.../react-native/ReactAndroid/build/react-ndk/all THIRD_PARTY_NDK_DIR=~/.../react-native/ReactAndroid/build/third-party-ndk REACT_COMMON_DIR=~/.../react-native/ReactAndroid/../ReactCommon -C ~/.../react-native/ReactAndroid/src/main/jni/react/jni --jobs 4
将上面命令中的
~/.../react-native
替换为 react-native 存储库的路径。- 正如我收到的错误一样,
Android NDK: Module reactnativejni depends on undefined modules: fbjni
and~/Library/Android/sdk/ndk-bundle/toolchains/arm-linux- androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-g++:找不到命令
。为了解决这个问题,我不得不切换到旧版本的 NDK:- 从 here 下载并提取 Android NDK,修订版 10e(2015 年 5 月) .
- 将上述命令中的路径
~/Library/Android/sdk/ndk-bundle/ndk-build
更改为解压文件夹的ndk-build
文件。
- 生成的 .so 文件将在
react-native/ReactAndroid/build/react-ndk/all
中。
关于android - 如何生成 React Native Android jni 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47005026/