【问题标题】:Native Code Build Fails in Android StudioAndroid Studio 中的原生代码构建失败
【发布时间】:2017-06-30 18:32:23
【问题描述】:

我没有将原生库集成到项目中的经验,也找不到出现以下错误的原因(如下所示)

JniJsEngine.cpp 和其他 cpp 文件存在于 jni 文件夹中。

(给出错误的前几行)

Error:Gradle: 
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':libadblockplus-
android:externalNativeBuildRelease'.
> Build command failed.
Error while executing process C:\androiddev\android-ndk-r15b\ndk-build.cmd 
with arguments {NDK_PROJECT_PATH=null 
APP_BUILD_SCRIPT=C:\abcd\libadblockplus-android\jni\Android.mk 
NDK_APPLICATION_MK=C:\abcd\libadblockplus-android\jni\Application.mk 
APP_ABI=x86 NDK_ALL_ABIS=x86 NDK_DEBUG=0 APP_PLATFORM=android-9 
NDK_OUT=C:/abcd/libadblockplus-android/build/intermediates/ndkBuild/release/obj 
NDK_LIBS_OUT=C:\abcd\libadblockplus-
android\build\intermediates\ndkBuild\release\lib 
C:/abcd/libadblockplus-
android/build/intermediates/ndkBuild/release/obj/local/x86/libadblockplus-
jni.so}
Android NDK: android-9 is unsupported. Using minimum supported version 
android-14.    
[x86] SharedLibrary  : libadblockplus-jni.so
C:/abcd/libadblockplus-android/jni/JniJsEngine.cpp:222: error: 
undefined reference to 
'AdblockPlus::JsEngine::NewValue(std::__ndk1::basic_string<char, 
std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&)'
C:/abcd/libadblockplus-android/jni/JniJsEngine.cpp:186: error: 
undefined reference 'AdblockPlus::JsEngine::SetWebRequest(std::__ndk1::shared_ptr<AdblockPlus::WebR
equest>)'
C:/abcd/libadblockplus-android/jni/JniJsEngine.cpp:90: error: undefined 
reference to 
'AdblockPlus::JsEngine::Evaluate(std::__ndk1::basic_string<char, 
std::__ndk1::char_traits<char>, 
std::__ndk1::allocator<char> > const&, std::__ndk1::basic_string<char, 
std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&)'
...
...
...

【问题讨论】:

  • 很可能,您的 Android.mk 模块 adblockplus-jni 没有链接包含 JsEngine的静态库> 类。如果您发布您的项目结构和Android.mk,它会更容易帮助您。

标签: android android-studio android-ndk java-native-interface


【解决方案1】:

第一个错误 - NDK_PROJECT_PATH=null - 告诉您您的 gradle 找不到项目的根目录,因此无法正确编译。您需要设置根目录 - 这取决于您用于构建 NDK 的方法(NDK 实验性插件或较新的 ndk-build 内置支持)。

很可能,您需要在 gradle 文件中设置 jni.srcDirs。你可以看这里:Can't build project with android-ndk and Android Studio

【讨论】:

  • NDK_PROJECT_PATH=null 不是错误;这就是 gradle 插件最近启动 ndk-build 的方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-23
  • 2016-10-17
  • 2017-06-08
  • 2016-12-24
相关资源
最近更新 更多