我想更改APK output folder
,这就是我以前做的事情:
applicationVariants.all { variant ->
variant.outputs.all {
def filePath = "${rootProject.rootDir.absolutePath}/apks/${variant.name}"
println("My Path: " + filePath)
outputFileName = filePath
}
}
但是,它在Gradle 4.1
(Android studio 3.0预览版)中无效。它不是像上面的路径那样生成文件夹,而是在旧的debug
文件夹中生成上述路径,如下图所示:
有人有解决方案吗?感谢。
答案 0 :(得分:18)
这是一种解决方法,可在升级到gradle 4.x后保持输出路径相同。
applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "../" + outputFileName
}
}
现在apk是在platforms / android / build / outputs / apk / android-release.apk
生成的答案 1 :(得分:17)
使用 Variant API 操作变体输出会被新插件破坏。它仍然适用于简单的任务,例如在构建时更改APK名称,如下所示:
android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${variant.name}-${variant.versionName}.apk"
}
}
但是,涉及访问 outputFile 对象的更复杂的任务不再有效。这是因为在配置阶段不再创建特定于变体的任务。这导致插件不能预先知道所有输出,但也意味着更快的配置时间。
答案 2 :(得分:10)
我遇到了类似的问题,因为我需要在已知文件夹中输出apk而不是在文件夹中,具体取决于计算机用户名。所以我这样修好了:
applicationVariants.all { variant ->
variant.outputs.all {
def apk = output.outputFile;
def newName = apk.name.replace(".apk", "-v" + variant.versionName + "-RELEASE.apk");
newName = newName.replace("-" + variant.buildType.name, "");
outputFileName = "./" + newName
}
}
有了这个,我得到了apk: “... /输出/ APK / flavorName / buildTypeName / xxx.apk”
希望它对你有所帮助。