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
相关产品推荐
相关产品推荐

