Gradle:applicationVariants.all跳过一个变体

Ser*_*m's 8 android gradle

我正在使用Gradle来编译我的Android项目:

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)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

并非所有输出文件都被重命名,它总是跳过1个文件.为什么?

myapp-debug-unaligned-renamed.apk    <-renamed, OK!
myapp-release.apk                    <-NOT renamed, WRONG!
myapp-release-unaligned-renamed.apk  <-renamed, OK!
Run Code Online (Sandbox Code Playgroud)

Ser*_*m's 16

我用这个代码解决了:

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", ""));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该区块applicationVariants.all {...}现在位于release {...}区块外.

我认为variant.zipAlign.outputFile有所作为.

  • 语法已更改为1.0.0版本的gradle插件.请在此处查看更新的解决方案:http://stackoverflow.com/questions/23693309/renaming-apk-in-gradle/27369185#27369185 (2认同)