Kann ich den Speicherort des Dalvik-Cache ändern, z. B. mit einem symbolischen Link?

9

Ich verwende derzeit Link2SD, da der integrierte Speicher meines Telefons für mehr als einige wichtige Apps nicht ausreicht. Es ist sehr effektiv, beschränkt sich jedoch darauf, wann das Telefon eingeschaltet ist.

Während Sie die ROMs wechseln, wird der Dalvik-Cache gelöscht. Wenn das Telefon neu gestartet wird, wird ein Fortschrittsbalken angezeigt, der besagt, dass Android Anwendungen optimiert. Bei einer angemessenen Anzahl von Anwendungen füllt der Dalvik-Cache den Speicher, lange bevor link2sd etwas dagegen tun kann.

Gibt es also eine Möglichkeit, einen SD-Kartenordner als geeigneten Cache-Speicherort bereitzustellen, bevor das System mit dem Booten und der Ausführung seiner Geschäfte fortfährt? Ich weiß, dass es möglicherweise darum geht, eine symbolische Verknüpfung zu erstellen, aber ich weiß einfach nicht, wann und in welcher Reihenfolge Dinge montiert werden.

Eshwar
quelle

Antworten:

2

Natürlich kannst du. Obwohl es anscheinend kein Problem gibt, Dalvik-Cache auf ein normales SD-Kartendateisystem (das häufigste, vfat) zu migrieren, wird dringend empfohlen, Ihre SD-Karte auf ext4 (oder dasselbe wie Ihre /data) zu formatieren, um sicherzustellen, dass alles funktioniert fein.

So lass uns gehen. Eine vollständige Sicherung aller Ihrer Apps wird empfohlen, bevor Sie fortfahren. Wenn Sie jedoch Glück haben, ist dies nicht erforderlich. Angenommen, Sie haben einen Terminalemulator, um die erforderlichen Aufgaben auszuführen.

Erstellen Sie zunächst einen Ordner, in den Sie Ihren Dalvik-Cache migrieren möchten. Dann chmodund chownder neue Ordner passend /data/dalvik-cache. Wenn Sie ein SELinux-fähiges Android-Betriebssystem verwenden, vergessen Sie nicht, die Sicherheitskontexte entsprechend zu ändern. Lauf

ls -dlZ /data/dalvik-cache
ls -lZ /data/dalvik-cache

um die ursprünglichen Berechtigungen, Eigentümer / Gruppen und Sicherheitskontexte des Dalvik-Cache-Ordners anzuzeigen.

Kopieren Sie anschließend beispielsweise alle Dateien von /data/dalvik-cacheIhrem neuen Speicherort /storage/sdcard1/dalvik-cache. Sie können den cp -aBefehl verwenden, um Dateiattribute beizubehalten, was die Dinge einfacher machen würde.

Stellen Sie sicher, dass während des folgenden Schritts keine neuen Apps gestartet werden.

Dann , rm -r /data/dalvik-cacheund erstellen Sie einen symbolischen Link an den neuen Standort mit

ln -s /storage/sdcard1/dalvik-cache /data/dalvik-cache

Das ist alles. Wir sind fertig. Starten Sie Ihr Telefon neu (nicht erforderlich, aber empfohlen).

Einige Hinweise zu diesem Vorgang:

  1. Die Busybox funktioniert möglicherweise nicht immer gut, da Android auf einem stark modifizierten Linux-Kernel basiert. Zum Beispiel funktionieren fast alle SELinux-bezogenen Funktionen nicht richtig. Sie können es wie unten gezeigt testen.

    toolbox ls -Z /data
    busybox ls -Z /data
    toolbox getenforce
    busybox getenforce
    

    Diese können jedoch je nach Android-Version ordnungsgemäß funktionieren:

    busybox chcon <context> <files...>
    busybox runcon <context <program> [args...]
    
  2. Entfernen Sie niemals Ihre SD-Karte. Wenn Sie Ihre SD-Karte neu formatieren, stellen Sie sicher, dass sie noch ext4 ist, und erstellen Sie den Dalvik-Cache-Ordner wieder, bevor Sie Ihr Telefon zum ersten Mal starten .

iBug
quelle
Ich hatte keine Ahnung, wie diese umfassende Antwort geschrieben wurde, wenn ich sie nach einem Jahr wieder sehe. Ich schätze, ich habe viel über Android vergessen (was natürlich unmöglich ist).
iBug
1

Es gibt einige nette Howtos, die sich als hilfreich erweisen könnten, um Ihr Problem zu lösen:

Laut mehreren Forenthreads sollte A2SDGUI - Darktremor A2SD GUI die App der Wahl sein, um den Dalvik-Cache auf Ihre SD-Karte zu verschieben.

Izzy
quelle
1
Wäre schön, wenn Sie einige Informationen von den Links in Ihren Beitrag hinzufügen könnten
Flow
Das ist ein bisschen zu viel, um es in meine Antwort zu integrieren. Deshalb habe ich nur den grundlegenden Hinweis extrahiert, dh die App, mit der ich arbeiten möchte.
Izzy