App2SD: Unterschied zwischen den Versionen

1.522 Bytes hinzugefügt ,  15. November 2011
keine Bearbeitungszusammenfassung
(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…“)
 
Keine Bearbeitungszusammenfassung
Zeile 7: Zeile 7:
Weiter im Details:
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:
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
(1) /data/app/<Dateiname>.apk
(2) /data/dalvik-cache/<Dateiname_der_App>.dex
(2) /data/dalvik-cache/<Dateiname_der_App>.dex
(3) /data/data/<Verzeichnisname_der_App>/lib/<Dateiname>.so
(3) /data/data/<Verzeichnisname_der_App>/lib/<Dateiname>.so
(4) /data/data/<Verzeichnisname_der_App>/<sonstige Dateien und Verzeichnisse>
(4) /data/data/<Verzeichnisname_der_App>/<sonstige Dateien und Verzeichnisse>
Was ist das alles genau? Nun:
Was ist das alles genau? Nun:
(1)=Die heruntergeladene App
(1) = Die heruntergeladene App (Größe wird im Android Market angezeigt)
  --> 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)".
(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
(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...)
 
(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).
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).
Zeile 55: Zeile 60:


=== Beschreibung ===
=== 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/".
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
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:
<pre>/system/sd/</pre>
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:
zur Verfügung..
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.
Das ist die Grundvoraussetzung, das die Methode B reibungslos funktioniert. Über eine grafische Benutzeroberfläche kann man nun die Daten der App von <pre>/data/app</pre> nach <pre>/system/sd</pre> 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" 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 <pre>/data/sdext2/</pre> 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)


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.
(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.
[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:
(3) Library Dateien: gleiche Vorgehensweise wie für (2)
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.
11.008

Bearbeitungen