无法运行“任何”反应原生示例项目

问题描述:

我想在Ubuntu 14.04上运行UIExplorer项目。 我已经安装了SDK和NDK。 我能够运行通常的反应原生项目(我创建的项目),但不是Examples from Official Repo无法运行“任何”反应原生示例项目

export ANDROID_NDK=/home/bozzmob/android-ndk-r10e/ 

我收到以下错误 -

执行失败的任务 ':ReactAndroid:buildReactNdkLib'。

进程 '命令 '/家/ bozzmob /机器人-NDK-r10e/NDK建造'' 具有非零退出值完成2

日志看喜欢 -

[email protected]:~/ReactJS/native/react-native# ./gradlew :Examples:UIExplorer:android:app:installDebug 
. 
. 
. 
:ReactAndroid:buildReactNdkLib 
make: Entering directory `/home/bozzmob/ReactJS/native/react-native/ReactAndroid/src/main/jni/react/jni' 
[armeabi-v7a] Compile++ thumb: reactnativejni <= OnLoad.cpp 
[armeabi-v7a] SharedLibrary : libfb.so 
[armeabi-v7a] SharedLibrary : libglog.so 
[armeabi-v7a] StaticLibrary : libdouble-conversion.a 
BFD: /home/bozzmob/android-ndk-r10e/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/../libexec/gcc/arm-linux-> androideabi/4.8/liblto_plugin.so: file too short 

BFD: /home/bozzmob/android-ndk-r10e/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/../libexec/gcc/arm-linux-androideabi/4.8/liblto_plugin.so: file too short 

BFD: /home/bozzmob/android-ndk-r10e/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/../libexec/gcc/arm-linux-androideabi/4.8/liblto_plugin.so: file too short 

BFD: /home/bozzmob/android-ndk-r10e/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/../libexec/gcc/arm-linux-androideabi/4.8/liblto_plugin.so: file too short 

BFD: /home/bozzmob/android-ndk-r10e/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/../libexec/gcc/arm-linux-androideabi/4.8/liblto_plugin.so: file too short 

BFD: /home/bozzmob/android-ndk-r10e/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/../libexec/gcc/arm-linux-androideabi/4.8/liblto_plugin.so: file too short 

BFD: /home/bozzmob/android-ndk-r10e/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/../libexec/gcc/arm-linux-androideabi/4.8/liblto_plugin.so: file too short 

BFD: /home/bozzmob/android-ndk-r10e/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/../libexec/gcc/arm-linux-androideabi/4.8/liblto_plugin.so: file too short 

[armeabi-v7a] Prebuilt : libjsc.so <= /home/bozzmob/ReactJS/native/react-native/ReactAndroid/build/third-party-ndk/jsc/jni/armeabi-v7a/ 
[armeabi-v7a] Compile++ thumb: reactnative <= Bridge.cpp 
[armeabi-v7a] Compile++ thumb: reactnative <= Value.cpp 
[armeabi-v7a] Compile++ thumb: reactnative <= JSCHelpers.cpp 
[armeabi-v7a] Compile++ thumb: reactnative <= JSCExecutor.cpp 
[armeabi-v7a] Install : libjsc.so => /home/bozzmob/ReactJS/native/react-native/ReactAndroid/build/react-ndk/all/armeabi-v7a/libjsc.so 
[armeabi-v7a] Install : libgnustl_shared.so => /home/bozzmob/ReactJS/native/react-native/ReactAndroid/build/react-ndk/all/armeabi-v7a/libgnustl_shared.so 
make: *** [/home/bozzmob/ReactJS/native/react-native/ReactAndroid/build/react-ndk/all/armeabi-v7a/libgnustl_shared.so] Error 1 
make: *** Deleting file /home/bozzmob/ReactJS/native/react-native/ReactAndroid/build/react-ndk/all/armeabi-v7a/libgnustl_shared.so' make: *** Waiting for unfinished jobs.... make: Leaving directory/home/bozzmob/ReactJS/native/react-native/ReactAndroid/src/main/jni/react/jni' 
:ReactAndroid:buildReactNdkLib FAILED 

FAILURE: Build failed with an exception. 

    What went wrong: 
    Execution failed for task ':ReactAndroid:buildReactNdkLib'. 

     Process 'command '/home/bozzmob/android-ndk-r10e/ndk-build'' finished with non-zero exit value 2 

    Try: 
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. 

BUILD FAILED 

Total time: 1 mins 34.069 secs 

请让我知道我在做什么错了?

好像你在编译react-native android的本地(C++)源时遇到问题。为了开始新的项目,您不应该被要求这样做(不需要NDK设置),因此您可以尝试使用react-native init(请参阅this获取说明)创建示例项目。之后,您可以将示例应用JS文件复制到新创建的项目中。

如果你仍然想从源代码构建框架代码,我需要一些更多的细节来帮助你。我建议为ndk-build启用详细模式,然后你可以回到这里输出。为了使冗长模式你需要修改这个文件:ReactAndroid/build.gradle,并添加'V=1'成参数,让我联系到的代码片段看起来是这样的:

commandLine getNdkBuildFullPath(), 
     'NDK_PROJECT_PATH=null', 
     'V=1', 
     "NDK_APPLICATION_MK=$projectDir/src/main/jni/Application.mk", 
     'NDK_OUT=' + temporaryDir, 
+0

非常感谢您的回复。我做了你说的即'V = 1',这里是我的输出日志 - https://gist.github.com/bozzmob/3cec8388bc7d75895160或http://pastebin.com/VesSeBts – bozzmob

+0

我也尝试创建一个新的项目和复制文件并尝试运行。它不幸的工作不好。它不运行并抛出相同的错误。但是,如果项目被创建并且我在那里编写我的代码,它就可以正常工作。 – bozzmob

+1

所以看起来像ndk-build正在做werid,而不是将'libgnustl_shared.so'正确地复制到'react-native/ReactAndroid/build/tmp/buildReactNdkLib/local/armeabi-v7a/libgnustl_shared.so'你可以尝试手动?你应该在你的android ndk分发文件夹下找到'./sources/cxx-stl/gnu-libstdC++/4.8/libs/armeabi-v7a/thumb/libgnustl_shared.so' – kzzzf

我也遇到同样的生成错误并从找到的解决方案这post。您必须使用Android NDK r10e而不是最新的(r11)。