Создайте версию apk с настройкой формата имени в Android Studio

Я хочу, чтобы .apk был создан со следующим форматом имени (с меткой времени).

Как его установить?

format: {app_name}{yyyymmddhis}.apk

Теперь он исправлен с именем {app_name}-{release}.apk

Ответ 1

в файле build.gradle, вы должны изменить/добавить buildTypes следующим образом:

buildTypes {
      release {
        signingConfig signingConfigs.release
        applicationVariants.all { variant ->
            def file = variant.outputFile
            def date = new Date();
            def formattedDate = date.format('yyyyMMddHHmmss')
            variant.outputFile = new File(
                                    file.parent, 
                                    file.name.replace("-release", "-" + formattedDate)
                                    )
        }
    }       
}


====== EDIT с Android Studio 1.0 ======

Если вы используете Android Studio 1.0, вы получите сообщение об ошибке:

Error:(78, 0) Could not find property 'outputFile' on com.and[email protected]67e7625f.

Вы должны изменить часть build.Types на это:

buildTypes {
        release {
            signingConfig signingConfigs.releaseConfig
            applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    def date = new Date();
                    def formattedDate = date.format('yyyyMMddHHmmss')
                    output.outputFile = new File(output.outputFile.parent, 
                                            output.outputFile.name.replace("-release", "-" + formattedDate)
                                            )
                }
            }
        }
    }

Ответ 2

В качестве примечания, мне бы очень хотелось узнать, где люди получают структуры объектов объектов gradle build.

Чтобы построить это, я использовал некоторые пробные версии и ошибки, немного Googling и this (что устарело)

android {
    ...

    buildTypes {
        debug {
            signingConfig signingConfigs.debug
        }
        release {
            signingConfig signingConfigs.release
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
        applicationVariants.all { variant ->
            variant.outputs.each { output ->
                def flavor = "default";
                if (variant.productFlavors.size() > 0)
                    flavor = variant.productFlavors.get(0);

                def initials = "DefaultFlavor";
                if (flavor.name == "flavor1")
                    initials = "F1";
                else if (flavor.name == "flavor2")
                    initials = "F2";

                def build = "Debug";
                if (variant.buildType.name == "release")
                    build = "Release"
                def finalName = variant.versionCode + "-" + initials + "-" + build + "-v" + flavor.versionName + "-MyAppName.apk";
                output.outputFile = new File(output.outputFile.parent, finalName)
            }
        }
    }
    ...
}

Хорошо. Итак, если вы хотите определить имена своего проекта libs, это быстрый script, убедитесь, что вы поместили его в каждую из ваших файлов библиотеки gradle.

android {
    ...

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 16
        versionCode 1
        versionName "1.0.4"
        project.version = versionName
    }

    libraryVariants.all { variant ->
        variant.outputs.each { output ->
            def outputFile = output.outputFile
            if (outputFile != null && outputFile.name.endsWith('.aar')) {
                def fileName = "${archivesBaseName}-v${version}.aar"
                output.outputFile = new File(outputFile.parent, fileName)
            }
        }
    }

    ...
}

Ответ 3

Вы должны что-то изменить. Выполнение динамически.

project.archivesBaseName = {app_name}{yyyymmddhis};

Но я прочитал, что это будет устаревшим.

Создание свойств по запросу (динамические свойства a.k.a.) устарело и должно быть удалено в Gradle 2.0. Устаревшее динамическое свойство: "archivesBaseName" в "корневом проекте" myapp ", значение:" AnotherName ".