我有一个项目使用Android Gradle插件的非实验版本(com.android.tools.build:gradle:2.1.3)。我有一些本机代码,我构建到共享库libnative.so。
问题是现在我想将libnative.so链接到预构建的库。我们将此文件称为libfoo.so。如果我将jniLibs.srcDir设置为包含libfoo.so的文件夹用于不同的ABI,我看到它被捆绑到我的APK中。
但是我不明白我应该如何成功地联系它。如果我向ldLibs添加“foo”,我会收到链接器错误,说它无法找到该库。这可能是因为包含libfoo.so的文件夹不包含在链接器的搜索路径中。
我该怎么做?如果不切换到实验性的gradle插件,这是不可能的吗?
这是我的gradle文件。我剥离了可能与此问题无关的部分:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.foo.bar"
minSdkVersion 15
targetSdkVersion 23
versionCode 11
versionName "0.0.11"
def foodir = "${project.buildDir}/../../foo"
ndk {
moduleName "native"
ldLibs "foo"
stl "gnustl_static"
}
sourceSets {
main {
jniLibs.srcDirs = ["${foodir}"]
}
}
}
}