有没有办法在不使用实验性Android Gradle插件的情况下将我的本机代码与预建的共享库链接?

时间:2016-09-25 17:55:28

标签: android android-studio android-ndk android-gradle

我有一个项目使用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}"]
            }
        }
    }
}

0 个答案:

没有答案