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

如何仅为指定Product Flavor加载对应Gradle依赖与插件

注意:项目级buildscript配置的加载时机远早于模块productFlavors配置的解析,无法直接读取模块内的flavor规则做条件判断,需要通过识别当前构建任务的目标变体,来实现华为相关配置的按需加载,完全隔离非华为构建包内的华为SDK相关内容

实现步骤

1. 修改根目录(项目级)build.gradle

首先移除硬编码的华为Maven仓库、AGC插件classpath依赖,改为条件加载:

// 按需修改判断逻辑,匹配你的华为flavor命名
def isHuaweiBuild() {
    // 方案1:通过构建任务名自动判断,不需要额外传参
    return gradle.startParameter.taskNames.any { it.toLowerCase().contains("huawei") }
    
    // 方案2(更精准,推荐):通过自定义构建参数判断,打华为包时加-PbuildHuawei=true即可
    // return project.hasProperty("buildHuawei") && buildHuawei == "true"
}

buildscript {
    ext.kotlin_version = '1.5.20'
    repositories {
        google()
        jcenter()
        mavenCentral()
        // 仅华为构建时添加华为Maven源
        if (isHuaweiBuild()) {
            maven { url 'https://developer.huawei.com/repo/' }
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:7.0.3'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:4.3.10'
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
        // 仅华为构建时添加AGC插件依赖
        if (isHuaweiBuild()) {
            classpath 'com.huawei.agconnect:agcp:1.4.1.300'
        }
    }
}

2. 修改App模块级build.gradle

移除文件顶部全局写的apply plugin: 'com.huawei.agconnect',改为仅针对华为flavor应用插件:

plugins {
    // 你原来的其他插件声明,比如com.android.application、kotlin-android等保持不变
}

android {
    // 原有compileSdk、defaultConfig、buildTypes等配置保持不变
    productFlavors {
        // 其他非华为flavor配置保持不变
        huawei {
            // 原有华为flavor的配置保持不变
        }
    }
}

// 放在android配置块之后,仅华为变体应用AGC插件
afterEvaluate {
    android.applicationVariants.all { variant ->
        // 这里的判断规则要和根目录build.gradle里的flavor命名匹配
        if (variant.flavorName.toLowerCase().contains("huawei")) {
            apply plugin: 'com.huawei.agconnect'
        }
    }
}

// 你原来的dependencies依赖配置保持不变,已经做好的flavor维度华为依赖隔离不需要调整

3. 构建验证

  • 构建非华为渠道包(比如Google Play渠道)时,指定对应flavor的构建任务,如果使用参数判断方案则不要携带-PbuildHuawei=true参数,构建过程不会拉取华为Maven源的依赖,最终生成的安装包内不包含任何AGC相关类,不会触发Google Play的拒审规则
  • 构建华为渠道包时,指定华为flavor构建任务,使用参数判断方案时携带-PbuildHuawei=true参数,AGC插件会正常加载,华为地图相关功能可正常运行

注意:不要直接执行不带flavor维度的全量构建命令(比如直接运行assemble),如果需要构建多个渠道包,按flavor分别执行构建任务即可,避免非华为包混入华为相关配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 19:09:24