Computer >> คอมพิวเตอร์ >  >> การแก้ไขปัญหา >> Android

วิธีสร้าง Zip แบบ Flashable สำหรับ Mod ระบบ Android

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

การใช้ไฟล์ .zip แบบแฟลชได้อื่นๆ อีกสองสามรายการ ได้แก่:

  • การปรับเปลี่ยน DPI
  • การใช้แบบอักษรที่กำหนดเอง
  • การใช้แอนิเมชั่นการบูตแบบกำหนดเอง
  • การลบหรือเพิ่มแอประบบ

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

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

ข้อกำหนด:

  • ตัวสำรวจไฟล์รูท (MiXplorer, Solid Explorer)
  • ZipSigner (สำหรับการเซ็นชื่อใน zip) หรือปลั๊กอิน MiX Signer หากคุณใช้ MixPlorer
  • ขอแนะนำให้ใช้การสำรองข้อมูล Nandroid

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

เทมเพลตของ Zip แบบกำหนดเอง

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

  • สคริปต์เทมเพลต: ลิงก์ดาวน์โหลด (คำสั่งพื้นฐาน / คุณต้องเพิ่มค่าที่กำหนดเอง:แอป เส้นทางเสียงเรียกเข้า แอนิเมชั่นการบูต…)
  • TEMPLATE ZIP: ลิงก์ดาวน์โหลด (ตัวอย่างสามารถเข้าใจคำอธิบายได้ดียิ่งขึ้นเสมอ ซึ่งช่วยให้เข้าใจวิธีจัดโครงสร้างไฟล์ของคุณ)

เทมเพลตควรเพียงพอที่จะเริ่มใช้สคริปต์ที่กำหนดเองได้

คุณจะต้องจำเส้นทางหลักเหล่านี้ เนื่องจากสิ่งเหล่านี้คือสิ่งที่อยู่ในพาร์ติชั่น /system ที่ไฟล์ zip แบบแฟลชได้ของคุณมักจะกำหนดเป้าหมาย:

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

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

ตัวอย่างสคริปต์อัปเดต

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(” “); สำหรับข้อความ บรรทัดเหล่านี้ไม่ได้ทำอะไรเลย

คุณควรยกเลิกการต่อเชื่อมและติดตั้งพาร์ติชั่นใหม่ทุกครั้งก่อนดำเนินการ

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

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

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

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

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

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

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

ถัดไป คุณจะยกเลิกการต่อเชื่อมพาร์ติชั่นที่แก้ไขแล้ว

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

ตัวอย่างสคริปต์ Addon.D

#!/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

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

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

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

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

เราจะใช้ MiXplorer สำหรับสิ่งนี้ เนื่องจากเป็นเครื่องมือสำรวจรูทและตัวจัดการไฟล์ที่ดีที่สุดสำหรับ Android

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

หมายเหตุสุดท้าย

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

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