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

如何在Gradle中动态修改sourceSets的java.srcDirs?按需构建AAR求方案

动态配置Android Gradle SourceSets并按需构建AAR

方法一:通过命令行参数动态修改SourceSets

你可以借助Gradle的项目属性传递命令行参数,在脚本里根据参数动态指定源码目录:

  1. 修改模块级build.gradle:
android {
    // 读取命令行传入的buildVariant参数,默认用open作为兜底选项
    def targetVariant = project.hasProperty('buildVariant') ? project.buildVariant : 'open'

    sourceSets {
        main {
            // 动态拼接源码目录路径
            java.srcDirs = ["src/${targetVariant}/java"]
        }
    }
}
  1. 执行构建命令时传入参数:
    构建gdt版本的AAR:
./gradlew assembleRelease -PbuildVariant=gdt

构建open版本的AAR:

./gradlew assembleRelease -PbuildVariant=open

更优方案:使用Product Flavors(官方推荐)

手动修改sourceSets属于临时配置方式,Gradle官方更推荐用Product Flavors实现多变体构建,这种方式更规范,调试和维护成本更低:

  1. 修改模块级build.gradle:
android {
    // 定义flavor维度(仅一组变体时,维度名可自定义)
    flavorDimensions "variantType"

    productFlavors {
        gdt {
            dimension "variantType"
            // 无需手动指定srcDirs——Gradle默认会识别`src/gdt/java`、`src/gdt/res`等目录
        }
        open {
            dimension "variantType"
        }
    }
}
  1. 构建对应版本的AAR:
    直接调用自动生成的构建任务即可,无需额外传参:
# 构建gdt版本的release AAR
./gradlew assembleGdtRelease

# 构建open版本的release AAR
./gradlew assembleOpenRelease

该方案的优势

  • 自动适配多目录:除Java源码外,还能自动识别对应变体的资源(res)、Manifest文件、JNI库等,无需手动配置sourceSets的其他属性
  • 开发调试便捷:在Android Studio的「Build Variants」面板可直接切换gdt/open变体,不用每次修改脚本或传命令行参数
  • 任务逻辑清晰:每个变体对应独立的构建任务,避免参数传递出错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 21:30:56