You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle产品风味中定义的CMake参数为何不生效?

问题原因及修复方案

1. CMake参数传递格式错误

你在productFlavors中给CMake传递参数时,将多个参数打包进了同一个字符串,Gradle会把它作为单个完整参数传给CMake,导致CMake无法正确解析-DVULKAN_VALIDATION_ON=TRUE这个定义,自然不会触发对应的链接逻辑。

修复后的build.gradle代码

将arguments拆分为独立的字符串元素,用逗号分隔:

productFlavors {
    development {
        dimension "PlayStore"
        externalNativeBuild {
            cmake {
                arguments "-DPLAY_STORE=TRUE", "-DVULKAN_VALIDATION_ON=TRUE"
            }
        }
    }
    production {
        dimension "PlayStore"
        externalNativeBuild {
            cmake {
                arguments "-DPLAY_STORE=TRUE"
            }
        }
    }
}

2. 清理CMake缓存(关键步骤)

之前构建生成的CMake缓存会保留旧参数值,即使修改了build.gradle也可能不生效。需要执行以下操作:

  • 在Android Studio中点击菜单栏的Build > Clean Project
  • 接着点击Build > Rebuild Project
  • 或者直接删除项目根目录下的.cxx文件夹(该目录存放CMake构建缓存文件)

3. 验证参数传递状态(可选)

可以在CMakeLists.txt开头添加打印语句,确认参数是否被正确接收:

message("Received VULKAN_VALIDATION_ON: ${VULKAN_VALIDATION_ON}")

构建developmentDebug变体时,就能在构建日志中看到参数值,快速确认传递是否成功。

内容的提问来源于stack exchange,提问作者Bungles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 21:15:48