迁移项目到AndroidX后通过Build>Build Apk(s)无法生成APK求助
可行解决方案
- 方案1:适配ABI拆分的命名规则
你开启了ABI拆分且生成通用APK,同一变体下会输出多个APK,原有命名规则会导致重名冲突,将注释的变体输出配置替换为以下内容即可:
android.applicationVariants.all { variant -> variant.outputs.all { output -> def abiName = output.getFilter(com.android.build.OutputFile.ABI) ?: "universal" outputFileName = "RAMMobile_${variant.name}-${variant.versionName}-${abiName}.apk" } }
- 方案2:关闭ABI拆分
如果不需要按ABI分包,直接修改splits配置即可沿用原有命名逻辑:
splits { abi { enable false reset() include "arm64-v8a" universalApk true } }
- 方案3:版本适配校验
当前项目compileSdk为28,需确保Android Gradle Plugin(AGP)版本为3.2.x3.6.x,配套Gradle版本为4.65.6.4,避免版本不兼容导致的变体配置错误。 - 方案4:AGP7.0+适配新API
如果使用7.0及以上版本AGP,使用androidComponents新API实现自定义命名:
androidComponents { onVariants(selector().all(), { variant -> variant.outputs.forEach { output -> def abiFilter = output.filters.find { it.filterType == com.android.build.api.variant.FilterType.ABI } def abiName = abiFilter ? abiFilter.identifier : "universal" output.outputFileName.set("RAMMobile_${variant.name}-${variant.versionName}-${abiName}.apk") } }) }
额外优化建议
- 已注释的Fabric相关仓库、插件、依赖配置无实际作用,可直接删除减少配置加载开销
- 删除productFlavors下Uat、Prod闭包末尾的
return void语句,避免非规范语法导致的配置异常。
内容的提问来源于stack exchange,提问作者Ojas Yajnik
相关产品推荐
相关产品推荐

