【发布时间】:2019-07-31 07:38:23
【问题描述】:
我有这个 gradle:
android {
...
buildTypes {
debug {
externalNativeBuild {
cmake {
cppFlags "-DGENDEV"
}
}
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
...
}
如果条件在我的 CMakeList 文件中可以正常工作:
if("${CMAKE_CXX_FLAGS}" MATCHES "GENDEV$")
// true
endif()
我最近在我的构建中添加了flavors,如下所示:
flavorDimensions "version"
productFlavors {
free {
dimension "version"
externalNativeBuild.cmake {
cppFlags "-DFLAVOR_FREE"
}
}
full {
dimension "version"
externalNativeBuild.cmake {
cppFlags "-DFLAVOR_FULL"
}
}
}
现在,我的 CMakeList 文件中有这些检查:
if("${CMAKE_CXX_FLAGS}" MATCHES "FLAVOR_FULL$")
// full version
else()
// free version
endif()
if("${CMAKE_CXX_FLAGS}" MATCHES "GENDEV$")
// true
endif()
第一次检查总是错误的,因此每个版本都是免费版本!我做错了什么?
【问题讨论】:
-
我已将您的代码粘贴到我的(最小)NDK 项目中,它确实按预期工作。但是出现了几个问题。 首先,你如何选择构建的风味? 二,Gradle、Android插件、Android Studio的版本是什么?因为,在 Canary 的最新版本中,我的 CMake 没有按我的意愿工作。当我使用稳定的
classpath 'com.android.tools.build:gradle:3.4.2'、gradle-5.5-all.zip时,一切都很好。 -
我希望更新能做到
-
谢谢亚历克斯。请将此信息添加为答案,并将作为正确答案接受。
标签: android cmake android-gradle-plugin