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

如何链接Android cmake外部构建系统中的第三方库?,android,android-ndk,cmake,Android,Android Ndk,Cmake,Android Studio 2.2引入了cmake外部构建系统。问题是文档确实缺乏,我不知道如何链接第三方库?我尝试了cmake指令目标链接库: target\u link\u库(本机libs/libSomething.so) 它在应用程序编译时“起作用”,但在运行时我得到dlopen错误,因为libSomething.so并没有与应用程序打包。libs目录在“app”下,如果这改变了什么,我已经开始使用由AndroidStudio 2.2生成的默认JNI项目 [更新] 我曾尝试将libSom

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

target\u link\u库(本机libs/libSomething.so)

它在应用程序编译时“起作用”,但在运行时我得到dlopen错误,因为libSomething.so并没有与应用程序打包。libs目录在“app”下,如果这改变了什么,我已经开始使用由AndroidStudio 2.2生成的默认JNI项目

[更新]

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

[更新2]

我已经添加了包含cmake output dir的源代码集配置,它可以工作,但非常丑陋,并不是一个永久的解决方案

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

现在,我在后期构建步骤中将libSomething.so复制到cmake库输出目录。这是因为Android Studio将该目录中的所有内容复制到apk中

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
    )

现在,您还可以将共享lib放入目录中,并将jniLibs配置为指向该目录,这将对其进行打包。这里有一个示例:,请遵循gperf,看看这是否有帮助。这样应用程序就不依赖于生成的生成文件夹。当androidstudio添加打包lib时,不再需要jniLibs解决方案