重命名gradle apk输出文件,但有2个apks

时间:2014-09-24 21:16:52

标签: android gradle android-studio apk android-gradle

我正在尝试根据git分支命名我的应用程序的APK文件,这是通过使用jenkins传入参数来实现的。但是,我最终得到了两个APK,这是不可取的,因为我已经将APK上传到分布式列表中的Gradle任务之一。重命名这个APK的重点是接收它的人确切知道他们正在看到的分支。

buildTypes {
    ...

    feature {
        signingConfig signingConfigs.debug

        applicationVariants.all { variant ->
            appendVersionNameVersionCode(variant, defaultConfig)
        }

    }

    ...
}

...

def appendVersionNameVersionCode(variant, defaultConfig) {
    //check if staging variant
    if(variant.name == android.buildTypes.feature.name){
        def branch = hasProperty('branch') ? branch.replaceAll('origin/', '') : "UNKNOWN"
        def file = variant.packageApplication.outputFile
        def fileName = "myapp-FEATURE-" + branch + ".apk"
        variant.packageApplication.outputFile = new File(file.parent, fileName)
    }
}

然后调用gradle命令:

gradle assembleFeature --project-dir=/Path/To/myapp/ -Pbranch=origin/development

从中生成的两个文件是:

  1. APP-feature.apk
  2. MyApp的-FEATURE-development.apk
  3. 不需要文件1,我最终想要重命名该文件,而不是生成文件2的新文件。

    有什么想法吗?

1 个答案:

答案 0 :(得分:0)

原来,gradle总是打包2个apks。一个是对齐的,一个不是。

为了重命名对齐的apk文件,我不得不添加:

    if (variant.zipAlign) {
        newName = "myapp-FEATURE-" + branch + "-ALIGNED.apk"
        variant.outputFile = new File(file.parentFile, newName);
    }