Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การแก้ไขปัญหา >> Android

วิธีสร้าง Flashable Zip สำหรับ Android System Mods

หากคุณเป็นนักพัฒนา Android ที่ต้องการสร้างแอปสำหรับพาร์ติชัน /system (เช่น root apps) จะมีบางกรณีที่คุณจะต้องการสร้าง flashable .zip สำหรับแอปของคุณ เพื่อให้ไฟล์แอปสามารถติดตั้งไปยังพาร์ติชัน /system ได้อย่างถูกต้อง

การใช้งาน flashable .zips อื่นๆ รวมถึง:

  • การปรับเปลี่ยน DPI
  • การใช้ฟอนต์กำหนดเอง
  • การใช้ boot animation กำหนดเอง
  • การลบหรือเพิ่ม system apps

การสั่งให้ผู้ใช้จัดการในระบบไฟล์และย้ายไฟล์ด้วยตนเองเป็นการเสียเวลาสำหรับทุกฝ่าย - การสร้าง flashable .zip เป็นเส้นทางที่สะดวกกว่ามาก คู่มือของ Appual นี้จะแสดงวิธีสร้าง flashable zip สำหรับ Android

เราจะแสดง addon.d script ด้วย เพื่อให้การเปลี่ยนแปลงระบบแบบกำหนดเองจะอยู่รอดหลัง dirty ROM flash - ดังนั้นผู้ใช้จะไม่ต้องแฟลช zip ของคุณใหม่สำหรับแต่ละอัปเดต

ข้อกำหนด:

  • Root file explorer (MiXplorer, Solid Explorer)
  • ZipSigner (สำหรับเซ็น zip) หรือ MiX Signer plug-in หากคุณใช้ MixPlorer
  • Nandroid backup แนะนำอย่างยิ่ง

คุณควรเตรียมไฟล์ทั้งหมดที่จะใส่ใน zip - APKs, configs, boot animations ฯลฯ จัดระเบียบทุกอย่างก่อนเริ่ม เพราะนี่เป็นกระบวนการที่ละเอียดอ่อน

เทมเพลตของ Custom Zip

หากคุณต้องการดาวน์โหลดเทมเพลต zip ที่คุณสามารถปรับแต่งตามความต้องการของคุณเอง หรือใช้เป็นฐานสำหรับการสร้าง flashable zip คุณสามารถดาวน์โหลดได้ที่นี่:

  • TEMPLATE SCRIPT: DOWNLOAD LINK (คำสั่งพื้นฐาน / คุณต้องเพิ่มค่า custom ของคุณเอง: apps, paths ของ ringtones, bootanimation...)
  • TEMPLATE ZIP: DOWNLOAD LINK (ตัวอย่างมีประโยชน์เสมอสำheเข้าใจคำอธิบาย มาช่วยเข้าใจโครงสร้างไฟล์ของคุณได้)

เทมเพลตควรเพียงพอสำหรับเริ่มใช้ custom script

คุณต้องจำ path หลักเหล่านี้ เพราะนี่คือสิ่งในพาร์ติชัน /system ที่ flashable zips ของคุณจะมักจะเป้าหมาย:

addon.d => backup script เพื่ออยู่รอดหลัง dirty flash (ใช้โดย GApps package ตัวอย่างเช่น) app and priv-app => system apps ที่จะเพิ่มหรือลบ etc => host file fonts => ฟอนต์ของคุณ media => bootanimation.zip ของคุณ media > audio > alarms => เสียงสำหรับ鬧鐘 media > audio > notifications => เสียงสำหรับการแจ้งเตือน media > audio > ringtones => เสียงสำหรับนาฬิกาปลุก media > audio > ui => เสียงสำหรับสิ่งต่างๆ เช่น แบตเตอรี่ต่ำ ปลดล็อก กล้อง.. root of /system สำหรับไฟล์ build.prop

จำไว้เสมอว่า ไฟล์ที่ถูกลบจาก path เหล่านี้จะถูกติดตั้งใหม่หลัง dirty flash และไฟล์ที่เพิ่มด้วยตนเองจะถูกลบ นี่คือเหตุผลที่จำเป็นต้องสร้างสคริปต์ที่ทำแบ็กอัป /system mods ของคุณ

ตัวอย่าง Update-Script

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.");

หมายเหตุ: ui_print(" "); ใช้สำหรับข้อความข้อความ บรรทัดเหล่านี้ไม่ทำอะไรเลย

คุณควร unmount และ re-mount พาร์ติชันเสมอก่อนทำงานบนมัน

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

เพื่อลบคอมโพเนนต์/แอประบบ ให้ใส่ comma ที่ท้ายแต่ละบรรทัด ยกเว้นบรรทัดสุดท้าย

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

แตกไฟล์ระบบที่คุณต้องการติดตั้ง

package_extract_dir("system", "/system/"); ตั้งค่าสิทธิ์ไฟล์ set_perm(0, 0, 0755, "/system/addon.d/99-dirty.sh"); .............. set_perm(0, 0, 0644, "/system/priv-app/V4A-Magisk.apk");

ทำสิ่งเดียวกันแต่สำหรับโฟลเดอร์ /data ดังนั้นคุณจะ mount พาร์ติชัน แตกไฟล์ data ที่คุณต้องการเพิ่ม และตั้งค่าสิทธิ์

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

ต่อไปคุณจะ unmount พาร์ติชันที่แก้ไขแล้ว

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

ตัวอย่าง Addon.D script

#!/sbin/sh # # /system/addon.d/99-dirty.sh # /system ถูก format และติดตั้งใหม่ แล้วไฟล์เหล่านี้จะถูกกู้คืน # . /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

สร้างรายการไฟล์ที่คุณต้องการเก็บไว้หลัง dirty flash

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 ไฟล์ที่คุณไม่ต้องการให้ติดตั้งหลัง dirty flash (ไฟล์ระบบที่คุณลบใน modification ของคุณซึ่งจะถูกติดตั้งใหม่จาก dirty flash)

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 ;;

วิธีสร้าง Flashable Android Zip

 

เราจะใช้ MiXplorer เพราะมันเป็น root explorer และ file manager ที่ดีที่สุดสำหรับ Android ไม่ต้องสงสัย

  1. ก่อนอื่นเลือกโฟลเดอร์ทั้งหมดที่จะรวมใน zip และเลือก Archive
    วิธีสร้าง Flashable Zip สำหรับ Android System Mods
  2. ยืนยันการสร้างไฟล์ archive ตั้งชื่อและเลือก Store
    วิธีสร้าง Flashable Zip สำหรับ Android System Mods
  3. flashable zip ของคุณจะถูกสร้างขึ้น เลือกไฟล์ zip แล้ว Sign it (ใช้ MiX signer plugin)
  4. ตอนนี้เลือก TestKey เพื่อตรวจสอบข้อผิดพลาดลายเซ็น
  5. ตอนนี้คุณสามารถแฟลช zip ได้ - แนะนำให้ย้ายไป /SDcard เพื่อหาง่ายจาก custom recovery

บันทึกสุดท้าย

flashable zip ของคุณต้องติดตั้งหลัง clean flash หรือหลัง wipe พาร์ติชัน /system และ dirty flash ROM ของคุณ updater-script จะลบและเพิ่มไฟล์ระบบที่คุณระบุในสคริปต์ - แต่ปล่อย addon.d script ไว้ เพราะมันจะทำงานของมันโดยไม่มีการรบกวนจากคุณ

หลังการติดตั้งครั้งแรก ตรวจสอบพาร์ติชัน /system ให้ละเอียดว่าทุกอย่างถูกต้อง - ไฟล์ถูกลบ ฯลฯ อาจคุณพิมพ์ชื่อไฟล์ผิดและมันไม่ถูกลบ เกิดขึ้นได้