abiFilters
在 android build.gradle
defaultConfig block 中设置。
我想从发布 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
我想在 defautlConfig
block 中保留完整的 abiFilters
并在某些buildType
编辑 1:
是的,在 debug
和 release
block 中删除 defaultConfig
并设置 abiFilters
会起作用。但我的问题是如何利用 defaultConfig
最佳答案
提供命令行选项,例如“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
关于android - 如何覆盖 buildTypes 中的 defaultConfig abiFilters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53322169/