Android Gradle Plugin 3.0:apk安装包输出到指定目录新方法

时间:2022-06-01 20:07:49

Android Gradle Plugin 3.0对操作apk输出的api做了变更。之前指定apk输出目录的方法不再适用。

Android Gradle Plugin 3.0之前

applicationVariants.all { variant ->
    variant.outputs.each { output ->
        output.outputFile = new File(output.outputFile.parent, defaultConfig.versionCode + "_" + output.outputFile.name)
    }
}

Android Gradle Plugin 3.0新方法

需要做两点修改:

  • 使用all()替换 each()
  • 使用outputFileName 替换 output.outputFile,这个只改变输出apk包名。
applicationVariants.all { variant ->
    variant.outputs.all {
        outputFileName = "${variant.name}-${variant.versionName}.apk"
    }
}

错误信息

如果没有修改,构建时报会类似的错误信息:

Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=debug, filters=[]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl.

参考:https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html#variant_api