我有一个支持4个不同体系结构armeabi-v7a
(arm64-v8a
,x86
和)的android应用程序x86_64
。我不希望为每个内置的Android构建这些架构。我想通过gradlew
命令将体系结构信息作为参数传递,以便跳过其余体系结构的构建。我知道将-DANDROID_ABI
标志作为参数传递给cmake可以解决问题,但不确定如何通过gradlew
命令将其作为参数传递吗?
defaultConfig {
minSdkVersion 21
targetSdkVersion 26
externalNativeBuild {
cmake {
cppFlags "-frtti -fexceptions"
arguments "-DANDROID_ABI=<<requested arch to built>>"
}
}
}
换句话说,如何将此信息从gradlew
命令传递到cmake?
技巧如下:
android {
...
defaultConfig {
externalNativeBuild {
cmake {
...
if (project.hasProperty("armeabi-v7a")) {
abiFilters 'armeabi-v7a'
} else if (project.hasProperty("arm64-v8a")) {
abiFilters 'arm64-v8a'
} else if (project.hasProperty("x86")) {
abiFilters 'x86'
} else if (project.hasProperty("x86_64")) {
abiFilters 'x86_64'
} else {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
...
}
}
}
}
在命令行中,您可以执行以下操作,例如,仅构建abi armeabi-v7a
./gradlew externalNativeBuild -Parmeabi-v7a
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句