如何在Android cmake外部构建系统中链接第三方库?

Android Studio 2.2引入了cmake外部构建系统。 问题是文档确实缺乏,我不知道如何链接第三方库? 我试过cmake指令target_link_libraries:

target_link_libraries(native-lib libs/libSomething.so)

并且它在该应用程序中“工作”编译,但之后我在运行时得到dlopen错误,因为libSomething.so尚未与应用程序打包。 libs目录在“app”下,如果它改变了什么,我开始使用Android Studio 2.2生成的默认JNI项目……

[更新]

我已经尝试将libSomething.so放在app / src / main / jniLibs / armeabi-v7a下,但现在没有打包“main”(native-lib)库。

[UPDATE2]

我已经添加了包含cmake输出目录的源集配置,这可行,但是很难看,因为地狱并不是一个永久的解决方案……

 sourceSet { main { jniLibs.srcDirs = [ "libs", ".externalNativeBuild/cmake/debug/obj"] } } 

现在我最终在后期构建步骤中将libSomething.so复制到cmake库输出目录。 这是有效的,因为事实certificateAndroid Studio复制到该目录中的apk EVERYTHING。

cmake中的命令如下:

 add_custom_command(TARGET native-lib POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/libs/${ANDROID_ABI}/libSomething.so ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libSomething.so ) 

现在,您还可以将共享库放入目录,并将jniLibs配置为指向该目录,然后将其打包。 一个示例在这里: https : //github.com/googlesamples/android-ndk/tree/master/hello-libs ,关注gperf看看是否有帮助。 这种应用程序不依赖于生成的构建文件夹。 当android studio添加了包装库时,不再需要jniLibs解决方法