Je voudrais avoir un moyen de référencer le numéro de version du manifeste du projet dans la partie principale du code. Ce que j'ai fait jusqu'à présent, c'est de lier le numéro de version dans un fichier XML String au manifeste (@ string / Version). Ce que je voudrais faire, c'est le faire dans l'autre sens, lier une variable XML chaîne à la version du manifeste. La raison? Je voudrais seulement avoir à changer le numéro de version dans un seul endroit, le fichier manifeste. Y a-t-il un moyen de faire ça? Merci!
android
android-manifest
android-xml
PearsonArtPhoto
la source
la source
Réponses:
Je crois que cela a déjà été répondu ici .
OU
la source
String versionName = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
Il n'existe pas de moyen de sortir directement la version, mais deux solutions de contournement peuvent être effectuées.
La version peut être stockée dans une chaîne de ressources et placée dans le manifeste par:
On pourrait créer une vue personnalisée et la placer dans le XML. La vue utiliserait ceci pour attribuer le nom:
L'une ou l'autre de ces solutions permettrait de placer le nom de la version en XML. Malheureusement, il n'y a pas de solution simple et agréable, comme
android.R.string.version
ou quelque chose comme ça.la source
The android:versionName cannot be a resource url, it must be a literal string
AndroidStudio
, le manifesteversionName
est remplacé par celui défini dans lebuild.gradle
fichierVous pouvez utiliser les
versionName
ressources XML in, telles que les présentations d'activités. Créez d'abord une ressource de chaîne dans leapp/build.gradle
avec l'extrait de code suivant dans leandroid
nœud:Ainsi, tout
build.gradle
le contenu du fichier peut ressembler à ceci:Ensuite, vous pouvez utiliser
@string/versionName
dans le XML. Android Studio le marquera en rouge, mais l'application se compilera sans problème. Par exemple, cela peut être utilisé comme ceci dansapp/src/main/res/xml/preferences.xml
:la source
J'ai résolu ce problème en étendant la classe Preference.
Puis dans mes préférences XML:
la source
J'utilise
BuildConfig.VERSION_NAME.toString();
. Quelle est la différence entre cela et l'obtenir à partir du packageManager?Aucune solution basée sur XML n'a fonctionné pour moi, désolé.
la source
SI vous utilisez Gradle, vous pouvez utiliser le fichier build.gradle pour ajouter par programme de la valeur aux ressources xml au moment de la compilation.
Exemple de code extrait de: https://medium.com/@manas/manage-your-android-app-s-versioncode-versionname-with-gradle-7f9c5dcf09bf
maintenant utiliser
@string/app_version
selon les besoins dans XMLIl s'ajoutera
.debug
au nom de la version comme décrit dans l'article lié en mode débogage.la source
Vous ne pouvez pas l'utiliser à partir du XML.
Vous devez étendre le widget que vous utilisez dans le XML et ajouter la logique pour définir le texte en utilisant ce qui est mentionné dans la réponse de Konstantin Burov.
la source
La solution la plus simple est d'utiliser
BuildConfig
.J'utilise
BuildConfig.VERSION_NAME
dans mon application.Vous pouvez également utiliser
BuildConfig.VERSION_CODE
pour obtenir le code de version.la source
En retard dans le jeu, mais vous pouvez le faire sans
@string/xyz
en utilisant?android:attr
la source
<Preference android:title="Version" android:summary="?android:attr/versionName" ></Preference>
mais montrer comme?16843292
. Qu'est-ce qui ne va pas?