Ich möchte eine Möglichkeit haben, auf die Manifest-Versionsnummer des Projekts im Hauptteil des Codes zu verweisen. Bisher habe ich die Versionsnummer in einer String-XML-Datei mit dem Manifest (@ string / Version) verknüpft. Was ich tun möchte, ist es umgekehrt zu machen, eine String-XML-Variable mit der Version im Manifest zu verknüpfen. Der Grund? Ich möchte nur die Versionsnummer an einem Ort ändern müssen, der Manifestdatei. Gibt es eine Möglichkeit, dies zu tun? Vielen Dank!
android
android-manifest
android-xml
PearsonArtPhoto
quelle
quelle
Antworten:
Ich glaube , dass schon beantwortet wurde hier .
ODER
quelle
String versionName = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
Es gibt keine Möglichkeit, die Version direkt herauszubringen, aber es gibt zwei Problemumgehungen, die durchgeführt werden könnten.
Die Version kann in einer Ressourcenzeichenfolge gespeichert und in das Manifest eingefügt werden durch:
Man könnte eine benutzerdefinierte Ansicht erstellen und sie in das XML einfügen. Die Ansicht würde dies verwenden, um den Namen zuzuweisen:
Jede dieser Lösungen würde es ermöglichen, den Versionsnamen in XML zu platzieren. Leider gibt es keine schöne einfache Lösung, so
android.R.string.version
oder so.quelle
The android:versionName cannot be a resource url, it must be a literal string
AndroidStudio
das ManifestversionName
wird von dem in derbuild.gradle
Datei festgelegten überschriebenSie können die
versionName
in XML-Ressourcen verwenden, z. B. Aktivitätslayouts. Erstellen Sie zunächst eine Zeichenfolgenressource imapp/build.gradle
mit dem folgenden Snippet imandroid
Knoten:Der gesamte
build.gradle
Dateiinhalt kann also folgendermaßen aussehen:Dann können Sie
@string/versionName
in der XML verwenden. Android Studio markiert es rot, aber die App wird ohne Probleme kompiliert. Dies kann beispielsweise folgendermaßen verwendet werden inapp/src/main/res/xml/preferences.xml
:quelle
Ich habe dieses Problem durch Erweitern der Voreinstellungsklasse gelöst.
Dann in meinen Einstellungen XML:
quelle
Ich benutze
BuildConfig.VERSION_NAME.toString();
. Was ist der Unterschied zwischen dem und dem Abrufen vom packageManager?Für mich haben leider keine XML-basierten Lösungen funktioniert.
quelle
Wenn Sie Gradle verwenden, können Sie die Datei build.gradle verwenden, um den XML-Ressourcen beim Kompilieren programmgesteuert einen Wert hinzuzufügen.
Beispielcode extrahiert aus: https://medium.com/@manas/manage-your-android-app-s-versioncode-versionname-with-gradle-7f9c5dcf09bf
jetzt benutzen
@string/app_version
nach Bedarf in XML verwendenIm
.debug
Debug-Modus wird der Versionsname wie im verlinkten Artikel beschrieben hinzugefügt .quelle
Sie können es nicht aus dem XML verwenden.
Sie müssen das Widget, das Sie in XML verwenden, erweitern und die Logik hinzufügen, um den Text anhand der Angaben in der Antwort von Konstantin Burov festzulegen.
quelle
Die einfachste Lösung ist die Verwendung
BuildConfig
.Ich benutze
BuildConfig.VERSION_NAME
in meiner Anwendung.Sie können auch
BuildConfig.VERSION_CODE
den Versionscode abrufen.quelle
Spät zum Spiel, aber Sie können es ohne
@string/xyz
mit tun?android:attr
quelle
<Preference android:title="Version" android:summary="?android:attr/versionName" ></Preference>
, aber zeige als?16843292
.Was ist falsch?