J'essaie d'utiliser Gradle pour définir le nom de l'application. Veuillez regarder cet extrait de build.gradle:
Android {
...
defaultConfig {
...
versionCode getVersionCode()
versionName getVersionName()
...
}
...
}
...
int getVersionCode() {
return 1
}
def getVersionName() {
return "1.0"
}
Android Studio dit
'versionCode' cannot be applied to 'Java.lang.Integer'
'versionName' cannot be applied to 'Java.lang.String'
et lorsque j'installe l'application sur un appareil, elle n'a pas du tout versionCode et versionName.
Le problème est clair pour moi mais je ne sais pas comment le résoudre.
Veuillez conseiller.
[~ # ~] modifié [~ # ~]
Afin de définir dynamiquement la version de votre application, spécifiez une méthode personnalisée avec def et appelez-la, comme telle:
def computeVersionName() {
return "2.0"
}
Android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
defaultConfig {
versionCode 12
versionName computeVersionName()
minSdkVersion 16
targetSdkVersion 16
}
}
Voir ici pour en savoir plus.
Assurez-vous de ne pas utiliser de noms de fonctions qui pourraient entrer en conflit avec des getters existants dans la portée donnée. Par exemple, defaultConfig { ... }
Appelant getVersionName()
utilisera automatiquement le getter defaultConfig.getVersionName()
au lieu de la méthode personnalisée.
Cela ne résout pas votre problème, mais cela peut être une solution différente.
Vous pouvez utiliser gradle.properties dans votre projet racine et définir:
VERSION_NAME=1.2.1
VERSION_CODE=26
Ensuite, dans votre build.gradle, vous pouvez utiliser:
versionName project.VERSION_NAME
versionCode Integer.parseInt(project.VERSION_CODE)
Voici un build.gradle que j'utilise basé sur des idées de 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}"
}
....
}
Si vous utilisez un fichier gradle.properties
Pour stocker les versions de build partagées, assurez-vous d'utiliser la fonction toInteger()
pour le code de version, les versions compilées/min et sd cible.
Voir cet article pour plus d'informations: https://medium.com/@ALi.muzaffar/gradle-configure-variables-for-all-Android-project-modules-in-one-place-5a6e56cd384e#.yl1x0ziqe