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

Ufo*_*oXp 12 android cmake android-ndk

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"]
    }
}
Run Code Online (Sandbox Code Playgroud)

Ufo*_*oXp 14

现在我最终在后期构建步骤中将libSomething.so复制到cmake库输出目录.这是有效的,因为事实证明Android 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
    )
Run Code Online (Sandbox Code Playgroud)