Intereting Posts
Выключить разрыв строки в logcat в adt 20 Android ListView сохраняет старые элементы после изменений адаптера Просмотр в представлении просмотра пейджера между предыдущим и следующим видом Android: включение и обслуживание Прокрутка Android recyclerview вверх Async / ждет плохой практики под Android? Android «Только исходный поток, создавший иерархию представлений, может коснуться его представлений». Error in Fragment Android Studio 2.2 Предварительный просмотр всех размеров экрана отсутствует Объявления Admob bannner не принимают полную ширину Как вызвать onListItemClick в ListFragment Android: поддерживаемый размер предварительного просмотра камеры имеет неправильное соотношение сторон Как отправить электронную почту на Android? Начать сервис извещения Пользовательский ContentProvider – openInputStream (), openOutputStream () Как получить из Parcel CharSequence, который был сохранен с помощью TextUtils.writeToParcel (…)?

Android: добавьте дату / время для выхода gradle apk filename

Как добавить отметку даты / времени в название файла выходного файла Gradle Android?

Должен быть как project_v0.5.0_201503110212_public.apk

Уже посмотрел

  • Как добавить дату к версииNameSuffix по градле
  • Как передать аргументы из командной строки в gradle

Я предполагаю, что вы хотите его в указанном вами формате, так что вот одно из возможных решений.

В вашем файле gradle вы можете определить новую функцию, чтобы получить строку времени даты, как вы этого хотите:

import java.text.DateFormat import java.text.SimpleDateFormat def getDateTime() { DateFormat df = new SimpleDateFormat("YYYYMMDDHHmm"); return df.format(new Date()); } 

Тогда для всех вариантов вы можете просто запустить это:

 android { //... buildTypes { //... android.applicationVariants.all { variant -> variant.outputs.each { output -> def file = output.outputFile output.outputFile = new File(file.parent, file.name.replace(".apk", "-" + getDateTime() + ".apk")) } } } } 

Обратите внимание, что это действительно не выводит имя apk, как вы опубликовали, но я думаю, этого достаточно, чтобы помочь вам.

Этот код работает для меня.

  applicationVariants.all { variant -> variant.outputs.each { output -> def project = "Your App Name" def SEP = "_" def flavor = variant.productFlavors[0].name def buildType = variant.variantData.variantConfiguration.buildType.name def version = variant.versionName def date = new Date(); def formattedDate = date.format('ddMMyy_HHmm') def newApkName = project + SEP + flavor + SEP + buildType + SEP + version + SEP + formattedDate + ".apk" output.outputFile = new File(output.outputFile.parent, newApkName) } } 

Это моя надежда помочь вам

 android.applicationVariants.all { variant -> variant.outputs.each { output -> def file = output.outputFile output.outputFile = new File( (String) file.parent, (String) file.name.replace( file.name, // alter this string to change output file name "APigLive_Android_" + variant.name + "_" + variant.versionName + "_" + releaseTime() + ".apk" ) ) } } def releaseTime(){ return new Date().format("MM:dd:HH:mm", TimeZone.getTimeZone("GMT")) } 

Я также добавляю форматированную дату в мою сборку. На первом месте я использовал какой-то «сейчас» с new Date() , но это приводит к проблемам при запуске сборки с помощью Android Studio, как в одном из комментариев выше. Я решил использовать временную метку последней фиксации. Я нашел здесь некоторое вдохновение: https://jdpgrailsdev.github.io/blog/2014/10/14/spring_boot_gradle_git_info.html

Добавление метки времени выполняется следующим образом:

 def getLatestCommitTimeStamp() { def revision = 'git rev-list --max-count 1 --timestamp HEAD'.execute().text.trim() def gitCommitMillis = java.util.concurrent.TimeUnit.SECONDS.toMillis(revision.split(' ').first() as long) return new Date(gitCommitMillis).format("_HH.mm.ss_dd-MM-yyyy", TimeZone.getTimeZone('Europe/Berlin')) } 

Моя часть переименования выглядит так:

 android.applicationVariants.all { variant -> if (variant.buildType.name == 'release') { def lastCommitFormattedDate = getLatestCommitTimeStamp() variant.outputs.each { output -> def alignedOutputFile = output.outputFile def unalignedOutputFile = output.packageApplication.outputFile // Customise APK filenames (to include build version) if (variant.buildType.zipAlignEnabled) { // normal APK output.outputFile = new File(alignedOutputFile.parent, alignedOutputFile.name.replace(".apk", "-v" + defaultConfig.versionName + "-" + variant.buildType.name.toUpperCase() + "-${gitSha}" + lastCommitFormattedDate + ".apk").replace("-" + variant.buildType.name, "").replace(project.name, "otherName")) } // 'unaligned' APK output.packageApplication.outputFile = new File(unalignedOutputFile.parent, unalignedOutputFile.name.replace(".apk", "-v" + defaultConfig.versionName + "-" + variant.buildType.name.toUpperCase() + "-${gitSha}" + lastCommitFormattedDate + ".apk").replace("-" + variant.buildType.name, "").replace(project.name, "otherName")) } }