Установите версию приложения для Android с помощью Gradle
Я пытаюсь использовать Gradle для установки имени приложения. Пожалуйста, посмотрите на этот фрагмент build.gradle:
android {
...
defaultConfig {
...
versionCode getVersionCode()
versionName getVersionName()
...
}
...
}
...
int getVersionCode() {
return 1
}
def getVersionName() {
return "1.0"
}
Android Studio говорит
'versionCode' cannot be applied to 'java.lang.Integer'
'versionName' cannot be applied to 'java.lang.String'
и когда я устанавливаю приложение на устройство, он вообще не имеет версии Code и versionName.
Проблема ясна для меня, но я не знаю, как ее решить.
Пожалуйста, совет.
Ответы
Ответ 1
EDITED
Чтобы динамически определять вашу версию приложения, укажите собственный метод с именем def и вызовите его:
def computeVersionName() {
return "2.0"
}
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
defaultConfig {
versionCode 12
versionName computeVersionName()
minSdkVersion 16
targetSdkVersion 16
}
}
Подробнее см. здесь.
Не используйте имена функций, которые могут противоречить существующим геттерам в данной области. Например, defaultConfig { ... }
вызов getVersionName()
будет автоматически использовать getter defaultConfig.getVersionName()
вместо настраиваемого метода.
Ответ 2
Это не решит вашу проблему, но это может быть другое решение.
Вы можете использовать gradle.properties внутри вашего корневого проекта и определить:
VERSION_NAME=1.2.1
VERSION_CODE=26
Затем в вашем build.gradle вы можете использовать:
versionName project.VERSION_NAME
versionCode Integer.parseInt(project.VERSION_CODE)
Ответ 3
Вот build.gradle, который я использую на основе идей из JakeWharton:
apply plugin: 'com.android.application'
def versionMajor = 1
def versionMinor = 2
def versionPatch = 0
def gitVersion() {
def counter = 0
def process = "git rev-list master --first-parent --count".execute()
return process.text.toInteger()
}
repositories {
mavenCentral()
}
android {
compileSdkVersion 19
buildToolsVersion '19.1.0'
defaultConfig {
applicationId 'my.project.com'
minSdkVersion 14
targetSdkVersion 19
versionCode gitVersion()
versionName "${versionMajor}.${versionMinor}.${versionPatch}"
}
....
}
Ответ 4
Если вы используете файл gradle.properties
для хранения версий разделяемой сборки, заставьте использовать функцию toInteger()
для кода версии, скомпилированных/мин и целевых версий sd.
См. это сообщение для получения дополнительной информации: https://medium.com/@ali.muzaffar/gradle-configure-variables-for-all-android-project-modules-in-one-place-5a6e56cd384e#.yl1x0ziqe