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

Android Flavors:如何为指定Flavor禁用CMake?

解决方案:为单个Flavor禁用CMake

你的问题根源在于全局配置了externalNativeBuild,这会让所有Product Flavor都触发CMake构建任务,哪怕Flavor1没有相关配置。要实现仅Flavor2启用CMake,需将CMake配置完全移到Flavor2内部,移除全局的externalNativeBuild块。

修改后的Gradle配置

flavorDimensions "machine"
productFlavors {
    flavor1 {
        dimension "machine"
        // 无需任何NDK/CMake相关配置
    }
    flavor2 {
        dimension "machine"
        ndk {
            abiFilters 'arm64-v8a'
            libs "log" // 修正原代码拼写错误:lbLibs → libs
        }
        externalNativeBuild {
            cmake {
                path file('src/flavor2/cpp/CMakeLists.txt')
                version '3.18.1'
                cppFlags ''
            }
        }
    }
}

// 移除全局的externalNativeBuild块,避免对所有Flavor生效

关键改动说明

  1. 移除全局externalNativeBuild:原来的全局配置会强制所有变体执行CMake构建,即使Flavor1不需要,导致报错buildCMakeDebug[armeabi-v7a]。
  2. 将CMake配置内联到Flavor2:仅在Flavor2的配置块中定义externalNativeBuild.cmake,确保只有该Flavor触发原生代码构建。
  3. 修正拼写错误:原代码中lbLibs是笔误,应为libs,避免NDK配置报错。

验证效果

  • 构建Flavor1时:不会出现任何CMake相关任务,APK包内无原生.so文件。
  • 构建Flavor2时:正常执行CMake编译,生成对应ABI的原生库并打包进APK。

内容的提问来源于stack exchange,提问作者Ofir A.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:16:02