Я хочу, чтобы .apk
был создан со следующим форматом имени (с меткой времени).
Как его установить?
format: {app_name}{yyyymmddhis}.apk
Теперь он исправлен с именем {app_name}-{release}.apk
Я хочу, чтобы .apk
был создан со следующим форматом имени (с меткой времени).
Как его установить?
format: {app_name}{yyyymmddhis}.apk
Теперь он исправлен с именем {app_name}-{release}.apk
в файле 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)
)
}
}
}
}
В качестве примечания, мне бы очень хотелось узнать, где люди получают структуры объектов объектов 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)
}
}
}
...
}
Вы должны что-то изменить. Выполнение динамически.
project.archivesBaseName = {app_name}{yyyymmddhis};
Но я прочитал, что это будет устаревшим.
Создание свойств по запросу (динамические свойства a.k.a.) устарело и должно быть удалено в Gradle 2.0. Устаревшее динамическое свойство: "archivesBaseName" в "корневом проекте" myapp ", значение:" AnotherName ".