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:
- Geben Sie das Attribut
android:installLocation
mit dem Wert „auto
“ an. oder „preferExternal
“ im<manifest>
-Elements. - 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 - Ä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>