Gradle 7下如何自定义AAR输出文件名称?
解决Gradle 7.3.3下修改AAR输出文件名的问题
你之前的代码报错是因为Gradle 7+的Android插件内部API已经重构,variant.variantData.outputFactory这个属性已经被移除,旧代码依赖的是未公开的内部接口,版本迭代后自然失效。
针对Android Library项目,Gradle 7+正确修改AAR输出文件名的方式是直接操作变体的outputs,无需触碰内部的variantData。把你android块里的afterEvaluate代码替换成下面这段:
afterEvaluate { android.libraryVariants.all { variant -> variant.outputs.all { output -> def baseName = "${project.name}-${variant.buildType.name}-${variant.versionName}" output.outputFileName = "${baseName}.aar" } } }
代码说明:
android.libraryVariants.all:遍历所有Library构建变体(比如release、debug)variant.outputs.all:处理每个变体的输出产物(这里就是AAR文件)${variant.versionName}:直接获取你通过androidGitVersion.name()设置的版本名,无需额外处理- 最终输出的文件名会是
my-sdk-release-1.0.0.aar这类格式(根据你的实际版本名自动变化)
替换后同步Gradle,构建时就能生成带版本名的AAR文件了。
旧代码失效原因:
旧代码里的apkDataList、outputFactory都是Android插件的内部私有API,Google在Gradle插件升级时经常调整这些内部结构,没有向后兼容性保证,所以不能依赖这类写法。官方推荐的公开API是通过variant.outputs修改输出文件名,不同Gradle版本兼容性更好。
内容的提问来源于stack exchange,提问作者Schattennarr
相关产品推荐
相关产品推荐

