Android Studio Arctic Fox 2020.3.1构建APK如何生成output.json而非output-metadata.json
适配方案
你可以通过在Gradle中添加自定义构建任务的方式,自动生成和旧版结构完全一致的output.json,原有脚本不需要做任何修改即可直接适配:
配置步骤
- 打开app模块下的
build.gradle文件,在文件末尾添加如下代码:
android.applicationVariants.all { variant -> variant.assembleProvider.configure { assembleTask -> assembleTask.doLast { // 读取新版output-metadata.json文件 def metadataDir = assembleTask.outputs.files.singleFile def metadataFile = new File(metadataDir, "output-metadata.json") if (!metadataFile.exists()) return // 解析新版元数据 def metadata = new groovy.json.JsonSlurper().parse(metadataFile) def oldFormatList = [] // 转换为旧版output.json结构 metadata.elements.each { apkElement -> oldFormatList << [ outputType: [type: "APK"], apkData: [ type: "MAIN", splits: apkElement.filters, versionCode: apkElement.versionCode, versionName: apkElement.versionName, enabled: true, outputFile: apkElement.outputFile, fullName: variant.name, baseName: variant.baseName, dirName: variant.dirName ], path: apkElement.outputFile, properties: [:] ] } // 输出旧版output.json到APK同级目录 def outputJsonFile = new File(metadataDir, "output.json") outputJsonFile.text = new groovy.json.JsonBuilder(oldFormatList).toPrettyString() } } }
- 重新执行构建APK的任务,即可在APK输出目录下同时生成
output-metadata.json和旧版output.json两个文件。
适配说明
- 该方案支持单APK构建、多渠道打包、ABI分包等所有场景,生成的
output.json结构和字段和旧版完全一致,原有脚本不需要做任何调整即可正常运行。 - Gradle 7.0+搭配AGP 7.0+之后已经废弃了旧版
output.json的生成逻辑,没有官方配置可以直接修改output-metadata.json的结构为旧版,因此自定义构建任务是成本最低的适配方案。
内容的提问来源于stack exchange,提问作者Robin L
相关产品推荐
相关产品推荐

