我的 Android 应用程序有两种运行类型,一种包含与 C++ 库的集成,另一种不包含。
我想创造两种口味来支持:
是否可以仅针对一种口味禁用 Cmake?
当我尝试运行 flavor 1(无 NDK)时,出现错误(:app:buildCMakeDebug[armeabi-v7a]),似乎仍然需要 cmake。
下面你可以看到我的 Gradle 文件中的相关行。
flavorDimensions "machine"
productFlavors {
flavor1 {
dimension "machine"
}
flavor2 {
dimension "machine"
ndk {
abiFilters 'arm64-v8a'
lbLibs "log"
}
externalNativeBuild.cmake {
cppFlags ''
}
}
}
externalNativeBuild {
cmake {
path file('src/flavor2/cpp/CMakeLists.txt')
version '3.18.1'
}
}
理论上你可以做类似的事情,而不是在其他风格中包含 NDK
flavorDimensions "machine"
productFlavors {
flavor1 {
dimension "machine"
}
flavor2 {
dimension "machine"
ndk {
abiFilters 'arm64-v8a'
lbLibs "log"
}
externalNativeBuild {
cmake {
path file('src/flavor2/cpp/CMakeLists.txt')
version '3.18.1'
cppFlags ''
}
}
}
}
我认为要针对特定的 Android 风格禁用 CMAKE,您可以在应用程序的 build.gradle 文件中使用 externalNativeBuild 块。在此块中,您可以为每种风格定义构建配置并指定要使用的构建系统。
这是一个示例,说明如何为特定口味禁用 CMAKE:
android {
flavorDimensions "machine"
productFlavors {
flavor1 {
dimension "machine"
externalNativeBuild {
cmake {
// disable CMAKE for this flavor
enabled false
}
}
}
flavor2 {
dimension "machine"
externalNativeBuild {
cmake {
// enable CMAKE for this flavor
enabled true
}
}
}
}
}