abiFilters
是在Android build.gradle
defaultConfig块中设置的。
我想从发布buildType中排除x86
,但找不到简便的方法
这里是build.gradle
:
defaultConfig {
ndk {
abiFilters "armeabi", "x86"
moduleName "cipher_v1"
cFlags "-DRELEASE=1"
if (rootProject.ext.has("testCrack")) {
cFlags += " -DTEST_CRACK"
}
if (project.ext.has("authKey") && project.ext.has("androidId")) {
cFlags += "-DAUTH_KEY=\\\"" + project.ext.authKey + "\\\""
"-DANDROID_ID=\\\"" + project.ext.androidId + "\\\""
}
}
}
buildTypes {
release {
ndk {
abiFilters "armeabi"
}
}
}
这就是我得到的:
unzip -l base-release.aar|grep cipher
17752 02-01-1980 00:00 jni/armeabi/libcipher_v1.so
17640 02-01-1980 00:00 jni/x86/libcipher_v1.so
这就是我真正想要的:
unzip -l base-release.aar|grep cipher
17752 02-01-1980 00:00 jni/armeabi/libcipher_v1.so
我想在abiFilters
块中保留完整的defautlConfig
并在某些buildType
编辑1:
是的,删除defaultConfig
和abiFilters
块中的debug
并将release
设置为可行。但是我的问题是如何利用defaultConfig
答案 0 :(得分:0)
android {
buildTypes {
debug {
ndk {
abiFilters "armeabi", "x86"
}
}
release {
ndk {
abiFilters "armeabi"
}
}
}
}
productFlavors
也将支持尺寸abi
。
答案 1 :(得分:0)
提供命令行选项,例如“ no_x86 ”
在下方添加到您的app/build.gradle
defaultConfig {
ndk {
...
if (project.hasProperty("no_x86")) {
abiFilters "armeabi"
} else {
abiFilters "armeabi", "x86"
}
...
}
}
使用以下命令通过将选项no_x86
输入命令来生成不包含 x86 ABI的APK。
./gradlew assemble -Pno_x86
但如果您要使用 x86 abi构建 APK,请不要向命令提供选项no_x86
。由于defaultConfig
会根据您的要求保留完整的abiFilters。
对于某些 buildType ,您可以通过提供或不提供-Pno_x86
属性来调用相应的构建命令。例如。 ./gradlew assembleRelease -Pno_x86
答案 2 :(得分:0)
感谢马丁,我从中找到了一个可行的解决方案:
when defaultConfig would only have armeabi configured and build-type debug would then add x86, this might work out
我意识到adding wanted abi to debug
是removing unwanted abi for release
的一种解决方法
为我工作
defaultConfig {
ndk {
//abiFilters "armeabi", "x86"
abiFilters "armeabi"
}
}
buildTypes {
debug {
ndk {
//abiFilters "armeabi", "x86"
abiFilters "x86"
}
}
release {
//ndk {
// abiFilters "armeabi"
//}
}
}