App versionieren

Die Versionsverwaltung ist ein wichtiger Bestandteil des Upgrades und der Wartung deiner App . Die Versionsverwaltung ist aus folgenden Gründen wichtig:

  • Nutzende benötigen spezifische Informationen zur App-Version, auf ihren Geräten installiert ist und welche Upgrade-Versionen Installation.
  • Andere Apps, einschließlich anderer Apps, unter denen Sie veröffentlichen eine Suite haben, müssen Sie die Version Ihrer App im System abfragen, um um die Kompatibilität zu ermitteln und Abhängigkeiten zu identifizieren.
  • Dienste, für die Sie Ihre App(s) veröffentlichen, müssen möglicherweise auch Ihre App nach ihrer Version abfragen, damit sie Nutzenden. Ein Publishing-Dienst muss unter Umständen auch die App-Version prüfen, die Kompatibilität ermitteln und Upgrade-/Downgrade-Beziehungen aufbauen.

Das Android-System schützt deine Daten mithilfe der Versionsinformationen deiner App Downgrades vorbeugen. Die verwendet das System keine Informationen zur App-Version, um Einschränkungen Upgrades oder die Kompatibilität von Drittanbieter-Apps. Ihre App muss und Nutzer darüber zu informieren.

Das Android-System erzwingt die Versionskompatibilität des Systems, durch die Einstellung minSdk in den Build-Dateien. Diese Einstellung ermöglicht eine App, die minimale System-API anzugeben, mit der sie kompatibel ist. Weitere Informationen zu den API-Anforderungen Siehe Anforderungen an das API-Level festlegen.

Die Versionsanforderungen unterscheiden sich je nach Projekt. Viele Entwickler überlegen jedoch, Die semantische Versionsverwaltung ist eine gute Grundlage für eine Versionsverwaltungsstrategie.

Informationen zur App-Version festlegen

Legen Sie Werte für die Version fest, um die Versionsinformationen für Ihre App zu definieren Einstellungen in den Gradle-Build-Dateien:

Cool

    android {
      namespace 'com.example.testapp'
      compileSdk 33

      defaultConfig {
          applicationId "com.example.testapp"
          minSdk 24
          targetSdk 33
          versionCode 1
          versionName "1.0"
          ...
      }
      ...
    }
    ...
    

Kotlin

    android {
      namespace = "com.example.testapp"
      compileSdk = 33

      defaultConfig {
          applicationId = "com.example.testapp"
          minSdk = 24
          targetSdk = 33
          versionCode = 1
          versionName = "1.0"
          ...
      }
      ...
    }
    ...
      

Versionseinstellungen

Definieren Sie Werte für die beiden verfügbaren Versionseinstellungen: versionCode und versionName.

versionCode
Eine positive Ganzzahl, die als interne Versionsnummer verwendet wird. Anhand dieser Zahl kann bestimmt werden, ob eine Version die neueste ist. als andere, wobei höhere Zahlen auf neuere Versionen hindeuten. Dies ist und nicht die Versionsnummer, die Nutzern angezeigt wird. wird diese Zahl vom versionName-Einstellung. Das Android-System nutzt die versionCode-Wert zum Schutz vor Downgrades, indem verhindert wird, Nutzer daran gehindert werden, ein APK mit einer niedrigeren versionCode zu installieren als die aktuell auf dem Gerät installierte Version.

Der Wert ist eine positive Ganzzahl, damit andere Apps programmatisch auswerten können um beispielsweise eine Upgrade- oder Downgrade-Beziehung zu prüfen. Sie können Setzen Sie den Wert auf eine beliebige positive Ganzzahl. Stellen Sie jedoch sicher, jeder nachfolgende Release deiner App einen höheren Wert verwendet.

Hinweis:Im Rahmen von Google Play haben Sie versionCode ist 2100000000.

Du kannst mit einer versionCode, die du hast, kein APK in den Play Store hochladen die bereits für eine vorherige Version verwendet wurden.

Hinweis:In einigen Situationen kann es sinnvoll sein, Lade eine Version deiner App hoch, die eine niedrigere versionCode als die meisten hat aktuelle Version. Wenn Sie beispielsweise mehrere APKs veröffentlichen, haben Sie möglicherweise vordefinierte versionCode-Bereiche für bestimmte APKs. Weitere Informationen Zuweisen von versionCode-Werten für mehrere APKs, siehe Versionscodes zuweisen

Normalerweise veröffentlichen Sie die erste Version Ihrer App versionCode auf „1“ gesetzt und dann Wert monoton erhöhen unabhängig davon, ob sie eine Haupt- oder Nebenversion. Das bedeutet, dass der Wert versionCode nicht unbedingt der App-Release-Version ähneln, für den Nutzer sichtbar ist. Apps und Publishing-Dienste sollten diese Version nicht anzeigen Mehrwert für Nutzende zu schaffen.

versionName

Ein String, der als Versionsnummer verwendet wird, die Nutzenden. Diese Einstellung kann als Rohstring oder als Verweis auf einen String-Ressource.

Der Wert ist ein String, mit dem Sie die App-Version als <Hauptfach>.<Minderwert>.<Punkt> oder eine andere Art von absolute oder relative Versionskennung. versionName ist der einzige Wert die für Nutzer sichtbar sind.

Versionswerte definieren

Sie können Standardwerte für diese Einstellungen definieren, indem Sie sie in die Block defaultConfig {}, verschachtelt in android {} -Block der build.gradle- oder build.gradle.kts-Datei deines Moduls ein. Sie können überschreiben Sie diese Standardwerte für verschiedene Versionen Ihrer App, indem Sie separate für einzelne Build-Typen oder Produkt-Geschmacksrichtungen. Die folgende Datei enthält die Einstellungen für versionCode und versionName im defaultConfig {}-Block und productFlavors {}-Block.

Diese Werte werden dann während des Build-Prozesses in der Manifestdatei Ihrer App zusammengeführt.

Cool

    android {
        ...
        defaultConfig {
            ...
            versionCode 2
            versionName "1.1"
        }
        productFlavors {
            demo {
                ...
                versionName "1.1-demo"
            }
            full {
                ...
            }
        }
    }
    

Kotlin

    android {
        ...
        defaultConfig {
            ...
            versionCode = 2
            versionName = "1.1"
        }
        productFlavors {
            create("demo") {
                ...
                versionName = "1.1-demo"
            }
            create("full") {
                ...
            }
        }
    }
    

Im defaultConfig {}-Block dieses Beispiels Der Wert versionCode gibt an, dass das aktuelle APK die 2. Release der App an und der String versionName gibt an, dass sie Nutzern als Version 1.1 angezeigt wird. In dieser Datei sind auch zwei Geschmacksrichtungen für Produkte definiert: „Demo“ und „voll“. Da die „Demo“ „Produktgeschmack“ definiert versionName als „1.1-demo“, die „Demo“ Build verwendet dieses versionName anstelle des Standardwerts. Das „volle“ Der Produktflaschenblock definiert versionName nicht, sodass er verwendet den Standardwert „1.1“.

Hinweis:Wenn die App-Version in Ihrer App direkt im <manifest>-Element, die Versionswerte im Gradle-Build die Einstellungen im Manifest überschreiben. Außerdem ist die Definition dieser können Sie in den Gradle-Build-Dateien verschiedene Werte für verschiedene Versionen Ihrer App. Für mehr Flexibilität und Überschreiben beim Zusammenführen des Manifests möglich, entfernen Sie diese aus dem Element <manifest> und definieren Sie Ihre Versionseinstellungen stattdessen in den Gradle-Build-Dateien.

Das Android-Framework bietet eine API, mit der Sie das System abfragen können. finden Sie Versionsinformationen zu Ihrer App. Um Versionsinformationen zu erhalten, verwenden Sie die PackageManager.getPackageInfo(java.lang.String, int)-Methode.

Anforderungen an das API-Level angeben

Wenn für Ihre App eine bestimmte Android-Version Plattform, können Sie diese Versionsanforderung in den Einstellungen der API-Ebene in der Datei build.gradle oder build.gradle.kts der App. Während der Erstellung werden diese Einstellungen in der Manifestdatei Ihrer App zusammengeführt. API-Ebene angeben dass Ihre App nur auf Geräten installiert werden kann, mit einer kompatiblen Version der Android-Plattform.

Hinweis:Wenn Sie die Anforderungen an das API-Level direkt in der Manifest-Datei der App ist, werden die entsprechenden Einstellungen in den Build-Dateien die Einstellungen in der Manifestdatei überschreiben. Außerdem ist die Definition dieser in den Gradle-Build-Dateien können Sie verschiedene Werte für verschiedene Versionen Ihrer App. Für mehr Flexibilität und Überschreiben beim Zusammenführen des Manifests möglich, entfernen Sie diese Attribute aus dem Element <uses-sdk> und definieren Ihre API in den Gradle-Build-Dateien.

Es sind zwei Einstellungen für die API-Ebene verfügbar:

  • minSdk – Die Mindestversion der Android-Plattform, auf der die App ausgeführt wird, der API-Level-ID der Plattform.
  • targetSdk – API-Ebene auf denen die App ausgeführt werden soll. In einigen Fällen kann das die im Ziel definierte Manifestelemente oder Verhaltensweisen verwendet API-Ebene zu verwenden, anstatt nur die definierten für das Mindest-API-Level.

Um Standardanforderungen an das API-Level in einem build.gradle oder build.gradle.kts-Datei hinzufügen, fügen Sie eine oder mehrere API-Level-Einstellungen zum Block defaultConfig{}, verschachtelt im Block android {}. Sie können diese Standardwerte auch für verschiedene App-Versionen erstellen, indem Sie die Einstellungen für Build-Typen oder Produkt-Geschmacksrichtungen hinzufügen.

Die folgende Datei gibt Standardeinstellungen an. Einstellungen für minSdk und targetSdk im defaultConfig {} blockiert und überschreibt minSdk für eine Produktsorte:

Cool

android {
    ...
    defaultConfig {
        ...
        minSdk 21
        targetSdk 33
    }
    productFlavors {
        main {
            ...
        }
        afterNougat {
            ...
            minSdk 24
        }
    }
}

Kotlin

android {
    ...
    defaultConfig {
        ...
        minSdk = 21
        targetSdk = 33
    }
    productFlavors {
        create("main") {
            ...
        }
        create("afterNougat") {
            ...
            minSdk = 24
        }
    }
}

Bei der Vorbereitung der App-Installation prüft das System den Wert und vergleicht sie mit der Systemversion. Wenn die Der Wert von minSdk ist größer als die Systemversion, der Wert die Installation der App verhindert.

Wenn Sie diese Einstellungen nicht festlegen, geht das System davon aus, dass Ihre App ist mit allen Plattformversionen kompatibel. Dies entspricht der Einstellung von minSdk auf 1.

Weitere Informationen finden Sie unter Was ist ein API-Level?. Informationen zu den Gradle-Build-Einstellungen finden Sie unter Build-Varianten konfigurieren.