Переименование выходного файла apk gradle, но есть 2 apk

Я пытаюсь назвать файл APK моего приложения на основе ветки git, которая работает, передавая параметр с помощью jenkins. Однако в итоге я получаю два APK, и это нежелательно, потому что одна из задач Gradle, которые у меня есть, загружает APK в распределенный список. Весь смысл переименования этого 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. приложение-feature.apk
  2. myapp-FEATURE-development.apk

Файл 1 нежелателен, и в конечном итоге я бы хотел переименовать этот файл вместо создания нового файла, который является файлом 2.

Какие-нибудь мысли?


person tango whiskey double    schedule 24.09.2014    source источник


Ответы (1)


Оказывается, Gradle всегда упаковывает 2 apk. Тот, который соответствует, и тот, который не является.

Чтобы переименовать выровненный файл apk, мне пришлось добавить это:

    if (variant.zipAlign) {
        newName = "myapp-FEATURE-" + branch + "-ALIGNED.apk"
        variant.outputFile = new File(file.parentFile, newName);
    }
person tango whiskey double    schedule 24.09.2014
comment
Вы уверены, что это вариант.zipAlign, а не output.zipAlign? Поскольку свойство zipAlign on variant дает мне ошибку «свойство не найдено» в Android Studio/Gradle версии 1.0.0. - person AgentKnopf; 23.01.2015
comment
последняя версия gradle изменила свойство zipAlign на zipAlignEnabled, поэтому для оценки вам нужно использовать variant.zipAlignEnabled. - person Tinker Sun; 18.03.2015
comment
Студия Android не находит этот apk автоматически и сообщает об ошибке «Локальный путь не существует». Я думаю, это ошибка Android Studio или? - person Ewoks; 24.09.2015