Ich muss herausfinden, wie ich eine Build-Nummer für meine Android-Anwendung erhalte oder erstelle. Ich benötige die Build-Nummer, um sie in der Benutzeroberfläche anzuzeigen.
Muss ich etwas damit anfangen AndroidManifest.xml
?
android
android-emulator
android-manifest
Fahad Ali Shaikh
quelle
quelle
int versionCode = BuildConfig.VERSION_CODE;
und um den Versionsnamen zu erhaltenString versionName = BuildConfig.VERSION_NAME;
Antworten:
Verwenden:
Und Sie können den Versionscode erhalten, indem Sie diesen verwenden
quelle
try... catch..
wanngetPackageInfo()
BuildConfig.VERSION_**
wie hier vorgeschlagen verwenden .Wenn Sie das Gradle-Plugin / Android Studio ab Version 0.7.0 verwenden , sind Versionscode und Versionsname statisch in verfügbar
BuildConfig
. Stellen Sie sicher, dass Sie das Paket Ihrer App importieren und nicht ein anderesBuildConfig
:Kein Kontextobjekt erforderlich!
Stellen Sie außerdem sicher, dass Sie sie in Ihrer
build.gradle
Datei anstelle von angebenAndroidManifest.xml
.quelle
versionName
in Ihrerbuild.gradle
Datei eine für Ihre App angegeben haben .import com.yourapppackage.android.BuildConfig
Etwas kürzere Version, wenn Sie nur den Versionsnamen möchten.
quelle
Sie benötigen zwei Teile: android: versionCode android: versionName
versionCode ist eine Nummer, und jede Version der App, die Sie an den Markt senden, muss eine höhere Nummer als die letzte haben.
Versionsname ist eine Zeichenfolge und kann alles sein, was Sie möchten. Hier definieren Sie Ihre App als "1.0" oder "2.5" oder "2 Alpha EXTREME!" oder Wasauchimmer.
Beispiel:
Kotlin:
Java:
quelle
android:versionCode
undandroid:versionName
finden Sie hier: developer.android.com/tools/publishing/…this.getPackageName()
darstellt , was0
Sie gerade spucken, hat er keine Ahnung von der BedeutungVerwenden von Gradle und BuildConfig
Abrufen des VERSION_NAME von BuildConfig
Ja, so einfach ist das jetzt.
Gibt es eine leere Zeichenfolge für VERSION_NAME zurück?
Wenn Sie eine leere Zeichenfolge für erhalten,
BuildConfig.VERSION_NAME
lesen Sie weiter.Ich habe immer wieder eine leere Zeichenfolge erhalten,
BuildConfig.VERSION_NAME
weil ich dieversionName
in meiner Grade-Build-Datei nicht festgelegt habe (ich bin von ANT zu Gradle migriert). Hier finden Sie Anweisungen, um sicherzustellen, dass Sie IhreVERSION_NAME
Via Gradle einstellen .build.gradle
Hinweis: Dies ist von dem meisterhaften Jake Wharton .
Entfernen
versionName
undversionCode
ausAndroidManifest.xml
Und da Sie das
versionName
undversionCode
in derbuild.gradle
Datei jetzt festgelegt haben, können Sie sie auch aus IhrerAndroidManifest.xml
Datei entfernen , wenn sie vorhanden sind.quelle
versionName "1.2"
undBuildConfig.VERSION_NAME
kehrt zurückempty
. API> 21versionCode
bzw.versionName
eingestellt. Nur weil einige Tools wie Code Push versuchen, Ihre Versionsnummer durch Parsen Ihrerbuild.gradle
Datei abzurufen , und sie keinen dynamischen Wert vollbringen können.Hier ist eine saubere Lösung , basierend auf der Lösung von Scottyab (bearbeitet von Xavi). Es zeigt, wie Sie den Kontext zuerst abrufen, wenn er nicht von Ihrer Methode bereitgestellt wird. Darüber hinaus werden mehrere Zeilen verwendet, anstatt mehrere Methoden pro Zeile aufzurufen. Dies erleichtert das Debuggen Ihrer Anwendung.
myVersionName
Nachdem Sie den Versionsnamen in der Zeichenfolge erhalten haben, können Sie ihn auf eine Textansicht oder eine beliebige Textansicht festlegen.quelle
Throws PackageManager.NameNotFoundException if a package with the given name can not be found on the system.
. Ein Szenario dafür konnte ich mir allerdings nicht vorstellen!Um die App-Version oder den Build-Code zu erhalten, mit dem die apk anhand ihres Versionscodes identifiziert wird. Der Versionscode wird verwendet, um die tatsächliche Build-Konfiguration zum Zeitpunkt der Aktualisierung, Veröffentlichung usw. zu ermitteln.
Der Versionsname wird verwendet, um die Benutzer oder Entwickler der Entwicklungssequenz anzuzeigen. Sie können beliebig viele Versionsnamen hinzufügen
quelle
Verwenden Sie die BuildConfig-Klasse
build.gradle (App)
quelle
Wenn Sie PhoneGap verwenden, erstellen Sie ein benutzerdefiniertes PhoneGap-Plugin:
Erstellen Sie eine neue Klasse im Paket Ihrer App:
Fügen Sie in der Datei plugins.xml die folgende Zeile hinzu:
Fügen Sie in Ihrem deviceready-Ereignis den folgenden Code hinzu:
Anschließend können Sie das Attribut versionName wie folgt abrufen:
Abgeleitet von hier und hier .
quelle
Kotlin Einzeiler
Stellen Sie sicher, dass Sie
BuildConfig
in Ihre Klasse importierenquelle
Verwenden Sie für Xamarin-Benutzer diesen Code, um den Versionsnamen und den Code abzurufen
1) Versionsname:
2) Versionscode:
quelle
Wenn Sie es für XML verwenden möchten, fügen Sie die folgende Zeile in Ihre Gradle-Datei ein:
Und dann benutze es wie folgt auf deiner XML:
quelle
Nein, Sie müssen mit AndroidManifest.xml nichts tun
Grundsätzlich der Versionsname und der Versionscode Ihrer App in der Gradle- Datei auf App-Ebene unter dem Tag defaultConfig :
Hinweis: Wenn Sie eine App im Playstore hochladen möchten, können Sie einen beliebigen Namen als Versionsnamen angeben. Der Versionscode muss sich jedoch vom aktuellen Versionscode unterscheiden, wenn sich diese App bereits im Play Store befindet.
Verwenden Sie einfach das folgende Codefragment, um den Versionscode und den Versionsnamen von einer beliebigen Stelle in Ihrer App abzurufen:
quelle
Für Api 28 ist der PackageInfo.versionCode veraltet. Verwenden Sie daher den folgenden Code:
quelle
Mach es immer mit
try catch
Block:quelle
Hier ist die Methode zum Abrufen des Versionscodes:
quelle
Ich habe dies mithilfe der Voreinstellungsklasse gelöst.
quelle
Es gibt einige Möglichkeiten zu bekommen
versionCode
undversionName
programmatisch.PackageManager
. Dies ist in den meisten Fällen der beste Weg.BuildConfig.java
. Beachten Sie jedoch, dass beim Zugriff auf diese Werte in der Bibliothek die Bibliotheksversion und nicht die App-Version zurückgegeben wird, die diese Bibliothek verwendet. Also nur in Nicht-Bibliotheksprojekten verwenden!Es gibt einige Details, außer der Verwendung der zweiten Methode im Bibliotheksprojekt. Im neuen Android Gradle Plugin (3.0.0+) wurden einige Funktionen entfernt . Im Moment also, dh die Einstellung einer anderen Version für verschiedene Geschmacksrichtungen funktioniert nicht richtig.
Falscher Weg:
Der obige Code setzt die Werte korrekt ein
BuildConfig
, aber vonPackageManager
erhalten Sie0
undnull
wenn Sie die Version nicht in derdefault
Konfiguration festgelegt haben. Ihre App verfügt also über einen0
Versionscode auf dem Gerät.Es gibt eine Problemumgehung - stellen Sie die Version für die Ausgabedatei
apk
manuell ein:quelle
Dieser Code wurde oben in Teilen erwähnt, aber hier ist wieder alles enthalten. Sie benötigen einen Try / Catch-Block, da er möglicherweise eine "NameNotFoundException" auslöst.
Ich hoffe, dies vereinfacht die Dinge für jemanden auf der Straße. :) :)
quelle
Jemand, der keine BuildConfig-Informationen für die Benutzeroberfläche der Anwendung benötigt, möchte diese Informationen jedoch zum Festlegen einer CI-Jobkonfiguration oder anderer verwenden, wie ich.
Es gibt eine automatisch generierte Datei, BuildConfig.java, unter Ihrem Projektverzeichnis, solange Sie Ihr Projekt erfolgreich erstellen.
{WORKSPACE} / build / generate / source / buildConfig / {debug | release} / {PACKAGE} /BuildConfig.java
Teilen Sie die benötigten Informationen nach Python-Skript oder anderen Tools auf. Hier ist ein Beispiel:
Bitte entschuldigen Sie meine eingeschränkten Englischkenntnisse, hoffe aber, dass dies hilft.
quelle
quelle
Probier diese:
quelle
Zuerst:
und dann benutze dies:
quelle
quelle
Beispiel für die Verwendung innerhalb von Fragmenten.
quelle
Kotlin Beispiel:
Danke nicht :-)
quelle
quelle
Da ich nur den Versionscode erhalten und prüfen musste, ob die App aktualisiert wurde oder nicht, musste ich, wenn ja, den Playstore starten, um einen zu aktualisieren. Ich habe es so gemacht.
Dann habe ich den Versionscode mit gemeinsamen Einstellungen gespeichert, indem ich eine util-Klasse erstellt habe.
quelle
Wie im Jahr 2020: API 28 "versionCode" ist veraltet, sodass wir "longVersionCode" verwenden können.
Beispielcode in Kotlin
quelle
Nützlich für Build-Systeme: Es gibt eine mit Ihrer apk generierte Datei namens,
output.json
die ein Array von Informationen für jede generierte APK enthält, einschließlich versionName und versionCode.z.B
quelle