abiFilters
在 android build.gradle
defaultConfig 块中设置。
我想从 release 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
最佳答案
提供命令行选项,例如“ 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
引用: https://stackoverflow.com/a/52980193/8034839