So erstellen Sie eine flashbare Zip-Datei für Android-Systemmods

Wenn Sie ein Android-Entwickler sind, der Apps erstellen möchte, die für / system partition bestimmt sind (z. B. Root-Apps), gibt es bestimmte Fälle, in denen Sie eine flashbare ZIP-Datei für Ihre App erstellen möchten. Auf diese Weise können die App-Dateien ordnungsgemäß auf der / system-Partition installiert werden.

Einige andere Verwendungszwecke von flashbaren .zips sind:

  • Ändern der DPI
  • Anwenden einer benutzerdefinierten Schriftart
  • Anwenden einer benutzerdefinierten Startanimation
  • System-Apps entfernen oder hinzufügen

Das Anweisen Ihrer Benutzer, im Dateisystem herumzuspielen und Dateien manuell zu verschieben, ist eine Zeitverschwendung für alle Beteiligten. Das Erstellen einer flashbaren ZIP-Datei ist eine viel bequemere Methode. Diese Appual-Anleitung zeigt Ihnen, wie Sie eine flashbare Zip-Datei für Android erstellen.

Wir zeigen Ihnen auch ein addon.d-Skript, damit benutzerdefinierte Systemänderungen einen fehlerhaften ROM-Flash überstehen. Daher müssen Benutzer Ihre Zip-Datei nicht bei jedem Update erneut flashen.

Bedarf:

  • Ein Root-Datei-Explorer (MiXplorer, Solid Explorer)
  • ZipSigner (zum Signieren von Reißverschlüssen) oder das MiX Signer-Plug-In, wenn Sie MixPlorer verwenden
  • Ein Nandroid-Backup wird dringend empfohlen

Sie sollten auch alle Dateien vorbereiten, die in die Zip-Datei aufgenommen werden – APKs, Konfigurationen, Boot-Animationen usw. Lassen Sie alles organisieren, bevor wir beginnen, da dies ein heikler Prozess ist.

Vorlage eines benutzerdefinierten Reißverschlusses

Wenn Sie eine Vorlagen-Zip-Datei herunterladen möchten, die Sie an Ihre eigenen Bedürfnisse anpassen können, oder sie als Grundlage für die Erstellung einer flashbaren Zip-Datei verwenden möchten, können Sie sie hier herunterladen:

  • TEMPLATE SCRIPT: DOWNLOAD-LINK (Grundbefehle / Sie müssen Ihre benutzerdefinierten Werte hinzufügen: Apps, Klingeltöne, Bootanimation…)
  • TEMPLATE ZIP: DOWNLOAD-LINK (Beispiele sind immer willkommen, um eine Erklärung besser zu verstehen. Es kann hilfreich sein, die Struktur Ihrer Dateien zu verstehen.)

Die Vorlage sollte ausreichen, um ein benutzerdefiniertes Skript zu verwenden.

Sie müssen sich diese Hauptpfade merken, da dies die Dinge in der / system-Partition sind, auf die Ihre flashbaren Zips normalerweise abzielen:

addon.d => backup script to survive a dirty flash (used by GApps package for instance)
app and priv-app => system apps to add or remove
etc => host file
fonts => your font
media => your bootanimation.zip
media > audio > alarms => sounds for alarms
media > audio > notifications => sounds for notifications
media > audio > ringtones => sounds for ringtones
media > audio > ui => sounds for various things such as low battery, unlock, camera,..
root of /system for build.prop file

Denken Sie immer daran, dass Dateien, die aus diesen Pfaden entfernt wurden, nach einem fehlerhaften Flash erneut installiert werden und manuell hinzugefügte Dateien entfernt werden. Aus diesem Grund ist es notwendig, ein Skript zu erstellen, das eine Sicherungskopie Ihrer / system-Mods erstellt.

Beispiel eines Update-Skripts

ui_print("+-------------------------------------+");
ui_print("| CLEAN FLASH SCRIPT |");
ui_print("| |");
ui_print("| by Primokorn |");
ui_print("+-------------------------------------+");
run_program("/sbin/busybox", "umount", "/system");
run_program("/sbin/busybox", "mount", "/system");
ui_print(" ");
ui_print("***Deleting bloatwares***");
delete_recursive(
"/system/app/adaway.apk",
"/system/app/AdAway",
"/system/app/BasicDreams",
"/system/app/BookmarkProvider",
"/system/app/Calendar",
"/system/app/CalendarWidget",
"/system/app/CMFileManager",
"/system/app/CMWallpapers",
"/system/app/DeskClock",
"/system/app/Eleven",
"/system/app/Email",
"/system/app/ExactCalculator",
"/system/app/Exchange2",
"/system/app/Gello",
"/system/app/HexoLibre",
"/system/app/Jelly",
"/system/app/LiveWallpapersPicker",
"/system/app/LockClock",
"/system/app/messaging",
"/system/app/MiXplorer",
"/system/app/NexusLauncher",
"/system/app/Phonograph",
"/system/app/PhotoTable",
"/system/app/PicoTts",
"/system/app/PicoTTS",
"/system/app/ResurrectionStats",
"/system/app/SoundRecorder",
"/system/app/Terminal",
"/system/app/TugaBrowser",
"/system/app/Wallpaper",
"/system/app/WallpaperPickerGoogle",
"/system/priv-app/AudioFX",
"/system/priv-app/Chrome",
"/system/priv-app/Gallery2",
"/system/priv-app/MusicFX",
"/system/priv-app/OnePlusCamera",
"/system/priv-app/OnePlusGallery",
"/system/priv-app/OnePlusMusic",
"/system/priv-app/Recorder",
"/system/priv-app/Screencast",
"/system/priv-app/Snap",
"/system/priv-app/SnapdragonCamera",
"/system/priv-app/SnapdragonGallery",
"/system/priv-app/WeatherManagerService",
"/system/priv-app/WeatherProvider",
"/system/priv-app/Tag"
);
ui_print("Installing apps and mods, etc");
show_progress(8.800000, 5);
package_extract_dir("system", "/system/");
ui_print("***Fixing permissions***");
set_perm(0, 0, 0755, "/system/addon.d/99-dirty.sh");
set_perm(0, 0, 0644, "/system/etc/gps.conf");
set_perm(0, 0, 0644, "/system/fonts/Roboto-Regular.ttf");
set_perm(0, 0, 0644, "/system/media/audio/ringtones/PlasticRing.ogg");
set_perm(0, 0, 0644, "/system/priv-app/Phonesky.apk");
set_perm(0, 0, 0644, "/system/priv-app/microG.apk");
set_perm(0, 0, 0644, "/system/priv-app/Gsam.apk");
set_perm(0, 0, 0644, "/system/priv-app/BBS.apk");
set_perm(0, 0, 0644, "/system/priv-app/V4A-Magisk.apk");
run_program("/sbin/busybox", "mount", "/data");
package_extract_dir("data", "/data/");
set_perm(0, 0, 0755, "/data/local/afscript.sh");
show_progress(8.800000, 5);
run_program("/sbin/busybox", "umount", "/data");
run_program("/sbin/busybox", "umount", "/system");
ui_print(" ");
ui_print("Done.");
ui_print("Ready to reboot.");

Hinweis: ui_print (”“); ist für SMS. Diese Zeilen machen nichts.

Sie sollten die Partition immer aushängen und erneut mounten, bevor Sie daran arbeiten.

run_program("/sbin/busybox", "umount", "/system");
run_program("/sbin/busybox", "mount", "/system");

Um Systemkomponenten / Apps zu entfernen, setzen Sie am Ende jeder Zeile ein Komma, mit Ausnahme der letzten.

delete_recursive(
"/system/app/adaway.apk",
"/system/app/AdAway",
........................
"/system/priv-app/WeatherProvider",
"/system/priv-app/Tag"
);

Extrahieren Sie die Systemdateien, die Sie installieren möchten.

package_extract_dir("system", "/system/");

Set the file permissions.

set_perm(0, 0, 0755, "/system/addon.d/99-dirty.sh");
..............
set_perm(0, 0, 0644, "/system/priv-app/V4A-Magisk.apk");

Machen Sie dasselbe, nur für den Ordner / data. Sie mounten also die Partition, extrahieren die Daten, die Sie hinzufügen möchten, und legen die Berechtigungen fest.

run_program("/sbin/busybox", "mount", "/data");
package_extract_dir("data", "/data/");
set_perm(0, 0, 0755, "/data/local/afscript.sh");

Als Nächstes werden Sie die geänderten Partitionen aushängen.

run_program("/sbin/busybox", "umount", "/data");
run_program("/sbin/busybox", "umount", "/system");

Beispiel für ein Addon.D-Skript

#!/sbin/sh
# 
# /system/addon.d/99-dirty.sh
# /system is formatted and reinstalled, then thes files are restored.
#

. /tmp/backuptool.functions

list_files() {
cat <<EOF
addon.d/99-dirty.sh
fonts/Roboto-Regular.ttf
media/audio/ringtones/PlasticRing.ogg
priv-app/BBS.apk
priv-app/Gsam.apk
priv-app/microG.apk
priv-app/PhoneSky.apk
priv-app/V4A-Magisk.apk
etc/gps.conf
etc/hosts
EOF
}

case "$1" in
backup)
list_files | while read FILE DUMMY; do
backup_file $S/"$FILE"
done
;;
restore)
list_files | while read FILE REPLACEMENT; do
R=""
[ -n "$REPLACEMENT" ] && R="$S/$REPLACEMENT"
[ -f "$C/$S/$FILE" ] && restore_file $S/"$FILE" "$R"
done
rm -rf /system/app/adaway.apk
rm -rf /system/app/AdAway
rm -rf /system/app/BasicDreams
rm -rf /system/app/BookmarkProvider
rm -rf /system/app/Calendar
rm -rf /system/app/CalendarWidget
rm -rf /system/app/CMFileManager
rm -rf /system/app/CMWallpapers
rm -rf /system/app/DeskClock
rm -rf /system/app/Eleven
rm -rf /system/app/Email
rm -rf /system/app/ExactCalculator
rm -rf /system/app/Exchange2
rm -rf /system/app/Gello
rm -rf /system/app/HexoLibre
rm -rf /system/app/Jelly
rm -rf /system/app/LatinIME
rm -rf /system/app/LiveWallpapersPicker
rm -rf /system/app/LockClock
rm -rf /system/app/messaging
rm -rf /system/app/MiXplorer
rm -rf /system/app/NexusLauncher
rm -rf /system/app/Nova.apk
rm -rf /system/app/Phonograph
rm -rf /system/app/PhotoTable
rm -rf /system/app/PicoTts
rm -rf /system/app/PicoTTS
rm -rf /system/app/ResurrectionStats
rm -rf /system/app/SoundRecorder
rm -rf /system/app/Terminal
rm -rf /system/app/TugaBrowser
rm -rf /system/app/Wallpaper
rm -rf /system/app/WallpaperPickerGoogle
rm -rf /system/priv-app/AudioFX
rm -rf /system/priv-app/Chrome
rm -rf /system/priv-app/Gallery2
rm -rf /system/priv-app/LatinIME
rm -rf /system/priv-app/MusicFX
rm -rf /system/priv-app/OnePlusCamera
rm -rf /system/priv-app/OnePlusGallery
rm -rf /system/priv-app/OnePlusMusic
rm -rf /system/priv-app/Recorder
rm -rf /system/priv-app/Screencast
rm -rf /system/priv-app/SnapdragonCamera
rm -rf /system/priv-app/SnapdragonGallery
rm -rf /system/priv-app/Snap
rm -rf /system/priv-app/Trebuchet
rm -rf /system/priv-app/WeatherManagerService
rm -rf /system/priv-app/WeatherProvider
rm -rf /system/priv-app/Tag
;;
pre-backup)
# Stub
;;
post-backup)
# Stub
;;
pre-restore)
# Stub
;;
post-restore)
# Stub
;;
esac

Erstellen Sie eine Liste der Dateien, die Sie nach einem Dirty Flash behalten möchten.

list_files() {
cat <<EOF
addon.d/99-dirty.sh
fonts/Roboto-Regular.ttf
media/audio/ringtones/PlasticRing.ogg
priv-app/BBS.apk
priv-app/Gsam.apk
priv-app/microG.apk
priv-app/PhoneSky.apk
priv-app/V4A-Magisk.apk
etc/gps.conf
etc/hosts
EOF
}

RM -RF die Dateien, die Sie nach einem Dirty Flash nicht installieren möchten (Systemdateien, die Sie in Ihrer Änderung entfernt haben und die von einem Dirty Flash erneut installiert werden)

rm -rf /system/app/adaway.apk
rm -rf /system/app/AdAway
rm -rf /system/app/BasicDreams
rm -rf /system/app/BookmarkProvider
................................................
rm -rf /system/priv-app/WeatherProvider
rm -rf /system/priv-app/Tag
;;

So erstellen Sie eine flashbare Android-Zip

Wir werden dafür MiXplorer verwenden, da es zweifellos der beste Root-Explorer und Dateimanager für Android ist.

  1. Wählen Sie zuerst alle Ordner aus, die in der Zip-Datei enthalten sein sollen, und wählen Sie Archivieren.
  2. Bestätigen Sie die Erstellung Ihrer Archivdatei, geben Sie ihr einen Namen und wählen Sie Speichern.
  3. Ihre flashbare Zip-Datei wird erstellt. Wählen Sie also die Zip-Datei aus und signieren Sie sie (mit dem MiX-Signer-Plugin).
  4. Wählen Sie nun TestKey, um es auf Signaturfehler zu überprüfen.
  5. Sie können die Zip-Datei jetzt flashen. Empfehlen Sie, sie auf / SDcard zu verschieben, um sie bei der benutzerdefinierten Wiederherstellung leicht zu finden.

Schlussbemerkungen

Ihr flashbarer Zip muss nach einem sauberen Flash oder nach dem Löschen der / system-Partition und einem fehlerhaften Flash Ihres ROM installiert werden. Das Updater-Skript entfernt und fügt die Systemdateien hinzu, die Sie in Ihrem Skript angegeben haben. Lassen Sie das Skript addon.d jedoch in Ruhe, da es seine Aufgabe ohne Ihre Störung erledigt.

Überprüfen Sie nach Ihrer ersten Installation die Partition / system gründlich, um sicherzustellen, dass alles korrekt ist – Dateien werden entfernt usw. Möglicherweise hatten Sie einen Tippfehler in einem Dateinamen, der nicht entfernt wurde.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *