การเปลี่ยนแปลง ROM โดยทั่วไปแบ่งออกเป็นสามประเภท ได้แก่ การปรับปรุงให้กระชับ การเสริม และการทําให้สวยงาม ที่นี่เราจะพูดถึงการทําให้เรียบง่ายและการเพิ่มเติม ส่วนสําหรับการแต่งเติม คุณสามารถดูโพสต์อื่น ๆ ได้1.ก่อนอื่น มาดูว่าภายใน ROM มีอะไรบ้าง: หลังจากเปิดแพ็กเกจแฟลชด้วย WinRAR คุณจะเห็นไดเรกทอรีหลายรายการ ด้านล่างนี้คือไดเรกทอรีที่เกี่ยวข้องกับเราและคําอธิบาย dev_data/apps/: ไดเรกทอรีไฟล์ apk ของโปรแกรมระบบ เทียบเท่ากับ "/data/app_s/" หลังจากแฟลช ซึ่งโปรแกรมไม่สามารถถอนการติดตั้งหลังจากแฟลชได้ dev_data/app/: ไดเรกทอรีไฟล์ apk สําหรับโปรแกรมผู้ใช้ เทียบเท่ากับ "/data/app/" หลังจากแฟลช; โปรแกรมที่นี่สามารถถอนการติดตั้งได้หลังจากแฟลช(มีเฉพาะเวอร์ชันหลังวันที่ 28 ตุลาคมเท่านั้น; เวอร์ชันก่อนหน้าสามารถเพิ่มไดเรกทอรีนี้ได้เอง) META-INF/com/google/android/ : ไฟล์สคริปต์กระพริบ system/etc/: เก็บไฟล์กําหนดค่าบางส่วน system/etc/permissions/: ที่เกี่ยวข้องกับสิทธิ์ซอฟต์แวร์; แพตช์บางตัวจําเป็นต้องเพิ่มไฟล์ในไดเรกทอรีนี้ system/lib/: ตําแหน่งที่เก็บไฟล์ไลบรารีโปรแกรมระบบ 2.ต่อไป มาทําความรู้จักกับไฟล์สคริปต์ที่กระพริบกันเมื่อแฟลชพร้อมกู้คืน กระบวนการกระพริบจะถูกควบคุมโดยไฟล์สคริปต์ไฟล์สคริปต์คือไฟล์สคริปต์อัปเดตในไดเรกทอรี META-INF com google android ในแพ็กเกจบีบอัด ซึ่งสามารถเปิดได้ด้วยโปรแกรมแก้ไขข้อความมีคําสั่งหลายคําสั่งในไฟล์สคริปต์ที่เราสนใจ: (1) show_progress 0.1 0: แสดงแถบความคืบหน้า ซึ่งใช้เพื่อแสดงแถบความคืบหน้าที่กระพริบ 0.1 ตัวแรกแสดงตําแหน่งของแถบความคืบหน้าและสามารถเปลี่ยนเป็นค่าอื่น (น้อยกว่า 1)ความหมายของตัวเลขต่อไปนี้ไม่ชัดเจน โดยทั่วไป ยกเว้นตัวสุดท้ายที่ 10 ส่วนที่เหลือจะเป็น 0 ROM บางตัวแสดงว่าแถบความคืบหน้าอยู่แค่ครึ่งทางหลังจากแฟลชคุณสามารถลองเปลี่ยนบรรทัดสุดท้ายเป็น show_progress 0.8 10 แถบความคืบหน้าจะถึงปลาย(2) คำสำคัญบางคำ (A) "SYSTEM:" หมายถึงไดเรกทอรีของระบบหลังจากแฟลช = "/system/" (B) "INTERNAL:" หมายถึงไดเรกทอรี /data หลังจากแฟลช = "/data/" (C) "PACKAGE:" หมายถึงไดเรกทอรีรากของไฟล์บีบอัด เช่น "SYSTEM:etc/" หมายถึงไดเรกทอรี "/system/etc/" หลังจากแฟลช "PACKAGE:dev_data" หมายถึงไดเรกทอรี dev_data ภายในไฟล์บีบอัด (3) copy_dir PACKAGE:dev_data INTERNAL: copy_dir ใช้สำหรับคัดลอกไดเรกทอรี พารามิเตอร์ตัวแรกคือไดเรกทอรีที่ต้องการคัดลอก พารามิเตอร์ตัวที่สองคือปลายทางของการคัดลอก เช่น copy_dir PACKAGE:dev_data INTERNAL: ใช้เพื่อคัดลอกเนื้อหาในไดเรกทอรี dev_data จากไฟล์บีบอัด ROM ไปยังไดเรกทอรี "/data/" หลังจากแฟลช (4) set_perm_recursive 0 2000 0755 0755 SYSTEM:bin ใช้ตั้งค่าการอนุญาตของไดเรกทอรีหรือไฟล์ การใช้งานคล้ายกับการตั้งค่าการอนุญาตใน Linux (5) delete SYSTEM:app/YouTube.apk ลบไฟล์ โดยทั่วไปไม่ค่อยได้ใช้ หากต้องการลบก็ลบได้เลย เรียบร้อยแล้ว สามารถเริ่มปรับแต่งและเพิ่มโปรแกรมได้ สอง. การปรับแต่งโปรแกรมของระบบ การปรับแต่งนี้จริง ๆ คือการลบโปรแกรมระบบ โปรแกรมที่เราไม่ต้องการสามารถลบออกได้ ข้อดีของการลบโปรแกรมเหล่านี้คือ (1) บางอย่างเราไม่ใช้ ปรากฏในรายการโปรแกรมอาจกวนใจ และถ้ามีโปรแกรมเหล่านี้มากเกินไป อาจทำให้เปิดรายการโปรแกรมช้า (2) บางโปรแกรมเริ่มทำงานแล้วจะใช้หน่วยความจำ แต่เราไม่ได้ใช้ เช่น การบล็อกข้อความ (3) บางโปรแกรมเราไม่ต้องการใช้ของ ROM เดิม ต้องการเปลี่ยนเป็นตัวอื่น เช่น ไม่ชอบ ADW ต้องการใช้ LAUNCH PRO เป็นต้น วิธีการปรับแต่งง่าย ๆ เปิด ROM ด้วย WinRAR เข้าไปที่ dev_data apps หาโปรแกรมที่ไม่ต้องการ แล้วลบได้ โปรแกรมที่สามารถปรับแต่ง: ปัญหานี้มีหลายโพสต์กล่าวถึงแล้ว สามารถค้นหาได้ เช่น โพสต์ด้านล่างนี้ สาม. การเพิ่มโปรแกรม การเพิ่มโปรแกรมมีสองวิธี หนึ่งคือเพิ่มโปรแกรมเป็นโปรแกรมระบบ สองคือเพิ่มเป็นโปรแกรมของผู้ใช้ ข้อดีของการเพิ่มโปรแกรมเป็นโปรแกรมระบบคือ การทำงานเร็ว (หลายคนพูดแบบนี้ ผมเหมือนยังไม่ค่อยได้สัมผัส) ข้อเสียคือไม่สามารถถอนการติดตั้งได้โดยตรง ต้องลบผ่านเครื่องมือ RE เท่านั้นจริง ๆ แล้วการใช้ RE ลบไฟล์ APK ของโปรแกรมระบบโดยตรงไม่ได้หมายความว่าจะลบออกหมดทุกอย่าง หากไม่เชื่อ ทุกคนสามารถดูในไดเรกทอรี /data/data/ ว่าโปรแกรมแต่ละตัวมีโฟลเดอร์เป้าหมายหรือไม่ โดยชื่อไดเรกทอรีจะเหมือนกับชื่อแพ็กเกจของโปรแกรม (ไม่ใช่ XXX.APK แบบ XXX) 1. เพิ่มโปรแกรมระบบ: วิธีเพิ่มโปรแกรมระบบง่ายที่สุด: (1) ใช้ WinRAR เปิดไฟล์ ROM ที่บีบอัด เข้าไปที่ไดเรกทอรี "dev_data/app_s" แล้วคัดลอกไฟล์ APK ของโปรแกรมที่ต้องการเพิ่มเข้าไป (2) ใช้ WinRAR เปิดไฟล์ APK ที่ต้องการเพิ่ม ดูว่าในไดเรกทอรี "lib/armeabi" มีไฟล์ที่ลงท้ายด้วย .so หรือไม่ ซึ่งไฟล์เหล่านี้คือไฟล์ไลบรารีที่โปรแกรมต้องใช้ขณะรัน ถ้ามี ให้คัดลอกไปยังไดเรกทอรี "system/lib/" ในไฟล์บีบอัด บางคนที่แก้ไข ROM แล้วเพิ่มโปรแกรมแต่โปรแกรมไม่สามารถทำงานได้ ส่วนใหญ่เป็นเพราะเหตุนี้ เช่น เวอร์ชันใหม่ของ Google Pinyin Input 2. เพิ่มโปรแกรมผู้ใช้: การเพิ่มโปรแกรมผู้ใช้อาจยุ่งยากเล็กน้อย แต่หลังจากแฟลชแล้วสามารถถอนการติดตั้งได้โดยตรง ถ้าใช้ ROM หลังวันที่ 28 ตุลาคม ให้ลากไฟล์ APK เข้าไดเรกทอรี "dev_data/app/" ขั้นตอนนี้ง่าย ปัญหาคือถ้า APK มีไฟล์ไลบรารี วิธีแก้ปัญหาแบบง่ายเหมือนกับขั้นตอนที่ 2 ของการเพิ่มโปรแกรมระบบ ข้อเสียของวิธีนี้คือไฟล์ไลบรารีจะยังคงอยู่ใน "system/lib/" ตอนถอนการติดตั้ง โชคดีที่โปรแกรมส่วนใหญ่ไม่มีไฟล์ไลบรารี และไฟล์ไลบรารีที่เหลือก็ไม่มีปัญหาอะไร เป็นวิธีที่ซับซ้อนหน่อยสามารถติดตั้งโดยเขียนสคริปต์ สำหรับ ROM ก่อนวันที่ 28 ตุลาคม จะไม่มีไดเรกทอรี app ใน "dev_data/" ทุกคนสามารถสร้างขึ้นเอง (คลิกขวาใน WinRAR เลือกสร้างโฟลเดอร์ใหม่) หลังจากสร้างไดเรกทอรีแล้ว ต้องตั้งค่าสิทธิ์ไดเรกทอรีในสคริปต์แฟลช: ในสคริปต์แฟลชให้หาส่วนนี้: copy_dir PACKAGE:dev_data INTERNAL: set_perm 1000 1000 0771 INTERNAL:app_s แล้วเพิ่มบรรทัดนี้หลังจากนั้น: set_perm 1000 1000 0771 INTERNAL:app บรรทัดแรกคือคัดลอกทุกอย่างในไดเรกทอรี dev_data ของ ROM ไปที่ /data/ บรรทัดที่สองตั้งค่าสิทธิ์ของ app_s บรรทัดที่เราเพิ่มคือการตั้งค่าสิทธิ์ของ app ต่อไปสามารถแก้ไขและปรับปรุง ROM ได้สคริปต์ firstboot สำหรับการตั้งค่า ROM ขั้นสูง สามารถใช้สคริปต์ firstboot.sh ได้ สคริปต์ firstboot.sh อยู่ในโฟลเดอร์ dev_data ของ ROM รหัสในสคริปต์จะถูกเรียกใช้เมื่อเริ่มเครื่องครั้งแรกหลังจากแฟลชเครื่อง สามารถใช้เพื่อการตั้งค่าระบบ ติดตั้ง APK และงานอื่นๆ ดูตัวอย่างสคริปต์ใน liudidi1028rom
# การตั้งค่ามาตรฐานของระบบ
/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);"
ผมคิดว่าทุกคนคงเดาได้แล้วว่ารหัสสามบรรทัดนี้ทำงานอะไร สำหรับสาเหตุที่สคริปต์ถูกเขียนแบบนี้ อย่ามาถามผม ผมก็ไม่ค่อยเชี่ยวชาญ ทุกคนสามารถศึกษาและวิจัยร่วมกันได้
ในสคริปต์สามารถใช้คำสั่ง rm, mv ฯลฯ เพื่อแทนที่ไฟล์การตั้งค่าบางไฟล์ได้โดยตรง เช่น:
busybox rm /system/etc/某文件
busybox mv /system/etc/某文件
แน่นอน หากแก้ไขไฟล์ระบบ ต้องได้รับสิทธิ์ก่อน:
busybox mount -o remount,rw /system
จากนั้นกลับไปเป็นอ่านอย่างเดียว:
busybox mount -o remount,ro /system
firstboot.sh มีประโยชน์มาก ถ้าใครสักคนสามารถเขียนคู่มือเบื้องต้นก็คงดีมาก!
[การสร้าง/แก้ไข ROM] สร้าง ROM ของตัวเอง (1)
ตอบกลับ (1)
ยาวเกินไป อ่านไม่ออก
— โหลดคำตอบทั้งหมดแล้ว —