根据我的CI要求,我正在努力实现两件事:
我使用了android gradle插件2.3,并使用以下脚本来管理上面的任务(它适用于gradle插件2.3):
applicationVariants.all {
variant ->
variant.outputs.each { output ->
output.outputFile = new File(
output.outputFile.parent,
variant.productFlavors.get(0).name + variant.buildType.name + ".apk")
}
现在我得到了以下代码(根据android gradle插件3.0中的最新更新):
applicationVariants.all { variant ->
variant.outputs.all { output ->
logger.debug("fileNameParent", output.outputFile.parent)
outputFileName = new File(
"apk/",
outputFileName.replace(".apk", "MyBuild.apk"))
}
并得到以下结构(见图):
P.S。我阅读了Android Gradle Plugin迁移指南,但它并没有帮助我实现我的目标:(
答案 0 :(得分:3)
问题的第一部分:如何生成文件名。
applicationVariants.all { variant ->
variant.outputs.all { output ->
outputFileName = new File("${variant.productFlavors.get(0).name}${variant.buildType.name}.apk")
}
问题的第二部分:如何设置路径。
根据documentation,这是不可能的:
使用Variant API来操作变量输出 新插件。它仍然适用于简单的任务,例如更改APK 在构建期间命名...但是,更复杂的任务 涉及访问outputFile对象不再起作用。那是因为 在配置期间不再创建特定于变体的任务 阶段。
答案 1 :(得分:-1)
这是正确的代码:
applicationVariants.all { variant ->
variant.outputs.all{
outputFileName = outputFileName.replace("app-${variant.buildType.name}.apk", ${variant.productFlavors.get(0).name} + "-" + ${variant.buildType.name} + ".apk")
}
}
请注意,您必须将此代码放在 android {} 部分的build.gradle应用文件中,而不是 android {buildTypes {debug / release {}}} 部分
这将返回:
debug build:
app-debug.apk>> YOUR_PRODUCT_NAME-debug.apk
发布版本:
app-release.apk>> YOUR_PRODUCT_NAME-release.apk
不要使用 outputFileName = new File(),否则您会遇到变量API操作的问题