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

Ich verwende derzeit Link2SD, da der integrierte Speicher meines Telefons für mehr als ein paar wichtige Apps nicht ausreicht. Es ist sehr effektiv, aber nur bei eingeschaltetem Telefon.

Beim Wechseln von ROMs wird der Dalvik-Cache gelöscht und wenn das Telefon neu gestartet wird, sehen Sie einen Fortschrittsbalken, der besagt, dass Android Anwendungen optimiert. Bei einer angemessenen Anzahl von Anwendungen füllt der Dalvik-Cache also 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 seiner Arbeit fortfährt? Ich weiß, dass es das Erstellen eines symbolischen Links beinhalten könnte, aber ich weiß einfach nicht, wann die Dinge gemountet werden und in welcher Reihenfolge.

Antworten (2)

Natürlich kannst du. Obwohl es kein Problem zu sein scheint, dalvik-cache auf ein normales SD-Karten-Dateisystem (das gebräuchlichste, vfat) zu migrieren, wird dennoch dringend empfohlen, dass Sie Ihre SD-Karte auf ext4 (oder dasselbe wie Ihre /data) 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 Glück haben, ist dies jedoch nicht erforderlich. Angenommen, Sie haben einen Terminalemulator, um die erforderlichen Aufgaben zu erledigen.

Erstellen Sie zunächst einen Ordner, in den Sie Ihren Dalvik-Cache migrieren möchten. Dann chmodund chownden neuen Ordner anpassen /data/dalvik-cache. Wenn Sie ein SELinux-fähiges Android-Betriebssystem ausführen, vergessen Sie nicht, die Sicherheitskontexte entsprechend zu ändern. Laufen

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 als Nächstes alle Dateien von /data/dalvik-cachean Ihren neuen Speicherort, z. B. /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.

Erstellen Sie dann mit rm -r /data/dalvik-cacheeinen symbolischen Link zum neuen Standort

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. Beispielsweise 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, vergewissern Sie sich, dass sie immer noch ext4 ist UND erstellen Sie den dalvik-cache-Ordner wieder, bevor Sie Ihr Telefon zum ersten Mal starten.

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

Es gibt einige nette Howtos, die sich bei der Lösung Ihres Problems als hilfreich erweisen könnten:

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

Wäre nett, wenn Sie einige Informationen aus den Links in Ihren Beitrag einfügen könnten
Das ist ein bisschen zu viel Zeug, um es in meine Antwort zu integrieren - weshalb ich nur den grundlegenden Hinweis extrahiert habe, dh die App, mit der die Arbeit erledigt werden soll.