App2SD

Aus Android Wiki
Version vom 15. November 2011, 11:26 Uhr von Florian (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „'''App2SD''' ist eine Möglichkeit alle Apps auf die externe SD-Karte verschoben werden können. == Wozu App2SD == Android speichert Apps immer auf d…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

App2SD ist eine Möglichkeit alle Apps auf die externe SD-Karte verschoben werden können.

Wozu App2SD

Android speichert Apps immer auf dem internen Speicher, dem sogenannten ROM. Dieser ist bei den meisten Geräten auf 100-200 MB begrenzt und bietet damit nicht unbegrenzt Platz zum Speichern von Apps. Besonders wenn man anfängt sein Android Smartphone in tiefere Sachen zu verwenden, zum Beispiel Bildbearbeitung. Da die Apps auch deren Daten auf dem internen Speicher ablegen kann dieser schnell seine Grnezen erreichen. In diesem Fall würde Android die Installation von weiteren Apps verweigern. Um diesem Speichermangel zu entkommen empfiehlt es sich die Apps auf die Speicherkarte, die externe SD-Karte. Weiter im Details: Wenn ich eine App installiert und benutzt, dann wird der folgende Speicher belegt, bei dem es sich um eine Partition im internen Telefonspeicher handelt: (1) /data/app/<Dateiname>.apk (2) /data/dalvik-cache/<Dateiname_der_App>.dex (3) /data/data/<Verzeichnisname_der_App>/lib/<Dateiname>.so (4) /data/data/<Verzeichnisname_der_App>/<sonstige Dateien und Verzeichnisse> Was ist das alles genau? Nun: (1)=Die heruntergeladene App

  --> Größe: wird im Android Market angezeigt

(2)=Eine aus (1) vom Betriebssystem generierte ausführbare Datei. Bem.: Wenn sie gelöscht wird, stellt das Betriebssystem sie aus der *.apk-Datei (1) wieder her, ist also nicht schlimm, bringt aber auch nichts, außer man löscht eine dalvik-cache-Datei, zu der es gar keine *.apk-Datei mehr gibt, also "Datenmüll", den es bei sauberer De-Installation aber eigentlich nicht geben darf. Wenn man auf ein App-Symbol tippt um eine App zu starten, dann greift das Betriebssystem auf diese dalvik-Datei zu, und NICHT auf die *.apk-Datei aus "(1)".

  --> Größe: ähnlich wie die *.apk Datei, in der Regel etwas kleiner, kann variieren

(3)=library Dateien, sind bei einigen (vielen) Apps gar nicht vorhanden, können manchmal aber auch ziemlich groß sein (4)=Sonstige App-spezifischen Daten. Datenmenge unterschiedlich, im Allgemeinen eher gering (Ausnahme z.B. Browser cache...)

Man sieht also: Wenn man (1), (2), (3) und (4) auf die SD-Karte "verschieben" würde, wäre der interne Speicher komplett entlastet. Bei den meisten heute üblichen Methoden wird aber nur ein TEIL davon auf die SD-Karte verschoben, oft nur (1).

Die Möglichkeiten

Wie bereits gesagt wird oft nicht der komplette Teil der App auf die SD-Karte verschoben, sondern nur einzelne Teile. Um diese Funktion zu erreichen gibt es insgesamt 3 Methoden.

Methode A

Diese Methode bezeichnet man als "natives App2SD von Google". Dabei werden meist Apps zum verschieben der Apps verwendet (z.B. App 2 SD, Move 2 SD).

Eckdaten

  • ab Android 2.2=Froyo
  • kein "root" benötigt
  • keine zweite SD-Karten-Partition benötigt
  • Auswahl auf "per App" Basis möglich
  • Viele Apps lassen sich aber gar nicht verschieben mit dieser Methode
  • Nur (1) wird verschoben (nur das *.apk file der jew. App)

Beschreibung

Man kann pro selbst installierter App entscheiden, ob man diese auf die SD-Karte verschieben möchte. Das geht auch nachträglich, und es geht "hin" und "zurück" nach Belieben. Fabei wird die *.apk Datei nach "/sdcard/.android-secure/" (="/mnt/secure/asec/") verschoben. Außerdem entsteht der mount point "/mnt/asec/<dateiname>/", wo sich die ausgelagerte apk Datei im Klartext befindet. Mit einem Datei-Browser kann man das überprüfen. Das Betriebssystem (ab 2.2) unterstützt dieses Feature nativ, darum ist diese Methode für Android 2.1 und früher nicht möglich.

Einschränkungen

Da diese Methode einer der oberflächlichsten ist, ist es zwingend notwendig, dass die zu verschiebene App auch App2SD nach Methode A unterstützt. Ist dies nicht der Fall, ist diese Methode für die App nicht anwendbar. Beispiele für diese nicht-funktionierenden Apps sind zum Beispiel diverse Widgets oder die App Android-Hilfe. Außerdem kann man System-apps grundsätzlich nicht verschieben.

Diese Methode ist also Bestandteil des Betriebssystems. Dazu gibt es verschiedene grafische Front-Ends, die einem die Arbeit für's Hin- und Herschieben erleichtern, z.B. die App "Move2SD" aus dem Android Market.

Methode B

Die Methode B "Symbolic Links auf Verzeichniss(e) auf der SD-Kart" bekommt oft von den Appentwicklern auch den Namen "App2SD", damit wird zwar eine Verwirrung mit der Methode A gestiftet, das scheint aber niemanden so richtig zu interessieren.

Eckdaten

  • ab Android 1.6 (oder sogar schon früher? - naja älteres Android hat hier eh niemand...)
  • "root" benötigt!
  • Zweite SD-Karten-Partition benötigt! (als zweite Partition nach der FAT32-Partition, aber auch als primary(!) Partition einrichten, und zwar als ext2/ext3/ext4 (je nachdem was dsa Androidsystem unterstützt))
  • Auswahl auf "per App" Basis NICHT möglich (nur für "alle oder keine" Apps [nicht-system-apps])
  • Ob die zu verschiebende App ein "App2SD" gemäß "Methode A" unterstützt oder nicht, ist irrelevant.
  • Bei A2SD wird nur (1) verschoben (nur das *.apk file), bei neueren Varianten wie A2SD+ oder "Dark Tremor Apps2SD" kann auch zusätzlich noch wahlweise der dalvik-cache (2) und auch (3)+(4) auf die SD-Karte verschoben werden (aber nicht App-spezifisch).

Beschreibung

Man muss das Feature in der Regel über Recovery (= Bootmenü, wie das BIOS, suche z.B. nach "Clockwork Recovery", "ClockworkMod Recovery", "CWM Recovery") einspielen. Bei den meisten Custom ROMS ist es schon drauf. Was dann passiert ist, dass nach Booten des Systems das Betriebssystem die zweite Partition der SD-Karte erkennt und ins Dateisystem einhängt (mountet), und zwar unter "/system/sd/". Damit ist aber noch nichts passiert, die App-Dateien sind immer noch im internen Speicher. Aber jetzt kommt der schlaue Trick, Linux macht's möglich: Wenn man nun über eine geeignete grafische Oberfläche das Verschieben der Apps von Intern nach SD-Karte veranlasst, dann passiert im Hinitergrund im System Folgendes: Es werden die Daten von /data/app/ nach /system/sd/ verschoben, also physikalisch auf die SD-Karte verlagert. Dann wird ein symbolischer link erzeugt, der von /data/app/ nach /system/sd/app/ zeigt. Das ist alles. Auf diese Weise kann das Betriebssystem wie gewohnt auf "/data/app/<Dateiname>.apk" zugreifen und merkt gar nicht, dass diese Datei auf der SD-Karte liegt, bzw. es ist ihm "egal". Alle Betriebssystem-Operationen können also wie üblich ablaufen, die Änderung ist für das Betriebssystem völlig transparent, und darum geht es auch für Android 1.6 oder 2.1.

Auf die gleiche Weise kann man auch den dalvik-cache auf die SD-Karte "umleiten" (A2SD+, "Darktremor A2SD" (DT A2SD), "Darktremor App2SD", ...). Ein Beispiel eines grafischen User-Interfaces ist die App "A2SDGUI for Darktremor A2SD" (Google Market), womit man (1) (apk) oder (2) (dalvik-cache) von intern nach SD aktivieren und deaktivieren kann. [Das Umbiegen von System-Apps geht GLAUBE ich nicht, oder nur mit speziellen Lösungen dann vielleicht doch, ist jetzt aber hier nicht der Schwerpunkt, weil für die allermeisten Fälle wirklich nicht relevant.] [Bem. zu A2SDGUI: Diese App (in Verbindung mit "Darktremor Apps2SD") kann noch viel mehr als nur A2SD, nämlich System-Interna auf vielerlei Weise optimieren - aber das ist jetzt hier nicht das Thema]

Einschränkungen: Diese Methode erlaubt es nicht, einzelne Apps auf die Sd-Karte zu verlagern, es geht nur für alle Apps oder für keine. Man kann nur wählen zwischen "nur *.apk files", "nur Dalvik-Cache", oder beides, oder nichts, aber diese Wahl betrifft dann halt alle (Nicht-System-)Apps.