Android gradle,用于不同架构的本机库

Vet*_*lll 6 java-native-interface android native gradle

我正在尝试为所有架构构建通用 apk.这是我的项目结构:

-App
    -appModule
    -libraryModule
         -libs
             -armeabi
                 -lib.so
         -src
             -java
             -jni
Run Code Online (Sandbox Code Playgroud)

这是libraryModule的gradle文件:

apply plugin: 'com.android.library'

//    http://stackoverflow.com/questions/28485309/how-to-build-single-apk-with-andoid-ndk-and-gradle


android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        ndk {
            moduleName "ProxyResolver" // <-- This is the name of AndroidProxy native module
            stl "gnustl_shared"
            cFlags "-std=c++11"
            abiFilters = ['armeabi']
            ldLibs (projectDir.absolutePath + "/libs/armeabi/libresolver.so")
        }
    }

    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}
Run Code Online (Sandbox Code Playgroud)

如您所见,库的路径是硬编码的.现在它适用于arm-v7处理器.但我需要添加x86的支持而不添加味道

tin*_*ght 2

我猜:

ndk {

    moduleName "resolver"
    stl "gnustl_shared"
    cFlags "-std=c++11"
    abiFilters = ['armeabi','arm-v7']
}
Run Code Online (Sandbox Code Playgroud)

并删除

sourceSets {
    main {
        jniLibs.srcDirs = ['libs']
    }
}
Run Code Online (Sandbox Code Playgroud)