Difference between revisions of "App2SD"

From Android Wiki
Jump to navigation Jump to search
 
(15 intermediate revisions by 6 users not shown)
Line 1: Line 1:
'''App2SD''' (App "two" SD) ist eine Möglichkeit, alle [[App]]s auf die externe SD-Karte verschoben werden können.
+
'''App2SD''' (App to SD) ist eine Möglichkeit, [[App]]s auf die externe SD-Karte zu verschieben. Seit Android {{Android|6.0}} besteht die Möglichkeit, die SD-Karte ''[[Als internen Speicher formatieren|als internen Speicher zu formatieren]]'', was Drittanbieterlösungen, die App2SD oder Link2SD anbieten, für den Nutzer ggf. irrelevant werden lässt. Es hängt allerdings vom spezifischen Nutzungsverhalten ab, welche Möglichkeit die beste zur Erweiterung des internen Speichers durch eine SD-Karte darstellt.
  
 
== Einleitung ==
 
== Einleitung ==
  
Dieser Artikel basiert teilweise auf dem Thread von michael_and <ref>Android-Hilfe-Thread, http://www.android-hilfe.de/android-allgemein/144338-app2sd-komplett-uberblick-verschiedener-methoden.html</ref> 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.
+
Dieser Artikel basiert teilweise auf dem Thread von michael_and <ref>Android-Hilfe-Thread, http://www.android-hilfe.de/android-allgemein/144338-app2sd-komplett-uberblick-verschiedener-methoden.html</ref> aus dem Android-Hilfe-Forum. Dieser Artikel wurde freundlichst von ihm zur Verfügung gestellt. Teilweise wurden Textpassagen wörtlich kopiert oder bearbeitet eingefügt. Eine Kennzeichnung wird hier '''nicht''' vorgenommen.
  
 
== Wozu App2SD ==
 
== Wozu App2SD ==
  
Android speichert [[App|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:
+
Android speichert [[App|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, insbesondere wenn man anfängt, sein Android-Smartphone tiefergehend zu verwenden, zum Beispiel für Bildbearbeitung. Da die Apps auch ihre Daten auf dem internen Speicher ablegen, kann dieser schnell seine Grenzen 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, auszulagern. Weiter im Detail: Wenn eine App installiert und benutzt wird, dann wird der folgende Speicher belegt, bei dem es sich um eine Partition im internen Telefonspeicher handelt:
  
 
(1) /data/app/&lt;Dateiname&gt;.[[Apk]]
 
(1) /data/app/&lt;Dateiname&gt;.[[Apk]]
Line 17: Line 17:
 
(4) /data/data/&lt;Verzeichnisname_der_App&gt;/&lt;sonstige Dateien und Verzeichnisse&gt;
 
(4) /data/data/&lt;Verzeichnisname_der_App&gt;/&lt;sonstige Dateien und Verzeichnisse&gt;
  
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
+
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...)
+
(4) = Sonstige App-spezifischen Daten. Datenmenge unterschiedlich, im allgemeinen eher gering (Ausnahme z.B. Browser cache...)
  
<br/>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).
+
<br/>Man sieht also: Wenn man (1), (2), (3) und (4) auf die SD-Karte verschöbe, wäre der interne Speicher entlastet. Bei den meisten heute üblichen Methoden wird aber nur ein TEIL davon auf die SD-Karte verschoben, oft nur (1).
  
 
== Die Möglichkeiten ==
 
== 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.
+
Oft wird nicht die gesamte App mit all ihren Dateien auf die SD-Karte verschoben, sondern nur einzelne Teile. Um dies zu erreichen, gibt es drei Methoden.
  
 
== Methode A ==
 
== 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).
+
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 ===
 
=== Eckdaten ===
Line 36: Line 36:
 
*kein "root" benötigt
 
*kein "root" benötigt
 
*keine zweite SD-Karten-Partition benötigt
 
*keine zweite SD-Karten-Partition benötigt
*Auswahl auf "per App" Basis möglich
+
*Auswahl auf "per App"-Basis möglich
 
*Viele Apps lassen sich aber gar nicht verschieben mit dieser Methode
 
*Viele Apps lassen sich aber gar nicht verschieben mit dieser Methode
*Nur (1) wird verschoben (nur das *.apk file der jew. App)
+
*Nur (1) wird verschoben (also nur die *.apk-Datei der jeweiligen App)
  
 
=== Beschreibung ===
 
=== 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/&lt;dateiname&gt;/", 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.
+
Man kann für jede selbst installierte 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. Dabei wird die *.apk-Datei nach "/sdcard/.android-secure/" (="/mnt/secure/asec/") verschoben. Außerdem entsteht der Einhängpunkt (mount point) "/mnt/asec/&lt;dateiname&gt;/", 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 diese Fähigkeit "ab Werk", für Android 2.1 und früher ist dies nicht möglich.
  
 
=== Einschränkungen ===
 
=== 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.
+
Da diese Methode "oberflächlich" ist, ist es 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 verfügbar. Beispiele für diese nicht-funktionierenden Apps sind zum Beispiel diverse Widgets oder die App Android-Hilfe. Auch System-Apps kann man 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.
+
Diese Methode ist also Bestandteil des Betriebssystems. Dazu gibt es verschiedene grafische Benutzeroberflächen (=GUI), die das Hin- und Herschieben erleichtern, z.B. die App "Move2SD".
  
 
== Methode B ==
 
== 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.
+
Die Methode B "symbolic links auf Verzeichniss(e) auf der SD-Karte" bekommt oft von App-Entwicklern ebenfalls den Namen "App2SD"; damit wird eine Verwechslung mit der Methode A erzeugt, das scheint aber niemanden so richtig zu interessieren.
  
 
=== Eckdaten ===
 
=== Eckdaten ===
  
*ab Android 1.6 (oder sogar schon früher? - naja älteres Android hat hier eh niemand...)
+
* ab Android 1.6
*"root" benötigt!
+
* [[Root]]-Zugang wird 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))
+
* Zweite SD-Karten-Partition wird benötigt! (als zweite Partition nach der FAT32-Partition, aber auch als primäre(!) Partition einrichten, und zwar als ext2/ext3/ext4 (je nachdem was das Android-System unterstützt). Man sieht für die auszulagernden Dateien zwischen 500 und 1400 MB vor, dies sollte für den Normalgebrauch ausreichen. Größere Partitonen als 1,4 GB kann Berichten zufolge zu massiven Problemen führen.)
*Auswahl auf "per App" Basis NICHT möglich (nur für "alle oder keine" Apps [nicht-system-apps])
+
* Auswahl auf "per App"-Basis NICHT möglich (nur für "alle oder keine" Apps [nur Nicht-System-Apps])
*Ob die zu verschiebende App ein "App2SD" gemäß "Methode A" unterstützt oder nicht, ist irrelevant.
+
* Es ist irrelevant, ob die zu verschiebende App ein "App2SD" gemäß "Methode A" unterstützt oder nicht
*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).
+
* Bei A2SD wird nur (1) verschoben (nur die *.apk-Datei), bei neueren Varianten wie A2SD+ oder "Dark Tremor Apps2SD" kann auch zusätzlich wahlweise der dalvik-cache (2) und auch (3)+(4) auf die SD-Karte verschoben werden (aber nicht App-spezifisch).
  
 
=== Beschreibung ===
 
=== 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
+
Man muss diese Funktion in der Regel über das Recovery, zum Beispiel das [[ClockWorkMod]]-Recovery einspielen. Bei den meisten Custom-ROMs ist diese Funktion schon vorinstalliert. Nach dem Starten des Systems (boot) erkennt das Betriebssystem die zweite Partition der SD-Karte und bindet diese als Dateisystem ein (mount). Diese Partition steht dann unter dem Pfad
 
<pre>/system/sd/</pre>
 
<pre>/system/sd/</pre>
 
zur Verfügung..
 
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
+
Das ist die Grundvoraussetzung, dass die Methode B reibungslos funktioniert. Über eine grafische Benutzeroberfläche kann man nun die Daten der App von
 
<pre>/data/app</pre>
 
<pre>/data/app</pre>
 
nach
 
nach
 
<pre>/system/sd</pre>
 
<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/&lt;Dateiname&gt;.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.
+
verschieben. Damit liegen die Daten nun auf der SD-Karte, genauer: auf der zweiten Partition. Dann wird ein symbolischer Link (symbolic link) erzeugt, der von /data/app/ nach /system/sd/app/ zeigt. Auf diese Weise kann das Betriebssystem wie gewohnt auf "/data/app/&lt;Dateiname&gt;.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.
 
 
 
  
 +
Auf die gleiche Weise kann man auch den [[Dalvik-cache]] auf die SD-Karte "umleiten". Ein Beispiel einer grafischen Bedienoberfläche (user interface) 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 ===
 
=== 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.
+
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 wählen zwischen "nur *.[[Apk]-Dateien", "nur Dalvik-Cache" oder beides, aber diese Wahl betrifft dann folglich alle (Nicht-System-)Apps.
  
 
== Methode C ==
 
== Methode C ==
  
Die Methode C "Symbolic Links auf Dateien auf der SD-Karte" .
+
Die Methode C ist "Symbolic links auf Dateien auf der SD-Karte".
  
 
=== Eckdaten ===
 
=== Eckdaten ===
  
 
*ab Android 1.6 (oder sogar schon früher? - naja älteres Android hat hier eh niemand...)
 
*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)
+
*(momentan Probleme mit Android 2.3, siehe Bemerkung unten)
*"root" benötigt
+
*"root" wird 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))
+
*Zweite SD-Karten-Partition wird benötigt! (als zweite Partition nach der FAT32-Partition, aber auch als primary(!) Partition einrichten, und zwar als ext2/ext3/ext4 (je nachdem, was das Android-System unterstützt))
*Auswahl auf "per App" Basis IST möglich (nur für Nicht-System-Apps)
+
*Auswahl auf "per App"-Basis IST möglich (auch für System-Apps)
*Ob die zu verschiebende App ein "App2SD" gemäß "Methode A" unterstützt oder nicht, ist irrelevant.
+
*Es ist irrelevant, ob die zu verschiebende App ein "App2SD" gemäß "Methode A" unterstützt oder nicht
 
*Es kann (1), (2) und (3) verschoben werden (frei wählbar und kombinierbar pro App)
 
*Es kann (1), (2) und (3) verschoben werden (frei wählbar und kombinierbar pro App)
  
 
=== Beschreibung ===
 
=== 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"<ref>Androidmarket-Link, https://market.android.com/details?id=com.buak.Link2SD</ref> 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.
+
Das Prinzip ist insofern das Gleiche wie bei Methode B, als das hier ebenfalls mit ''symbolischen Links'' (engl. ''symbolic links'') auf Orte er SD-Karte (2. Partition) gearbeitet wird. Der Unterschied ist, dass nicht wie ein symbolischer Link für ein komplettes 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 ''Link'' eingerichtet werden soll, oder nicht. Die grafische Benutzeroberfläche, wie auch die eigentliche Ausführung stellt z.B. die App {{MarketLink|com.buak.Link2SD|Link2SD}}<ref>Google Play-Link, https://play.google.com/details?id=com.buak.Link2SD</ref> bereit. Man kann auch hier jederzeit eine App (bzw. Teil (1), (2) oder (3) dieser) 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.
 
  
 +
Als Mount-Punkt für die zweite Partition der SD-Karte verwendet ''Link2SD'' den Ordner ''/data/sdext2/''.
  
 +
Eine Anleitung zum Einrichten von Link2SD findet man [[Link2SD einrichten|hier]].
  
 
=== Vorteil ===
 
=== 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:
+
Man kann flexibel auf die SD-Karte verschieben, was am sinnvollsten ist. Eine sinnvolle Vorgehensweise wäre, 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)
+
(1) Alle "*.apk"-Dateien (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 ==
 
== 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:
+
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 ===
 
=== Mischen von Methode A und B ===
Line 127: Line 121:
 
Mit Methode B werden alle *.apk-Dateien auf die SD-Karte (ext-Partition) verlagert.
 
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
+
Wenn wir jetzt noch Methode A ("2.2+ native") hinzunehmen, können wir uns einige Apps aussuchen, deren *.apk-Dateien auf die erste Partition der SD-Karte nach
 
<pre>/sdcard/.android-secure/</pre>
 
<pre>/sdcard/.android-secure/</pre>
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.
+
verschoben werden. Das heißt, wir würden Apps (genauer: deren *.apk-Dateien) 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).
  
 
=== Mischen von Methode A und C ===
 
=== Mischen von Methode A und C ===
Line 137: Line 131:
 
=== Mischen von Methode B und C ===
 
=== 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.
+
Einen Nutzen gibt es hier eigentlich überhaupt nicht, denn beide Methoden lagern die Dateien auf dieselbe Partition der SD-Karte aus. Vermutlich wird es beim Mischen dieser Methoden sogar zu Konflikten kommen, da beide Methoden dieselbe Partition der SD-Karte auf unterschiedliche Weise verwenden. Je nachdem, unter welchen Verzeichnissen und Unterverzeichnissen die Dateien abgelegt werden, kann es im besten Fall (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.
+
Ein weiterer Punkt ist das "Einhängen" der Dateibäume ("mount"): Beide Methoden verwenden ein (eigenes) Script, das die zweite SD-Karten-Partition ins Dateisystem einhängt (mount). Je nachdem, wie intelligent diese Scripts geschrieben sind, bemerken 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 ==
 
== Einzelnachweis ==
 +
<references />
  
<references />
+
[[Kategorie:Allgemein]]

Latest revision as of 20:06, 13 August 2017

App2SD (App to SD) ist eine Möglichkeit, Apps auf die externe SD-Karte zu verschieben. Seit Android 6.0 Marshmallow "Marshmallow" besteht die Möglichkeit, die SD-Karte als internen Speicher zu formatieren, was Drittanbieterlösungen, die App2SD oder Link2SD anbieten, für den Nutzer ggf. irrelevant werden lässt. Es hängt allerdings vom spezifischen Nutzungsverhalten ab, welche Möglichkeit die beste zur Erweiterung des internen Speichers durch eine SD-Karte darstellt.

Einleitung[edit | edit source]

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 wörtlich kopiert oder bearbeitet eingefügt. Eine Kennzeichnung wird hier nicht vorgenommen.

Wozu App2SD[edit | edit source]

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, insbesondere wenn man anfängt, sein Android-Smartphone tiefergehend zu verwenden, zum Beispiel für Bildbearbeitung. Da die Apps auch ihre Daten auf dem internen Speicher ablegen, kann dieser schnell seine Grenzen 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, auszulagern. Weiter im Detail: Wenn eine App installiert und benutzt wird, 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 verschöbe, wäre der interne Speicher entlastet. Bei den meisten heute üblichen Methoden wird aber nur ein TEIL davon auf die SD-Karte verschoben, oft nur (1).

Die Möglichkeiten[edit | edit source]

Oft wird nicht die gesamte App mit all ihren Dateien auf die SD-Karte verschoben, sondern nur einzelne Teile. Um dies zu erreichen, gibt es drei Methoden.

Methode A[edit | edit source]

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[edit | edit source]

  • 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 (also nur die *.apk-Datei der jeweiligen App)

Beschreibung[edit | edit source]

Man kann für jede selbst installierte 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. Dabei wird die *.apk-Datei nach "/sdcard/.android-secure/" (="/mnt/secure/asec/") verschoben. Außerdem entsteht der Einhängpunkt (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 diese Fähigkeit "ab Werk", für Android 2.1 und früher ist dies nicht möglich.

Einschränkungen[edit | edit source]

Da diese Methode "oberflächlich" ist, ist es 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 verfügbar. Beispiele für diese nicht-funktionierenden Apps sind zum Beispiel diverse Widgets oder die App Android-Hilfe. Auch System-Apps kann man grundsätzlich nicht verschieben.

Diese Methode ist also Bestandteil des Betriebssystems. Dazu gibt es verschiedene grafische Benutzeroberflächen (=GUI), die das Hin- und Herschieben erleichtern, z.B. die App "Move2SD".

Methode B[edit | edit source]

Die Methode B "symbolic links auf Verzeichniss(e) auf der SD-Karte" bekommt oft von App-Entwicklern ebenfalls den Namen "App2SD"; damit wird eine Verwechslung mit der Methode A erzeugt, das scheint aber niemanden so richtig zu interessieren.

Eckdaten[edit | edit source]

  • ab Android 1.6
  • Root-Zugang wird benötigt!
  • Zweite SD-Karten-Partition wird benötigt! (als zweite Partition nach der FAT32-Partition, aber auch als primäre(!) Partition einrichten, und zwar als ext2/ext3/ext4 (je nachdem was das Android-System unterstützt). Man sieht für die auszulagernden Dateien zwischen 500 und 1400 MB vor, dies sollte für den Normalgebrauch ausreichen. Größere Partitonen als 1,4 GB kann Berichten zufolge zu massiven Problemen führen.)
  • Auswahl auf "per App"-Basis NICHT möglich (nur für "alle oder keine" Apps [nur Nicht-System-Apps])
  • Es ist irrelevant, ob die zu verschiebende App ein "App2SD" gemäß "Methode A" unterstützt oder nicht
  • Bei A2SD wird nur (1) verschoben (nur die *.apk-Datei), bei neueren Varianten wie A2SD+ oder "Dark Tremor Apps2SD" kann auch zusätzlich wahlweise der dalvik-cache (2) und auch (3)+(4) auf die SD-Karte verschoben werden (aber nicht App-spezifisch).

Beschreibung[edit | edit source]

Man muss diese Funktion in der Regel über das Recovery, zum Beispiel das ClockWorkMod-Recovery einspielen. Bei den meisten Custom-ROMs ist diese Funktion schon vorinstalliert. Nach dem Starten des Systems (boot) erkennt das Betriebssystem die zweite Partition der SD-Karte und bindet diese als Dateisystem ein (mount). Diese Partition steht dann unter dem Pfad

/system/sd/

zur Verfügung..

Das ist die Grundvoraussetzung, dass 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: auf der zweiten Partition. Dann wird ein symbolischer Link (symbolic 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 einer grafischen Bedienoberfläche (user interface) 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[edit | edit source]

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 wählen zwischen "nur *.[[Apk]-Dateien", "nur Dalvik-Cache" oder beides, aber diese Wahl betrifft dann folglich alle (Nicht-System-)Apps.

Methode C[edit | edit source]

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

Eckdaten[edit | edit source]

  • ab Android 1.6 (oder sogar schon früher? - naja älteres Android hat hier eh niemand...)
  • (momentan Probleme mit Android 2.3, siehe Bemerkung unten)
  • "root" wird benötigt
  • Zweite SD-Karten-Partition wird benötigt! (als zweite Partition nach der FAT32-Partition, aber auch als primary(!) Partition einrichten, und zwar als ext2/ext3/ext4 (je nachdem, was das Android-System unterstützt))
  • Auswahl auf "per App"-Basis IST möglich (auch für System-Apps)
  • Es ist irrelevant, ob die zu verschiebende App ein "App2SD" gemäß "Methode A" unterstützt oder nicht
  • Es kann (1), (2) und (3) verschoben werden (frei wählbar und kombinierbar pro App)

Beschreibung[edit | edit source]

Das Prinzip ist insofern das Gleiche wie bei Methode B, als das hier ebenfalls mit symbolischen Links (engl. symbolic links) auf Orte er SD-Karte (2. Partition) gearbeitet wird. Der Unterschied ist, dass nicht wie ein symbolischer Link für ein komplettes 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 Link eingerichtet werden soll, oder nicht. Die grafische Benutzeroberfläche, wie auch die eigentliche Ausführung stellt z.B. die App Link2SD Play Store[2] bereit. Man kann auch hier jederzeit eine App (bzw. Teil (1), (2) oder (3) dieser) zwischen internem und externem Speicher hin- und her schieben.

Als Mount-Punkt für die zweite Partition der SD-Karte verwendet Link2SD den Ordner /data/sdext2/.

Eine Anleitung zum Einrichten von Link2SD findet man hier.

Vorteil[edit | edit source]

Man kann flexibel auf die SD-Karte verschieben, was am sinnvollsten ist. Eine sinnvolle Vorgehensweise wäre, folgende Teile auf die SD-Karte zu verschieben:

(1) Alle "*.apk"-Dateien (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[edit | edit source]

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[edit | edit source]

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-Dateien auf die erste Partition der SD-Karte nach

/sdcard/.android-secure/

verschoben werden. Das heißt, wir würden Apps (genauer: deren *.apk-Dateien) 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).

Mischen von Methode A und C[edit | edit source]

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

Mischen von Methode B und C[edit | edit source]

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

Ein weiterer Punkt ist das "Einhängen" der Dateibäume ("mount"): Beide Methoden verwenden ein (eigenes) Script, das die zweite SD-Karten-Partition ins Dateisystem einhängt (mount). Je nachdem, wie intelligent diese Scripts geschrieben sind, bemerken 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[edit | edit source]