我有一个Android Studio项目,我已经添加了一个ndk模块。我的ndk模块在各种构建/中间目录中构建并创建了许多不同的.so文件。但是,当我运行应用程序时,它无法从我的System.loadLibrary调用中加载库.so。
我在同一个模块中包含的Java文件很好,所以我希望Android Studio能够“找到”ndk文件。
在查看google hello-libs demo时,我看到他们在CMakeLists.txt文件中添加了一个步骤来设置LIBRARY_OUTPUT_DIRECTORY:
set(distribution_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../distribution)
set_target_properties(gperf
PROPERTIES
LIBRARY_OUTPUT_DIRECTORY
"${distribution_DIR}/gperf/lib/${ANDROID_ABI}")
然后在app中添加了一个关联的引用:build.gradle
jniLibs.srcDirs = ['../distribution/gperf/lib']
向我的项目添加类似的条目使其能够正常运行。
是否有更简单的方法可以将ndk编译模块包含在主应用程序中?如果没有,有没有办法做到这一点,而不必弄清楚所有相对../../路径元素。我想我希望模块CMakeLists.txt会 相同的配置,无论它可能包含哪些其他项目,但必须知道包括项目在哪里,似乎打破了这一点。