升级Android Gradle Plugin至8.2.0报错:找不到archivesBaseName()方法
AGP 8.2.0 移除
archivesBaseName()后的替代方案 方案1:使用Android Components API(官方推荐)
AGP 8.0+官方推荐通过Components API配置变体输出,更适配Gradle增量构建逻辑,示例代码如下:
androidComponents { onVariants(selector().all()) { variant -> variant.outputs.each { output -> variant.versionName.map { versionName -> def baseName = "${rootProject.name.replaceAll(" ", "")}-v${versionName}" output.outputFileName.set("${baseName}.apk") // 生成App Bundle时改为 "${baseName}.aab" } } } }
通过variant.versionName.map()安全获取版本号,可避免直接调用get()可能引发的构建时序问题。
方案2:通过applicationVariants配置(兼容旧写法)
若习惯传统变体遍历方式,可继续使用applicationVariants修改输出文件名,AGP 8.x版本中仍可正常运行:
android { // 保留原有其他配置项 applicationVariants.all { variant -> variant.outputs.each { output -> def baseName = "${rootProject.name.replaceAll(" ", "")}-v${variant.versionName}" output.outputFileName = "${baseName}.apk" } } }
方案3:针对Library模块的配置
如果是生成AAR文件的Android Library模块,可使用以下方式修改输出名称:
androidComponents { components.all { component -> component.outputs.each { output -> component.versionName.map { versionName -> def baseName = "${rootProject.name.replaceAll(" ", "")}-v${versionName}" output.outputFileName.set("${baseName}.aar") } } } }
内容的提问来源于stack exchange,提问作者Isak The Hacker
相关产品推荐
相关产品推荐

