Frage Wie erhalte ich die Build- / Versionsnummer Ihrer Android-Anwendung?


Ich muss herausfinden, wie man eine Build-Nummer für meine Android-Anwendung erhält oder erstellt. Ich brauche die Build-Nummer, um sie auf der Benutzeroberfläche anzuzeigen.

Muss ich etwas damit machen? AndroidManifest.xml?


954
2018-01-06 14:43


Ursprung


Antworten:


Benutzen:

try {
    PackageInfo pInfo = this.getPackageManager().getPackageInfo(getPackageName(), 0);
    String version = pInfo.versionName;
} catch (PackageManager.NameNotFoundException e) {
    e.printStackTrace();
}

Und Sie können den Versionscode mit diesem erhalten

int verCode = pInfo.versionCode;

1777
2017-07-06 08:54



Wenn Sie das Gradle-Plugin / Android Studio verwenden, ab Version 0.7.0Versionscode und Versionsname sind statisch in verfügbar BuildConfig. Stellen Sie sicher, dass Sie das Paket Ihrer App importierenund nicht ein anderes BuildConfig:

import com.yourpackage.BuildConfig;
...
int versionCode = BuildConfig.VERSION_CODE;
String versionName = BuildConfig.VERSION_NAME;

Kein Kontextobjekt benötigt!

Stellen Sie außerdem sicher, dass Sie sie in Ihrem Konto angeben build.gradle Datei statt der AndroidManifest.xml.

defaultConfig {
    versionCode 1
    versionName "1.0"
}

1445
2018-01-14 16:45



Etwas kürzere Version, wenn Sie nur den Versionsnamen wünschen.

String versionName = context.getPackageManager()
    .getPackageInfo(context.getPackageName(), 0).versionName;

402
2018-04-26 10:22



Verwenden von Gradle und BuildConfig

Abrufen der VERSION_NAME von BuildConfig

BuildConfig.VERSION_NAME

Ja, so einfach ist es jetzt.

Gibt es eine leere Zeichenfolge für VERSION_NAME zurück?

Wenn Sie eine leere Zeichenfolge für erhalten BuildConfig.VERSION_NAME dann lesen Sie weiter.

Ich habe immer eine leere Saite bekommen BuildConfig.VERSION_NAME weil ich das nicht eingestellt habe versionName in meiner Grade-Build-Datei (ich migrierte von ANT nach Gradle). Also, hier sind Anweisungen, um sicherzustellen, dass Sie Ihre Einstellungen vornehmen VERSION_NAME über Gradle.

build.gradle

def versionMajor = 3
def versionMinor = 0
def versionPatch = 0
def versionBuild = 0 // bump for dogfood builds, public betas, etc.

android {

  defaultConfig {
    versionCode versionMajor * 10000 + versionMinor * 1000 + versionPatch * 100 + versionBuild

    versionName "${versionMajor}.${versionMinor}.${versionPatch}"
  }

}

Hinweis: Dies ist vom Meister Jake Wharton.

Entfernen versionName und versionCode von AndroidManifest.xml

Und seit du das eingestellt hast versionName und versionCode in dem build.gradle Datei jetzt können Sie sie auch von Ihrem entfernen AndroidManifest.xml Datei, wenn sie da sind.


125
2018-02-05 19:13



Es gibt zwei Teile, die du brauchst: Android: Versionscode Android: Versionsname

versionCode ist eine Nummer, und jede Version der App, die Sie an den Market senden, muss eine höhere Nummer als die letzte haben.

VersionName 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:

Um im Code darauf zuzugreifen, tun Sie etwas wie:

PackageManager manager = this.getPackageManager();
PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0);
Toast.makeText(this,
     "PackageName = " + info.packageName + "\nVersionCode = "
       + info.versionCode + "\nVersionName = "
       + info.versionName + "\nPermissions = " + info.permissions, Toast.LENGTH_SHORT).show();

122
2018-02-08 04:31



BuildConfig.VERSION_NAME //version name from your build file
BuildConfig.VERSION_CODE //version code from your build file

Ich sehe nicht die Notwendigkeit, es vom Paketmanager zu bekommen


55
2018-01-29 04:05



Hier ist ein saubere Lösungbasierend auf der Lösung von Scottyab (herausgegeben von Xavi). Es zeigt, wie der Kontext zuerst angezeigt wird, wenn er nicht von Ihrer Methode bereitgestellt wird. Außerdem verwendet es mehrere Zeilen anstatt mehrere Methoden pro Zeile aufzurufen. Dies macht es einfacher, wenn Sie Ihre Anwendung debuggen müssen.

Context context = getApplicationContext(); // or activity.getApplicationContext()
PackageManager packageManager = context.getPackageManager();
String packageName = context.getPackageName();

String myVersionName = "not available"; // initialize String

try {
    myVersionName = packageManager.getPackageInfo(packageName, 0).versionName;
} catch (PackageManager.NameNotFoundException e) {
    e.printStackTrace();
}

Jetzt haben Sie den Versionsnamen in der Zeichenfolge erhalten myVersionName, können Sie es zu einem TextView oder was auch immer Sie möchten ..

// set version name to a TextView
TextView tvVersionName = (TextView) findViewById(R.id.tv_versionName);
tvVersionName.setText(myVersionName);

50
2017-08-21 08:54