You need to enable JavaScript to run this app. Android Gradle Library:如何将最终构建的AAR复制到指定目录并重命名
优惠活动
大模型
产品
解决方案
定价
更多

Android Gradle Library:如何将最终构建的AAR复制到指定目录并重命名

现有配置的核心问题
  • 基于命令行请求的判断逻辑可靠性差:通过gradle.getStartParameter().getTaskRequests()匹配构建类型,一旦出现多任务并行执行、命令行格式变更的场景,很容易匹配失效,导致分支逻辑走偏
  • 复制任务的执行时机错位:普通Task中嵌套copy代码块的写法,加上之前绑定的doLast、build.finalizedBy逻辑,无法保证AAR文件完全生成后再执行复制,经常出现复制空文件、复制历史残留文件的问题
  • 重命名逻辑没有和具体构建变体绑定:硬扫build/outputs/aar目录的写法,会把所有历史存在的aar文件都复制过去,重命名规则因为分支判断失效,也没法正确触发
可直接复用的落地配置

1. 移除不可靠的分支判断逻辑

把原来afterEvaluate块里所有通过taskReqStr.contains("assembleDebug")做分支判断的代码全部删除,替换为和Android构建变体强绑定的任务依赖逻辑,完全不依赖命令行参数做判断。

2. 重写AAR复制任务,采用标准Copy任务类型

原来的自定义copyAAR任务因为没有指定类型、执行时机不可控,需要替换为分别对应debug、release变体的独立Copy任务,精准匹配生成路径、自动完成重命名:

afterEvaluate {
    // 绑定Android插件自动生成的两个核心AAR构建任务
    def assembleDebugTask = tasks.named("assembleDebug")
    def assembleReleaseTask = tasks.named("assembleRelease")

    // 配置Debug版本AAR的复制重命名规则
    tasks.register("copyDebugAar", Copy) {
        // 必须等Debug版本AAR完全构建完成后再执行复制
        dependsOn assembleDebugTask
        // 精准定位当前Debug构建产出的AAR文件,避免误扫目录下的历史残留文件
        from "${buildDir}/outputs/aar/foo-debug.aar"
        // 指定目标输出目录
        into "${projectDir}/../../../lib/"
        // 按固定规则重命名
        rename "foo-debug.aar", "foo.aar"
    }

    // 配置Release版本AAR的复制重命名规则
    tasks.register("copyReleaseAar", Copy) {
        dependsOn assembleReleaseTask
        from "${buildDir}/outputs/aar/foo-release.aar"
        into "${projectDir}/../../../lib/"
        rename "foo-release.aar", "foo.aar"
    }

    // 将复制任务绑定到对应构建流程的末尾,构建完成自动触发
    assembleDebugTask.get().finalizedBy("copyDebugAar")
    assembleReleaseTask.get().finalizedBy("copyReleaseAar")

    // 保留原有的证书打包依赖逻辑,无需改动
    tasks.preDebugBuild.dependsOn doPackCert
    tasks.preReleaseBuild.dependsOn doPackCert
}

3. 清理冗余的无效配置

  • 删除原来定义的旧copyAAR整个任务块
  • 删除文件最后一行build.finalizedBy(copyAAR)的配置
  • 原配置中设置的archivesBaseName = "foo"可以保留,和上述AAR路径规则完全匹配。

注意:上述路径规则基于你现有配置中设置的archivesBaseName = "foo"编写,如果后续调整AAR的基础文件名,同步修改from路径和rename匹配规则即可。

配置校验规则
  • 该写法不需要手动触发复制任务,不管执行./gradlew assembleDebug还是./gradlew assembleRelease,构建流程走完就会自动把对应AAR按规则复制到../../../lib/目录
  • 复制逻辑是精准指向本次构建生成的AAR文件,不会把目录下其他版本的旧AAR一起复制,也不会出现AAR还没编译完成就提前执行复制的空文件问题
  • 多任务并行执行场景下,不会因为命令行参数匹配错误出现复制逻辑错位的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.08 15:45:00