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

Android Gradle库模块AAR复制重命名不符合预期问题求助

解决Android库模块Gradle生成AAR文件名带维度前缀的问题

你的问题出在使用flavor dimensions(exoplayerversion和playserviceversion)时,Android Gradle Plugin会自动将维度组合值追加到默认输出文件名前,同时直接给outputFileName赋值File对象的用法不符合AGP预期,导致最终文件名包含多余的维度前缀。

以下是修正后的Gradle配置,可生成符合预期的Player-P-1.1.6-debug.aar/Player-P-1.1.6-release.aar文件名:

ext {
    version = 'P-1.1.6'
    name = 'Player'
    releaseDir = "../../../../releases/${version}"
}

defaultConfig {
    missingDimensionStrategy "exoplayerversion", "Exo_2_13_3", "Exo_2_18_1"
    missingDimensionStrategy "playserviceversion", "PlayService_16_0_0", "PlayService_21_0_1"
    buildConfigField "String", "LIBRARY_VERSION", "\"${version}\""
}

libraryVariants.all { variant ->
    def isDebug = variant.buildType.name == 'debug'
    def targetFileName = "${name}-${version}-${isDebug ? 'debug' : 'release'}.aar"
    def targetDir = file(releaseDir)

    // 确保输出目录存在
    targetDir.mkdirs()

    variant.outputs.all { output ->
        // 仅设置文件名,避免AGP自动添加维度前缀
        output.outputFileName = targetFileName
        // 指定输出目录到目标路径
        output.outputDirectory = targetDir
    }

    // 复制mapping文件到指定目录
    variant.assemble.doLast {
        if (variant.mappingFile != null && variant.mappingFile.exists()) {
            copy {
                from variant.mappingFile
                into targetDir
                rename { "mapping.txt" }
            }
        }
    }
}

关键改动说明:

  • 用variant.buildType.name直接判断构建类型,比解析文件名更可靠
  • 分开配置outputFileName(纯文件名)和outputDirectory(目标路径),彻底避免AGP自动添加维度前缀
  • 提前创建输出目录,防止文件复制时因目录不存在失败
  • 增加mapping文件存在性检查,避免执行无效的复制操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 23:58:22