【发布时间】: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