<manifest>

Syntax:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="string"
          android:sharedUserId="string"
          android:sharedUserLabel="string resource" 
          android:sharedUserMaxSdkVersion="integer"
          android:versionCode="integer"
          android:versionName="string"
          android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
    ...
</manifest>

enthalten in:
keine

muss Folgendes enthalten:
<application>
kann Folgendes enthalten:
<compatible-screens>
<instrumentation>
<permission>
<permission-group>
<permission-tree>
<queries>
<supports-gl-texture>
<supports-screens>
<uses-configuration>
<uses-feature>
<uses-permission>
<uses-permission-sdk-23>
<uses-sdk>

description:
Das Stammelement der AndroidManifest.xml-Datei. Es muss ein <application>-Element enthalten und die Attribute xmlns:android und package angeben.
Attribute:
xmlns:android
Definiert den Android-Namespace. Dieses Attribut ist immer auf "http://schemas.android.com/apk/res/android" festgelegt.
package
Der Wert des Attributs package in der Manifestdatei des APK steht für die universell eindeutige App-ID Ihrer App. Er ist als vollständiger Paketname im Java-Stil für die Android-App formatiert. Der Name kann Groß- und Kleinbuchstaben, Ziffern und Unterstriche („_“) enthalten. Einzelne Paketnamen dürfen jedoch nur mit Buchstaben beginnen.

Achten Sie darauf, den Wert package nicht zu ändern, da dadurch eine neue Anwendung erstellt wird. Nutzer der vorherigen Version Ihrer App erhalten kein Update und können ihre Daten nicht zwischen der alten und der neuen Version übertragen.

Legen Sie im Gradle-basierten Build-System ab AGP 7.3 den Wert package nicht direkt in der Quellmanifestdatei fest. Weitere Informationen finden Sie unter Anwendungs-ID festlegen.

android:sharedUserId

Diese Konstante wird ab API-Level 29 eingestellt.
Gemeinsame Nutzer-IDs verursachen ein nicht deterministisches Verhalten im Paketmanager. Daher wird ausdrücklich von ihrer Verwendung abgeraten und sie wird in einer zukünftigen Version von Android möglicherweise entfernt. Verwenden Sie stattdessen geeignete Kommunikationsmechanismen wie Dienste und Contentanbieter, um die Interoperabilität zwischen gemeinsam genutzten Komponenten zu erleichtern. Bei vorhandenen Anwendungen kann dieser Wert nicht entfernt werden, da die Migration einer freigegebenen User-ID nicht unterstützt wird. Fügen Sie in diesen Apps android:sharedUserMaxSdkVersion="32" hinzu, um zu vermeiden, dass bei Neuinstallationen von neuen Nutzern eine gemeinsame Nutzer-ID verwendet wird.

Der Name einer Linux-Nutzer-ID, die für andere Apps verwendet wird. Standardmäßig weist Android jeder App eine eigene eindeutige Nutzer-ID zu. Wenn dieses Attribut jedoch für zwei oder mehr Apps auf denselben Wert festgelegt ist, haben sie alle dieselbe ID, vorausgesetzt, die Zertifikatssätze sind identisch. Anwendungen mit derselben Nutzer-ID können auf die Daten anderer zugreifen und gegebenenfalls im selben Prozess ausgeführt werden.

android:targetSandboxVersion
Die Ziel-Sandbox, die für diese App verwendet werden soll. Je höher die Versionsnummer der Sandbox, desto höher das Sicherheitsniveau. Der Standardwert ist 1. Sie können ihn auch auf 2 festlegen. Wenn Sie dieses Attribut auf 2 setzen, wechselt die App zu einer anderen SELinux-Sandbox.

Für eine Level-2-Sandbox gelten die folgenden Einschränkungen:

  • Der Standardwert von usesCleartextTraffic in der Netzwerksicherheitskonfiguration ist „false“.
  • Die UID-Freigabe ist nicht zulässig.

Für Android Instant Apps, die auf Android 8.0 (API-Level 26) oder höher ausgerichtet sind, wird dieses Attribut auf 2 gesetzt. Du kannst die Sandbox-Ebene in der installierten Version deiner App auf die weniger restriktive Ebene 1 festlegen. Wenn Sie dies jedoch tun, speichert Ihre App keine App-Daten von der Instant-App in der installierten Version Ihrer App. Sie müssen den Sandbox-Wert der installierten Anwendung auf 2 setzen, damit die Daten von der Instant-App in die installierte Version erhalten bleiben.

Sobald eine App installiert wurde, kann der Ziel-Sandbox-Wert nur noch auf einen höheren Wert aktualisiert werden. Um den Ziel-Sandbox-Wert herabzustufen, deinstallieren Sie die App und ersetzen Sie sie durch eine Version, deren Manifest einen niedrigeren Wert für dieses Attribut enthält.

android:sharedUserLabel

Diese Konstante wird ab API-Level 29 eingestellt.
Gemeinsame Nutzer-IDs verursachen ein nicht deterministisches Verhalten im Paketmanager. Daher wird ausdrücklich von ihrer Verwendung abgeraten und sie wird in einer zukünftigen Version von Android möglicherweise entfernt. Verwenden Sie stattdessen geeignete Kommunikationsmechanismen wie Dienste und Contentanbieter, um die Interoperabilität zwischen gemeinsam genutzten Komponenten zu erleichtern. Bestehende Anwendungen können diesen Wert nicht entfernen, da die Migration einer freigegebenen Nutzer-ID nicht unterstützt wird.

Ein für den Nutzer lesbares Label für die freigegebene Nutzer-ID. Das Label wird als Verweis auf eine String-Ressource festgelegt. Er darf kein Rohstring sein.

Dieses Attribut wurde mit API-Level 3 eingeführt. Dies ist nur aussagekräftig, wenn auch das Attribut sharedUserId festgelegt ist.

android:sharedUserMaxSdkVersion

Freigegebene Nutzer-IDs verursachen im Paketmanager ein nicht deterministisches Verhalten. Daher wird ausdrücklich von ihrer Verwendung abgeraten und sie wird in einer zukünftigen Version von Android möglicherweise entfernt. Verwenden Sie stattdessen geeignete Kommunikationsmechanismen wie Dienste und Contentanbieter, um die Interoperabilität zwischen gemeinsam genutzten Komponenten zu erleichtern.

Die höchste SDK-Version, in der das System noch android:sharedUserId verwendet. Wenn Ihre App neu auf einem Gerät installiert wird, auf dem eine SDK-Version über dem angegebenen Wert ausgeführt wird, verhält sich die App so, als hätten Sie android:sharedUserId nie definiert.

Dieses Attribut wurde mit API-Level 33 eingeführt. Dies ist nur aussagekräftig, wenn auch das Attribut sharedUserId festgelegt ist.

android:versionCode
Eine interne Versionsnummer. Diese Zahl wird nur verwendet, um festzustellen, ob eine Version aktueller als eine andere ist. Höhere Zahlen deuten auf aktuellere Versionen hin. Dies ist nicht die Versionsnummer, die Nutzern angezeigt wird. Sie wird durch das Attribut versionName festgelegt.

Der Wert wird als positive Ganzzahl größer als 0 festgelegt. Sie können sie jedoch beliebig definieren, solange jede nachfolgende Version eine höhere Nummer hat. Es kann beispielsweise eine Build-Nummer sein oder eine Versionsnummer im Format "x.y" in eine Ganzzahl umwandeln, indem Sie "x" und "y" separat in den unteren und oberen 16 Bit codieren. Alternativ können Sie die Zahl jedes Mal um eins erhöhen, wenn eine neue Version veröffentlicht wird.

android:versionName
Die Versionsnummer, die Nutzern angezeigt wird. Dieses Attribut wird als Rohstring oder als Verweis auf eine Stringressource festgelegt. Der String hat keinen anderen Zweck, als ihn Nutzern anzuzeigen. Das Attribut versionCode enthält die signifikante Versionsnummer, die intern verwendet wird.
android:installLocation
Der Standardspeicherort für die App. Die folgenden Keyword-Strings werden akzeptiert:

Antwort Beschreibung
"internalOnly" Die App lässt sich nur auf dem internen Gerätespeicher installieren. Wenn diese Richtlinie konfiguriert ist, wird die Anwendung nie auf externem Speicher, z. B. auf einer SD-Karte, installiert. Wenn der interne Speicher voll ist, wird die Anwendung nicht vom System installiert. Dies ist das Standardverhalten, wenn Sie android:installLocation nicht definieren.
"auto" Die Anwendung kann auf externem Speicher installiert werden, das System installiert die Anwendung jedoch standardmäßig im internen Speicher. Wenn der interne Speicher voll ist, wird er vom System auf dem externen Speicher installiert. Nach der Installation kann der Nutzer die Anwendung über die Systemeinstellungen entweder in einen internen oder externen Speicher verschieben.
"preferExternal" Die App sollte auf einem externen Speicher installiert werden. Es gibt keine Garantie, dass das System diese Anfrage berücksichtigt. Die Anwendung wird möglicherweise auf dem internen Speicher installiert, wenn das externe Medium nicht verfügbar oder voll ist. Nach der Installation kann der Nutzer die Anwendung über die Systemeinstellungen in einen internen oder externen Speicher verschieben.

Hinweis: Die Anwendung wird standardmäßig im internen Speicher installiert und kann nur auf externen Speicher installiert werden, wenn Sie dieses Attribut als "auto" oder "preferExternal" definieren.

Wenn eine App auf einem externen Speicher installiert wird, gilt Folgendes:

  • Die APK-Datei wird im externen Speicher gespeichert, alle App-Daten wie z. B. Datenbanken werden jedoch weiterhin im internen Gerätespeicher gespeichert.
  • Der Container, in dem die APK-Datei gespeichert ist, wird mit einem Schlüssel verschlüsselt, mit dem die App nur auf dem Gerät ausgeführt werden kann, auf dem sie installiert ist. Der Nutzer kann die SD-Karte nicht auf ein anderes Gerät übertragen und die auf der Karte installierten Apps nicht verwenden. Es können mehrere SD-Karten mit demselben Gerät verwendet werden.
  • Auf Anfrage des Nutzers kann die App in den internen Speicher verschoben werden.

Der Nutzer kann auch das Verschieben einer Anwendung aus dem internen in den externen Speicher anfordern. Der Nutzer kann die Anwendung jedoch nicht in einen externen Speicher verschieben, wenn dieses Attribut auf die Standardeinstellung "internalOnly" gesetzt ist.

Weitere Informationen zur Verwendung dieses Attributs, einschließlich der Aufrechterhaltung der Abwärtskompatibilität, findest du unter Installationsort der App.

Vorgestellt in: API-Level 8.

eingeführt in:
API-Level 1 für alle Attribute, sofern in der Attributbeschreibung nicht anders angegeben.

Siehe auch:
<application>