Android Studio将外部本机构建库从多个ABI复制到jniLibs

时间:2017-04-16 13:30:19

标签: android android-studio gradle cmake

我正在使用Android Studio构建具有多个ABI armeabi-v7a和x86的外部本机构建库。问题是,当我构建项目时,库位于这些文件夹中:

App/.externalNativeBuild/cmake/debug/armeabi-v7a/libs/armeabi-v7a/libApp.so
App/.externalNativeBuild/cmake/debug/x86/libs/x86/libApp.so

他们应该在这些位置内,以便在设备上正确找到:

App/src/main/jniLibs/armeabi-v7a/libApp.so
App/src/main/jniLibs/x86/libApp.so

有没有办法可以生成或直接构建到jniLibs中?目前我已经手工完成了符号链接,但我希望有自动处理不同ABI和不同配置的方法。 这是我目前的gradle脚本:

apply plugin: 'com.android.application'
android {
    compileSdkVersion 23
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.org.app"
        minSdkVersion 19
        targetSdkVersion 19
        ndk {
            abiFilters 'armeabi-v7a', 'x86'
            stl = "c++_static"
        }
        externalNativeBuild {
            cmake {
                arguments "-DCMAKE_BUILD_TYPE=Release"
            }
        }
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt')
        }
    }
    externalNativeBuild {
        cmake {
            path '../../../CMakeLists.txt'
        }
    }
    sourceSets.main {
        jni.srcDirs = []
        jniLibs.srcDir 'src/main/jniLibs'
    }
}

1 个答案:

答案 0 :(得分:0)

使用

sourceSets.main {
     jni.srcDirs = []
     jniLibs.srcDirs 'src/main/jniLibs'
}