App2SD

Revision as of 17:52, 15 November 2011 by Kenny (talk | contribs)

App2SD (App "two" SD) ist eine M├Âglichkeit, alle Apps auf die externe SD-Karte verschoben werden k├Ânnen.

Einleitung

Dieser Artikel basiert teilweise auf dem Thread von michael_and [1] aus dem Android-Hilfe-Forum. Dieser Artikel wurde freundlichst von ihm zur Verf├╝gung gestellt. Teilweise wurden Textpassagen komplett kopiert oder bearbeitet eingef├╝gt. Eine Kennzeichnung wird hier nicht vorgenommen.

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. Bemerkung: 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)". (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 das Recovery, zum Beispiel dem ClockWorkMod-Recovery einspielen. Bei den meisten Custom ROM's ist diese Funktion schon vorinstalliert. Nach dem Booten des Systems erkennt das Betriebssystem die zweite Partition der SD-Karte und bindet diese als Dateisystem ein (mounten). Diese Partition steht dann unter dem Pfad

/system/sd/

zur Verf├╝gung..

Das ist die Grundvoraussetzung, das die Methode B reibungslos funktioniert. ├ťber eine grafische Benutzeroberfl├Ąche kann man nun die Daten der App von

/data/app

nach

/system/sd

verschieben. Damit liegen die Daten nun auf der SD-Karte, genauer gesagt die zweite Partition. Dann wird ein symbolischer link erzeugt, der von /data/app/ nach /system/sd/app/ zeigt. 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". Ein Beispiel eines grafischen User-Interfaces ist die App "A2SDGUI for Darktremor A2SD", womit man (1) (apk) oder (2) (dalvik-cache) von dem internen Speicher auf die SD verschieben kann.


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, aber diese Wahl betrifft dann halt alle (Nicht-System-)Apps.

Methode C

Die Methode C "Symbolic Links auf Dateien auf der SD-Karte" .

Eckdaten

  • ab Android 1.6 (oder sogar schon fr├╝her? - naja ├Ąlteres Android hat hier eh niemand...)
  • (momentan probleme mit Android 2.3, siehe Bemerkung ganz am ende des Postings)
  • "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 IST m├Âglich (nur f├╝r Nicht-System-Apps)
  • Ob die zu verschiebende App ein "App2SD" gem├Ą├č "Methode A" unterst├╝tzt oder nicht, ist irrelevant.
  • Es kann (1), (2) und (3) verschoben werden (frei w├Ąhlbar und kombinierbar pro App)

Beschreibung

Das Prinzip ist das gleiche wie bei Methode B insofern, dass hier auch mit symbolic Links auf Orte auf der SD-Karte (2. Partition) gearbeitet wird. Der Unterschied ist der, dass nicht wie in Methode B ein Symbolic Link f├╝r ein ganzes Verzeichnis angelegt wird (f├╝r alle *.apk oder alle Dalvik-cache-Dateien), sondern dass pro App und pro Kategorie (1)/(2)/(3) entschieden werden kann, ob eine "Umleitung" zur SD-Karte per symbolic link stattfinden soll oder nicht. Die grafische Benutzeroberfl├Ąche wie auch das back-end-Prozessing stellt die App "Link2SD"[2] bereit. Man kann auch hier jederzeit eine App (bzw.: Teil (1), (2) oder (3) einer App) zwischen internem und externem Speicher hin- und her schieben.

Als Mountpunkt verwendet Link2SD den Ordner

/data/sdext2/

f├╝r die zweite Partition der SD-Karte.


Vorteil

Man kann viel flexibler das auf die SD-Karte verschieben, was am sinnvollsten ist. Eine sinnvolle Vorgehensweise ist, folgende Teile auf die SD-Karte zu verschieben:

(1) Alle *.apk Files (weil diese im operativen Betrieb nicht verwendet werden, also keine Geschwindigkeitseinbu├če bei langsamer externen Speicherkarte)

(2) Dalvik-Cache: nur f├╝r die Apps, die eher selten verwendet werden und wo man ggf. geringe Geschwindigkeitseinbu├čen in Kauf nehmen kann, oder auch solche, die einen sehr gro├čen dalvik-cache haben und wo es sich somit richtig lohnt.

(3) Library Dateien: gleiche Vorgehensweise wie f├╝r (2)


Methoden mischen

Da wir in der Linuxwelt sind, ist so ziemlich alles m├Âglich, so auch das kombinieren von den App2SD-Methoden. Die Frage nach dem Sinn ist mehr oder weniger einfach gesagt: sinnvoll ist es fast nie! Die M├Âglichkeiten der Kombination:

Mischen von Methode A und B

Mit Methode B werden alle *.apk-Dateien auf die SD-Karte (ext-Partition) verlagert.

Wenn wir jetzt noch Methode A ("2.2+ native") hinzunehmen, k├Ânnen wir uns einige Apps aussuchen, deren *.apk Files auf die erste Partition der SD-Karte nach

/sdcard/.android-secure/

verschoben werden. Das hei├čt, wir w├╝rden Apps (genauer: deren *.apk Files) zwischen SD-Karte Partition 2 (ext2/3/4) nach SD-Karte Partition 1 (FAT32) verschieben. Das bringt eigentlich genau gar nichts, au├čer in dem seltenen Fall, dass die eine Partition zu klein wird und wir es auf die andere verschieben m├╝ssen. Dann w├╝rden wir aber Methode A nicht dazu verwenden, den internen Telefonspeicher zu entlasten, sondern dazu, die zweite (offenbar zu klein bemessene) Partition der SD-Karte zu entlasten (auf kosten der FAT32-Datenpartition). In der Regel macht man aber die 2. Partition f├╝r die auszulagernden Dateien zwischen 500 und 1400 MB gro├č, und dann sollte dieser Platz immer ausreichen, wenn man nicht gerade 100 speicherfressende Spiele installiert. Die Gr├Â├če von 1,4 GB ist daher gekommen, da eine gr├Â├čere Partition nach Berichten zu folge zu massiven Problemen f├╝hren kann.

Mischen von Methode A und C

Hier ist es genauso wie mit der Methode A und B.

Mischen von Methode B und C

Einen Nutzen gibt es hier eigentlich ├╝berhautpt nicht, denn beide Methoden lagern die Dateien auf die selbe Partition der SD-Karte aus. Vermutlich wird es beim mischen dieser Methoden sogar zu Konflikten kommen, da beide Methoden die selbe Partition der SD-Karte auf unterschiedliche Weise verwenden. Je nachdem, unter welchen Verzeichnissen und Unterverzeichnissen die Dateien abgelegt werden, kann es im besten Fallen (bei sich nicht ├╝berscheidenden Namen) zu keinen Konflikten kommen, aber das ist unsicher.

Ein weiterer Punkt ist das Mounting: Beide Methoden verwenden ein (eigenes) Script, das die 2. SD-Karten-Partition ins Dateisystem einh├Ąngt (mountet). Je nachdem, wie intelligent diese Scripts geschrieben sind, merken sie, dass das Dateisystem schon eingeh├Ąngt ist, oder die Scripts "bocken". Man kann also nicht genau sagen, ob das Mischen im Ansatz ├╝berhaupt funktioniert oder nicht.


Einzelnachweis