Die Modifikation von ROMs kann im Großen und Ganzen in drei Kategorien unterteilt werden: Straffen, Ergänzen und Verschönern. Hier wird hauptsächlich über die Aspekte des Straffens und Ergänzens gesprochen, was die Verschönerung angeht, kann man auf andere Beiträge verweisen.
1. Zuerst sehen wir uns an, was im ROM enthalten ist: Wenn man das Flash-Paket mit WinRAR öffnet, sieht man mehrere Verzeichnisse. Unten sind die für uns relevanten Verzeichnisse und ihre Erklärungen aufgeführt:
dev_data/apps/ : Verzeichnis mit APK-Dateien für Systemprogramme, entspricht nach dem Flashen "/data/app_s/". Die hier befindlichen Programme können nach dem Flashen nicht deinstalliert werden.
dev_data/app/ : Verzeichnis mit APK-Dateien für Benutzerprogramme, entspricht nach dem Flashen "/data/app/". Die hier befindlichen Programme können nach dem Flashen deinstalliert werden. (Nur Versionen nach dem 28. Oktober haben dieses Verzeichnis, ältere Versionen können dies selbst hinzufügen)
META-INF/com/google/android/ : Flash-Skript-Dateien
system/etc/ : Enthält einige Konfigurationsdateien
system/etc/permissions/ : Bezieht sich auf Software-Berechtigungen, einige Patches müssen in diesem Verzeichnis Dateien hinzufügen
system/lib/ : Speicherort für Bibliotheksdateien der Systemprogramme
2. Danach lernen wir die Flash-Skript-Dateien kennen: Beim Flashen mit Recovery wird der Flash-Vorgang von Skriptdateien gesteuert.
Die Skriptdateien sind die update-script-Dateien im Verzeichnis META-INF/com/google/android im Paket, die mit einem Texteditor geöffnet werden können.
Im Skript gibt es einige Anweisungen, die für uns von Bedeutung sind:
(1) show_progress 0.1 0 : Zeigt die Fortschrittsleiste an. Das wird verwendet, um den Flash-Fortschritt anzuzeigen. Die vorangestellte 0,1 zeigt die Position der Fortschrittsleiste an und kann durch einen anderen Wert (kleiner als 1) ersetzt werden. Die nachgestellte Zahl ist nicht genau bekannt, meist steht sie außer bei der letzten Zeile, die 10 ist, sonst immer auf 0. Manche ROMs zeigen beim Flashen die Fortschrittsleiste erst bei etwa der Hälfte oder etwas mehr nach Abschluss des Flashens an. Man kann versuchen, die letzte Zeile in show_progress 0.8 10 zu ändern, dann kann die Fortschrittsleiste vollständig durchlaufen.(2) Einige Schlüsselwörter (A) "SYSTEM:" steht für das Verzeichnis des Systems nach dem Flashen = "/system/" (B) "INTERNAL:" steht für das /data-Verzeichnis nach dem Flashen = "/data/" (C) "PACKAGE:" steht für das Stammverzeichnis des Archivs, zum Beispiel "SYSTEM:etc/" entspricht dem nach dem Flashen vorhandenen Verzeichnis "/system/etc/" und "PACKAGE:dev_data" entspricht dem Verzeichnis dev_data im Archiv. (3) copy_dir PACKAGE:dev_data INTERNAL: copy_dir wird verwendet, um Verzeichnisse zu kopieren, der erste Parameter ist das zu kopierende Verzeichnis, der zweite Parameter ist das Zielverzeichnis. Zum Beispiel copy_dir PACKAGE:dev_data INTERNAL: wird verwendet, um den Inhalt des dev_data-Verzeichnisses aus dem ROM-Archiv in das "/data/"-Verzeichnis nach dem Flashen zu kopieren. (4) set_perm_recursive 0 2000 0755 0755 SYSTEM:bin wird verwendet, um die Berechtigungen für Verzeichnisse oder Dateien einzustellen; die Verwendung ähnelt der Einrichtung von Berechtigungen in Linux. (5) delete SYSTEM:app/YouTube.apk löscht Dateien, dies wird normalerweise nicht benötigt; wenn man löschen möchte, kann man dies einfach tun.
Nun kann man beginnen, Programme zu vereinfachen oder hinzuzufügen.
Zwei. Systemprogramme vereinfachen
Unter Vereinfachen versteht man eigentlich das Löschen von Systemprogrammen. Programme, die wir nicht benötigen, können gelöscht werden. Die Vorteile des Löschens dieser Programme sind:
(1) Einige Dinge benötigen wir nicht, sie werden in der Programmliste angezeigt und sind störend; wenn es zu viele dieser Programme gibt, kann dies dazu führen, dass das Öffnen der Programmliste langsamer wird.
(2) Einige Programme belegen nach dem Start Speicher, den wir nicht nutzen, zum Beispiel SMS-Filter.
(3) Einige Programme möchte man nicht verwenden, die im Original-ROM enthalten sind, und möchte diese durch andere ersetzen, zum Beispiel ADW nicht mögen und stattdessen LAUNCH PRO verwenden.
Die Methode zur Vereinfachung ist ganz einfach: Öffne das ROM mit WinRAR, gehe zu dev_data/apps, finde die unerwünschten Programme und lösche sie.
Welche Programme man vereinfachen kann: diese Frage wurde in vielen Posts erwähnt, man kann danach suchen, zum Beispiel in den folgenden Posts.
Drei. Programme hinzufügen
Es gibt zwei Möglichkeiten, Programme hinzuzufügen: die Programme als Systemprogramme oder als Benutzerprogramme hinzuzufügen.
Der Vorteil, ein Programm als Systemprogramm hinzuzufügen, liegt in der schnellen Ausführungsgeschwindigkeit (so sagen alle, ich habe es anscheinend nicht bemerkt), der Nachteil ist, dass es nicht direkt deinstalliert werden kann, nur über Tools wie RE entfernt werden kann.Eigentlich werden beim direkten Löschen der System-APK-Dateien mit RE nicht immer alle Programme vollständig deinstalliert. Wer nicht glaubt, kann sich das Verzeichnis /data/data/ anschauen. Dort gibt es für jedes Programm ein Zielverzeichnis, dessen Verzeichnisname dem Paketnamen des Programms entspricht (nicht XXX.APK, sondern nur XXX).
1. Systemprogramme hinzufügen: Die einfachste Methode zum Hinzufügen von Systemprogrammen ist: (1) Öffne die ROM-Komprimierungsdatei mit WinRAR, gehe in das Verzeichnis "dev_data/app_s" und kopiere die APK-Dateien der Programme, die hinzugefügt werden sollen, dorthin. (2) Öffne die hinzuzufügende APK-Datei mit WinRAR und überprüfe, ob im Verzeichnis "lib/armeabi" Dateien mit der Endung .so vorhanden sind. Diese werden zur Laufzeit vom Programm benötigt. Falls ja, kopiere sie in das Verzeichnis "system/lib/" im Komprimierungspaket. Viele Benutzer können Programme nicht ausführen, die sie beim Modifizieren der ROM hinzugefügt haben; das liegt meist an diesem Punkt. Zum Beispiel die neue Version der Google Pinyin Eingabemethode.
2. Benutzerprogramme hinzufügen: Das Hinzufügen von Benutzerprogrammen ist etwas komplizierter, kann nach dem Flashen aber direkt deinstalliert werden. Bei ROMs nach dem 28. Oktober kann man die APK direkt in das Verzeichnis "dev_data/app/" ziehen. Dieser Schritt ist sehr einfach; problematisch wird es, wenn die APK Bibliotheksdateien enthält. Die einfache Methode ist die gleiche wie Schritt 2 beim Hinzufügen von Systemprogrammen. Der Nachteil dieser Methode ist, dass beim Deinstallieren die Bibliotheksdateien im Verzeichnis "system/lib/" verbleiben. Zum Glück haben die meisten Programme keine Bibliothek, und die wenigen behaltenen Bibliotheken verursachen normalerweise keine Probleme. Eine fortgeschrittenere Methode besteht darin, die Installation über ein Skript durchzuführen.
ROMs vor dem 28. Oktober haben im Verzeichnis "dev_data/" keinen Ordner "app". Diesen kann man selbst erstellen (Rechtsklick in WinRAR, "Neuen Ordner erstellen" auswählen). Nachdem der Ordner erstellt wurde, muss man im Flash-Skript die Verzeichnisrechte setzen: Im Flash-Skript findet man diesen Abschnitt: copy_dir PACKAGE:dev_data INTERNAL: set_perm 1000 1000 0771 INTERNAL:app_s Und fügt danach diese Zeile hinzu: set_perm 1000 1000 0771 INTERNAL:app Die erste Zeile kopiert alle Inhalte des dev_data-Verzeichnisses aus der ROM in das /data-Verzeichnis. Die zweite Zeile setzt die Berechtigungen für app_s. Die von uns hinzugefügte Zeile setzt die Berechtigungen für app.
Anschließend kann man die ROM patchen und anpassen.
Anschließend kann man die ROM patchen und anpassen.
Vier.Das firstboot-Skript kann verwendet werden, um fortgeschrittene Einstellungen für das ROM vorzunehmen. Man kann das firstboot.sh-Skript nutzen. Das firstboot.sh-Skript befindet sich im dev_data-Verzeichnis des ROMs. Der Code im Skript wird beim ersten Start nach dem Flashen des Geräts ausgeführt. Man kann es verwenden, um das System einzustellen, APKs zu installieren und ähnliche Aufgaben.
Hier ein Blick auf einen Ausschnitt aus dem Skript von liudidi1028rom:
# System-Standardeinstellungen
/system/xbin/sqlite3 "INSERT INTO system (name, value) VALUES ('trackball_wake_screen', 1);"
/system/xbin/sqlite3 "INSERT INTO system (name, value) VALUES ('trackball_unlock_screen', 1);"
/system/xbin/sqlite3 "INSERT INTO system (name, value) VALUES ('lock_home_in_memory', 1);"
Ich denke, jeder kann sich denken, wofür diese drei Zeilen stehen. Warum das Skript so geschrieben ist, fragt mich nicht, ich kenne mich damit auch nicht aus, wir können es gemeinsam erforschen.
Im Skript kann man Befehle wie rm, mv usw. verwenden, damit kann man bestimmte Konfigurationsdateien direkt überschreiben. Zum Beispiel:
busybox rm /system/etc/Datei
busybox mv /system/etc/Datei
Natürlich, wenn man Systemdateien ändert, muss man zuerst die Berechtigung erhalten:
busybox mount -o remount,rw /system
Danach wieder schreibgeschützt machen:
busybox mount -o remount,ro /system
firstboot.sh ist sehr nützlich. Es wäre toll, wenn jemand ein grundlegendes Tutorial dazu schreiben könnte!