Android Gradle:applicationVariants.all跳过一个变体
我正在使用Gradle编译我的Android项目:Android Gradle:applicationVariants.all跳过一个变体,android,gradle,Android,Gradle,我正在使用Gradle编译我的Android项目: buildTypes { release { signingConfig signingConfigs.release applicationVariants.all { variant -> def file = variant.outputFile def fileName = file.name fileName = f
buildTypes {
release {
signingConfig signingConfigs.release
applicationVariants.all { variant ->
def file = variant.outputFile
def fileName = file.name
fileName = fileName.replace(".apk", "-renamed.apk")
variant.outputFile = new File(file.parent, fileName)
}
}
}
并非所有输出文件都被重命名,它总是跳过1个文件。为什么?
myapp-debug-unaligned-renamed.apk <-renamed, OK!
myapp-release.apk <-NOT renamed, WRONG!
myapp-release-unaligned-renamed.apk <-renamed, OK!
myapp-debug-unaligned-renamed.apk我通过删除您的一行代码简化了它,但实际上您需要这样更改它:
android {
buildTypes {
...
}
applicationVariants.all { variant ->
def file = variant.outputFile
def fileName = file.name.replace(".apk", "-renamed".apk")
variant.outputFile = new File(file.parent, fileName)
}
}
当使用build.gradle配置时,应该有3个输出APK文件:debug unsigned unaligned、release signed aligned和release signed unaligned。applicationVariant
有两个变量来处理输出文件:outputFile和packageApplication.outputFile,前者用于zipaign,后者用于一般情况
因此,重命名所有文件的正确方法如下:
android.applicationVariants.all { variant ->
if (variant.zipAlign) {
def oldFile = variant.outputFile;
def newFile = oldFile.name.replace(".apk", "-renamed.apk")
variant.outputFile = new File(oldFile.parent, newFile)
}
def oldFile = variant.packageApplication.outputFile;
def newFile = oldFile.name.replace(".apk", "-renamed.apk")
variant.packageApplication.outputFile = new File(oldFile.parent, newFile)
}
我使用以下代码解决了这个问题:
buildTypes {
release {
signingConfig signingConfigs.release
}
applicationVariants.all { variant ->
def apk = variant.packageApplication.outputFile;
def newName = apk.name.replace(".apk", "-renamed.apk");
variant.packageApplication.outputFile = new File(apk.parentFile, newName);
if (variant.zipAlign) {
variant.zipAlign.outputFile = new File(apk.parentFile, newName.replace("-unaligned", ""));
}
}
}
块applicationVariants.all{…}
现在位于release{…}
块之外
我认为variant.zipAlign.outputFile
起作用。从buildTypes{}块中取出代码并不能解决问题。现在variant已经有了outputFiles(复数)。gradle插件的1.0.0版本改变了语法。请参见此处的更新解决方案: