App-Installationsort

Ab API-Level 8 können Sie die Installation Ihrer Anwendung auf dem externen Speicher (z. B. die SD-Karte des Geräts) Dies ist eine optionale Funktion, die Sie für Ihre App mit dem Manifestattribut android:installLocation. Wenn Sie nicht deklariert, wird Ihre Anwendung im internen Speicher installiert und kann nicht in den externen Speicher verschoben werden.

Um dem System zu erlauben, Ihre App auf dem externen Speicher zu installieren, ändern Sie Ihre Manifestdatei so, dass das Attribut android:installLocation in das Element <manifest> aufgenommen wird. mit dem Wert „preferExternal“ oder "auto". Hier einige Beispiele:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:installLocation="preferExternal"
    ... >

Wenn Sie „preferExternal“ deklarieren, fordern Sie die Installation Ihrer Anwendung auf dem externe Speicher. Das System garantiert jedoch nicht, dass Ihre Anwendung dort installiert wird. externe Speichergerät. Wenn der externe Speicher voll ist, installiert das System ihn im internen Speicher Speicherplatz. Der Nutzer kann Ihre Anwendung auch zwischen den beiden Speicherorten verschieben.

Wenn Sie „auto“ deklarieren, bedeutet dies, dass Ihre App auf dem externe Speicher, aber Sie haben keinen bevorzugten Installationspfad festgelegt. Das System anhand verschiedener Faktoren entscheiden, wo Ihre Anwendung installiert werden soll. Der Nutzer kann auch Ihre zwischen den beiden Standorten.

Wenn Ihre Anwendung im externen Speicher installiert ist:

  • Dies hat so lange keine Auswirkungen auf die Anwendungsleistung wenn das externe Speichergerät auf dem Gerät bereitgestellt wird.
  • Die Datei .apk wird im externen Speicher gespeichert, aber alle privaten Nutzerdaten werden Datenbanken, optimierte .dex-Dateien und extrahierter nativer Code werden auf der des internen Gerätespeichers.
  • Der eindeutige Container, in dem Ihre Anwendung gespeichert ist, wird mit einer zufälligen generierter Schlüssel, der nur von dem Gerät entschlüsselt werden kann, auf dem er ursprünglich installiert wurde. Somit ergibt ein auf einer SD-Karte installierte App funktioniert nur mit einem Gerät.
  • Der Nutzer kann Ihre Anwendung über die Systemeinstellungen in den internen Speicher verschieben.

Warnung:wenn der Nutzer den USB-Massenspeicher für die Freigabe von Dateien aktiviert mit einem Computer verbunden ist oder die SD-Karte über die Systemeinstellungen trennt, wird der externe Speicher getrennt. und alle Anwendungen, die auf dem externen Speicher ausgeführt werden, werden sofort beendet.

Abwärtskompatibilität

Die Möglichkeit zur Installation Ihrer Anwendung auf dem externen Speicher ist eine Funktion, die nur auf Geräten mit API-Level 8 (Android 2.2) oder höher. Vorhandene Anwendungen, die vor der API-Level 8 wird immer im internen Speicher installiert und kann nicht auf den externen Speicher verschoben werden. (auch auf Geräten mit API-Level 8). Wenn Ihre Anwendung jedoch ein API-Level niedriger als 8, können Sie festlegen, dass diese Funktion auf Geräten mit API-Level 8 unterstützt wird oder höher und trotzdem mit Geräten mit einem API-Level unter 8 kompatibel sein.

Um die Installation auf einem externen Speicher zu ermöglichen und mit älteren Versionen als der API kompatibel zu bleiben Level 8:

  1. Geben Sie das Attribut android:installLocation mit dem Wert „auto“ an. oder „preferExternal“ im <manifest> -Elements.
  2. Lassen Sie das Attribut android:minSdkVersion unverändert (etwas weniger als „8“) und achten Sie darauf, dass Ihr Anwendungscode nur APIs verwendet, die mit diesen
  3. Ändern Sie zum Kompilieren Ihrer Anwendung Ihr Build-Ziel in API-Level 8. Dies ist notwendig, da ältere Android-Bibliotheken den android:installLocation nicht verstehen und Ihre Anwendung wird nicht kompiliert, wenn dieses vorhanden ist.

Wenn deine App auf einem Gerät mit einem API-Level unter 8 installiert ist, wird das Attribut android:installLocation ignoriert und die App wird auf dem internen Speicherplatz.

Achtung:Obwohl XML-Markup wie dieses von älteren Plattformen verwenden, dürfen Sie keine Programmier-APIs verwenden, die mit API-Level 8 eingeführt wurden. solange minSdkVersion kleiner als „8“ ist, es sei denn, Sie führen die Arbeiten aus, die zum Abwärtskompatibilität in Ihrem Code.

Anwendungen, die NICHT auf dem externen Speicher installiert werden sollten

Wenn der Nutzer den USB-Massenspeicher für die Freigabe von Dateien für seinen Computer (oder auf andere Weise) aktiviert den externen Speicher getrennt oder entfernt), jede Anwendung die im externen Speicher installiert ist und derzeit ausgeführt wird, beendet. Das System wird effektiv Die Anwendung ist nicht bekannt, bis der Massenspeicher deaktiviert und der externe Speicher wieder am Gerät angebracht. Neben dem Beenden der Anwendung, der sie für den Nutzer nicht mehr verfügbar ist, kann dies einige Arten von Anwendungen schwerwiegender beschädigen. Damit Ihre Anwendung sich konsistent wie erwartet verhalten, sollten Sie nicht zulassen, dass Ihre Anwendung die auf dem externen Speicher installiert sind, falls dieser aufgrund der angegebenen Auswirkungen, wenn der externe Speicher getrennt wird:

Dienste
Dein Lauftraining Service ist und nicht neu gestartet, wenn der externe Speicher wieder bereitgestellt wird. Anwendungen die an diesen Dienst gebunden sind, ACTION_EXTERNAL_APPLICATIONS_AVAILABLE Broadcast-Intent, um alle Anwendungen zu benachrichtigen, die nicht die auf externen Speichermedien installiert sind, wieder verfügbar sind. Nach Erhalt dieser Anwendungen können versuchen, sich an Ihren Dienst zu binden.
Alarmdienste
Deine bei AlarmManager registrierten Wecker werden abgebrochen. Du musst Alarme manuell neu registrieren, wenn externer Speicher wieder bereitgestellt wird.
Eingabemethoden-Engines
Ihr IME ist durch den Standard-IME ersetzt. Wenn externer Speicher wieder bereitgestellt wird, kann der Nutzer die Systemeinstellungen öffnen um deinen IME wieder zu aktivieren.
Live-Hintergründe
Dein laufender Live-Hintergrund wird durch den Standard-Live-Hintergrund ersetzt. Wenn externer Speicher wieder bereitgestellt wird, kann der Nutzer Wählen Sie noch einmal Ihren Live-Hintergrund aus.
Widgets
Dein App-Widget wird entfernt vom Startbildschirm aus. Wenn externer Speicher wieder bereitgestellt wird, wird das App-Widget nicht der vom Nutzer ausgewählt werden kann, bis das System die Start-App zurücksetzt (normalerweise erst, wenn ein Neustart des Systems).
Account Manager
Ihre mit AccountManager erstellten Konten werden gelöscht bis externes Speichergerät wieder bereitgestellt wird.
Synchronisierungsadapter
Ihr AbstractThreadedSyncAdapter und alle zugehörigen Synchronisierungsfunktionen werden funktionieren erst wieder, wenn der externe Speicher wieder bereitgestellt wird.
Geräteadministratoren
Ihr DeviceAdminReceiver und alle zugehörigen Administratorfunktionen werden deaktiviert werden kann, was unvorhersehbare Folgen für die Funktionalität des Geräts haben kann, bleiben nach dem erneuten Bereitstellen des externen Speichers bestehen.
Broadcast-Empfänger, die auf "Startvorgang abgeschlossen" warten
Das System sendet die ACTION_BOOT_COMPLETED-Übertragung. bevor das externe Speichergerät auf dem Gerät bereitgestellt wird. Wenn Ihre Anwendung auf dem externen Speicher, kann sie diese Nachricht nicht empfangen.

Wenn Ihre App eine der oben aufgeführten Funktionen verwendet, sollten Sie das Folgende nicht zulassen: Ihre Anwendung für die Installation auf einem externen Speicher. Standardmäßig lässt das System Folgendes nicht zu: für die Installation auf dem externen Speicher. Sie müssen sich also keine Gedanken Anwendungen. Wenn Sie jedoch sicher sind, dass Ihre Anwendung nie auf der externes Speichergerät verwenden, sollten Sie dies deutlich machen, indem Sie für android:installLocation den Wert „internalOnly“ angeben. Auch wenn dies nicht Standardverhalten ändern, wird explizit angegeben, dass Ihre Anwendung nur installiert werden darf, im internen Speicher und möchten Sie und andere Entwickler daran erinnern, dass diese Entscheidung gemacht wurden.

Anwendungen, die auf dem externen Speicher installiert werden sollen

Einfach ausgedrückt: Alles, bei dem nicht die im vorherigen Abschnitt aufgeführten Funktionen verwendet werden, sind sicher, wenn sie auf einem externen Speichermedium installiert sind. Große Spiele sind eher die eine Installation auf einem externen Speicher ermöglichen. zusätzliche Dienste bereitstellen, wenn sie inaktiv sind. Wenn der externe Speicher nicht mehr verfügbar ist und ein Spiel beendet wird, sollte keine sichtbare Auswirkung auftreten, wenn der Speicher wieder verfügbar ist. Der Nutzer startet das Spiel neu (vorausgesetzt, das Spiel hat seinen Status während des normalen Aktivitätslebenszyklus).

Wenn für Ihre App mehrere Megabyte für die APK-Datei erforderlich sind, sollten Sie ob Sie die Installation der Anwendung auf dem externen Speicher aktivieren, können Nutzer Speicherplatz im internen Speicher sparen.

Weitere Informationen finden Sie unter: <manifest>