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
答案 0 :(得分:4)
更新:有关更多官方说明,您只需按照building from source的React Native文档中的步骤操作即可。从源代码构建将运行构建那些.so文件的buildReactNdkLib Gradle任务。
我想出了如何生成这些.so文件:
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 repo的路径。
Android NDK: Module reactnativejni depends on undefined modules: fbjni
和~/Library/Android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-g++: Command not found
等错误。要修复我必须切换到旧版本的NDK:
~/Library/Android/sdk/ndk-bundle/ndk-build
更改为解压缩文件夹的ndk-build
文件。react-native/ReactAndroid/build/react-ndk/all
。