J'ai besoin de savoir comment obtenir ou créer un numéro de build pour mon application Android. J'ai besoin du numéro de build à afficher dans l'interface utilisateur.
Dois-je faire quelque chose avec AndroidManifest.xml
?
android
android-emulator
android-manifest
Fahad Ali Shaikh
la source
la source
int versionCode = BuildConfig.VERSION_CODE;
et pour obtenir le nom de la versionString versionName = BuildConfig.VERSION_NAME;
Réponses:
Utilisation:
Et vous pouvez obtenir le code de version en utilisant ceci
la source
try... catch..
quandgetPackageInfo()
BuildConfig.VERSION_**
comme suggéré ici .Si vous utilisez le plugin Gradle / Android Studio, à partir de la version 0.7.0 , le code de version et le nom de version sont disponibles statiquement dans
BuildConfig
. Assurez-vous d'importer le package de votre application , et pas un autreBuildConfig
:Aucun objet contextuel nécessaire!
Assurez-vous également de les spécifier dans votre
build.gradle
fichier au lieu deAndroidManifest.xml
.la source
versionName
pour votre application dans votrebuild.gradle
fichier.import com.yourapppackage.android.BuildConfig
Version légèrement plus courte si vous voulez juste le nom de la version.
la source
Il vous faut deux parties: android: versionCode android: versionName
versionCode est un nombre, et chaque version de l'application que vous soumettez au marché doit avoir un nombre plus élevé que le dernier.
VersionName est une chaîne et peut être tout ce que vous voulez. C'est là que vous définissez votre application comme "1.0" ou "2.5" ou "2 Alpha EXTREME!" ou peu importe.
Exemple:
Kotlin:
Java:
la source
android:versionCode
etandroid:versionName
peut être trouvée ici: developer.android.com/tools/publishing/…this.getPackageName()
que0
vous venez de cracher, il n'y a aucune idée de la significationUtilisation de Gradle et BuildConfig
Obtenir la VERSION_NAME de BuildConfig
Oui, c'est aussi simple que ça maintenant.
Renvoie-t-il une chaîne vide pour VERSION_NAME?
Si vous obtenez une chaîne vide pour
BuildConfig.VERSION_NAME
ensuite continuer la lecture.J'ai continué à obtenir une chaîne vide
BuildConfig.VERSION_NAME
parce que je ne définissais pas leversionName
fichier dans mon fichier de génération de notes (j'ai migré d'ANT vers Gradle). Voici donc des instructions pour vous assurer que vous configurez votreVERSION_NAME
via Gradle.build.gradle
Remarque: Ceci est du magistral Jake Wharton .
Suppression
versionName
etversionCode
deAndroidManifest.xml
Et puisque vous avez défini le
versionName
etversionCode
dans lebuild.gradle
fichier maintenant, vous pouvez également les supprimer de votreAndroidManifest.xml
fichier, s'ils existent.la source
versionName "1.2"
, etBuildConfig.VERSION_NAME
revenezempty
. API> 21versionCode
etversionName
, respectivement. Uniquement parce que certains outils comme Code Push tentent d'obtenir votre numéro de version en analysant votrebuild.gradle
fichier et ne peuvent pas remplir une valeur dynamique.Voici une solution propre , basée sur la solution de scottyab (éditée par Xavi). Il montre comment obtenir le contexte en premier, s'il n'est pas fourni par votre méthode. De plus, il utilise plusieurs lignes au lieu d'appeler plusieurs méthodes par ligne. Cela vous facilite la tâche lorsque vous devez déboguer votre application.
Maintenant que vous avez reçu le nom de la version dans la chaîne
myVersionName
, vous pouvez le définir sur une TextView ou tout ce que vous voulez.la source
Throws PackageManager.NameNotFoundException if a package with the given name can not be found on the system.
. Cependant, je ne pouvais pas imaginer un scénario pour ça!Pour obtenir la version de l'application ou le code de construction qui est utilisé pour identifier l'apk par son code de version. Le code de version est utilisé pour détecter la configuration de build réelle au moment de la mise à jour, de la publication, etc.
Le nom de la version est utilisé pour afficher les utilisateurs ou les développeurs de la séquence de développement. Vous pouvez ajouter tout type de nom de version comme vous le souhaitez
la source
Utiliser la classe BuildConfig
build.gradle (application)
la source
Si vous utilisez PhoneGap, créez un plugin PhoneGap personnalisé:
Créez une nouvelle classe dans le package de votre application:
Dans le plugins.xml, ajoutez la ligne suivante:
Dans votre événement deviceready , ajoutez le code suivant:
Ensuite, vous pouvez obtenir l'attribut versionName en faisant:
Dérivé d' ici et ici .
la source
Kotlin one-liners
Assurez-vous d'importer
BuildConfig
dans votre classela source
Pour les utilisateurs de xamarin, utilisez ce code pour obtenir le nom et le code de la version
1) Nom de la version:
2) Code de version:
la source
Si vous souhaitez l'utiliser sur xml, ajoutez la ligne ci-dessous sur votre fichier de notes:
Et puis utilisez-le sur votre xml comme ceci:
la source
Non, vous n'avez rien à faire avec AndroidManifest.xml
Fondamentalement, le nom et le code de version de votre application dans le fichier de niveau de l'application , sous la balise defaultConfig :
Remarque: Lorsque vous souhaitez télécharger une application dans Playstore, vous pouvez donner n'importe quel nom comme nom de version, mais le code de version doit être différent du code de version actuel si cette application est déjà dans Play Store.
Utilisez simplement l'extrait de code suivant pour obtenir le code et le nom de la version de n'importe où dans votre application:
la source
pour Api 28, PackageInfo.versionCode est obsolète, utilisez donc ce code ci-dessous:
la source
Faites-le toujours avec le
try catch
bloc:la source
Voici la méthode pour obtenir le code de version:
la source
J'ai résolu cela en utilisant la classe Préférence.
la source
Il existe plusieurs façons d'obtenir
versionCode
et parversionName
programme.PackageManager
. C'est le meilleur moyen pour la plupart des cas.BuildConfig.java
. Mais notez que si vous accédez à ces valeurs dans la bibliothèque, il retournera la version de la bibliothèque, et non celle des applications, qui utilise cette bibliothèque. N'utilisez donc que dans des projets non liés à la bibliothèque!Il y a quelques détails, à l'exception de l'utilisation de la deuxième voie dans le projet de bibliothèque. Dans le nouveau plugin Android Gradle (3.0.0+), certaines fonctionnalités ont été supprimées . Donc, pour l'instant, c.-à-d. Définir une version différente pour différentes saveurs ne fonctionne pas correctement.
Manière incorrecte:
Le code ci-dessus définira correctement les valeurs dans
BuildConfig
, maisPackageManager
vous en recevrez0
etnull
si vous n'avez pas défini la version dans ladefault
configuration. Ainsi, votre application aura un0
code de version sur l'appareil.Il existe une solution de contournement - définir
apk
manuellement la version du fichier de sortie :la source
Ce code a été mentionné ci-dessus en morceaux mais ici, il est à nouveau tout inclus. Vous avez besoin d'un bloc try / catch car il peut lever une "NameNotFoundException".
J'espère que cela simplifie les choses pour quelqu'un sur la route. :)
la source
Quelqu'un qui n'a pas besoin des informations BuildConfig pour l'interface utilisateur de l'application souhaite cependant utiliser ces informations pour définir une configuration de travail CI ou d'autres, comme moi.
Il existe un fichier généré automatiquement, BuildConfig.java, sous le répertoire de votre projet tant que vous générez votre projet avec succès.
{ESPACE DE TRAVAIL} / build / généré / source / buildConfig / {debug | release} / {PACKAGE} /BuildConfig.java
Divisez les informations dont vous avez besoin par un script python ou d'autres outils. Voici un exemple:
Veuillez excuser ma capacité limitée en anglais, mais j'espère que cela vous aidera.
la source
la source
essaye celui-là:
la source
Première:
puis utilisez ceci:
la source
la source
Exemple d'utilisation de Fragments intérieurs.
la source
Exemple de Kotlin:
Ne remerciez pas :-)
la source
la source
Comme je ne devais obtenir que le code de version et vérifier si l'application est mise à jour ou non, si oui, j'ai dû lancer le Playstore pour en obtenir un. J'ai fait comme ça.
Ensuite, j'ai enregistré le code de version en utilisant les préférences partagées en créant une classe util.
la source
Comme en 2020: l'API 28 "versionCode" est obsolète pour que nous puissions utiliser "longVersionCode"
Exemple de code dans kotlin
la source
Utile pour les systèmes de build: un fichier généré avec votre apk appelé
output.json
contient un tableau d'informations pour chaque APK généré, y compris le nom de version et le code de version.par exemple
la source