我有相当大的源代码树,其中也包括 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/x86
和src/main/libs/armeabi
文件夹中 - 我已经仔细检查了它。
我真的被这个问题困住了 - 请帮忙。
顺便说一句:圣诞快乐!
我的情况的关键点是:
compileSdkVersion 21 //instead 19
一旦我将 compileSdkVersion 从 19 更改为 21 - 问题就解决了(也将 JDK 6 更改为 JDK 7 也需要。
魔法。。。