AGP 8.1.0修改APK文件名旧方法失效,求AGP 8+可用API
AGP 8+ 修改APK文件名的替代方案
在AGP 8.1.0 + Gradle 8.2.1环境下,你之前通过强转内部类ApkVariantOutputImpl修改outputFileName的方式失效,核心原因是AGP 8+对内部API的访问进行了限制,内部类不再允许直接强转调用。以下是两种官方推荐的替代方案:
方案一:基于Legacy API(兼容旧写法)
不需要强转内部类,直接通过公开的VariantOutput接口访问outputFileName属性:
android { // ... 其他Android配置 applicationVariants.all { variant -> variant.outputs.forEach { output -> // 可根据变体信息动态命名,比如加上变体名称 output.outputFileName = "MyAwesomeName_${variant.name}.apk" } } }
方案二:基于Android Components新API(推荐)
使用AGP现代化的androidComponents配置块,这是官方推荐的未来兼容方案:
plugins { id("com.android.application") kotlin("android") } android { // ... 其他Android配置 } androidComponents { // 可通过selector筛选特定变体,比如仅配置release版本 onVariants(selector().withBuildType("release")) { variant -> variant.outputs.forEach { output -> output.outputFileName.set("MyAwesomeName_${variant.name}.apk") } } // 如果需要配置所有变体,直接用onVariants()即可 // onVariants { variant -> ... } }
说明
- 两种方案均使用AGP公开API,避免了内部API依赖导致的构建不稳定
- 可根据需求动态拼接文件名,比如加入版本号、构建类型等信息:
"MyApp_v${variant.versionName}_${variant.buildType.name}.apk"
内容的提问来源于stack exchange,提问作者Link182
相关产品推荐
相关产品推荐

