Gradle不会将JNI * .so库打包到APK文件中

时间:2014-12-25 14:03:50

标签: java android ant gradle java-native-interface

我有相当大的源代码树,其中也包含JNI源代码:

android {
compileSdkVersion 19
buildToolsVersion '21.1.1'
lintOptions {
    abortOnError false
}    
sourceSets {
        main {
            manifest.srcFile 'src/main/AndroidManifest.xml'
            java.srcDirs = ['src/main/java']
            res.srcDirs = ['src/main/res']
            aidl.srcDirs=['src/main/aidl']
            assets.srcDirs = ['src/main/assets']
            jni.srcDirs=[] //to suppress makefiles autogeneration
            //jni.srcDirs=['src/main/jni']
            jniLibs.srcDirs=['src/main/libs'] //native *.so in armeabi x86 and mips to include
        }
    }
}

//skipped

dependencies {
    apt 'org.androidannotations:androidannotations:3.0+'
    compile 'org.androidannotations:androidannotations-api:3.0+'
    compile project(':actionbarsherlock')
    compile project(':actionbarsherlocki18n')
    compile 'com.android.support:support-v4:21.0.2'
    compile 'com.google.code.gson:gson:2.2.4'
    compile files('libs/acra-4.5.0.jar')
    compile files('libs/libphonenumber-5.9.jar')
    compile files('libs/universal-image-loader-1.8.6.jar')
}
ant.importBuild 'src/main/jni/build_native.xml'  //ant task to build JNI

除Gradle没有将* .so文件放入最终的APK文件外,一切正常。 Ant确实会生成* .so库并将它们放入src/main/libs/x86src/main/libs/armeabi文件夹中 - 我已经仔细检查了它。

我真的坚持这个问题 - 请帮助。

顺便说一句:风流X-Mas!

1 个答案:

答案 0 :(得分:1)

我的关键点是:

compileSdkVersion 21  //instead 19

一旦我将compileSdkVersion从19更改为21,问题就解决了(还需要将JDK 6更改为JDK 7.

...魔术