Việc chỉnh sửa ROM có thể được chia thành ba loại chính: tinh giản, bổ sung và làm đẹp. Ở đây chủ yếu thảo luận về hai khía cạnh là tinh giản và bổ sung, còn làm đẹp thì các bạn có thể tham khảo các bài viết khác.
1. Trước tiên, chúng ta hãy xem trong ROM có những gì: Mở gói flash bằng WinRAR, bạn có thể thấy một số thư mục, dưới đây liệt kê các thư mục liên quan và giải thích:
- dev_data/apps/ : Thư mục chứa các file apk của chương trình hệ thống, tương đương với "/data/app_s/" sau khi flash, các chương trình ở đây không thể gỡ cài đặt sau khi flash
- dev_data/app/ : Thư mục chứa các file apk của người dùng, tương đương với "/data/app/" sau khi flash, các chương trình ở đây có thể gỡ cài đặt sau khi flash. (Các phiên bản sau ngày 28 tháng 10 mới có, các phiên bản trước các bạn có thể tự thêm thư mục này)
- META-INF/com/google/android/ : File script flash
- system/etc/: Chứa một số file cấu hình
- system/etc/permissions/ : Liên quan đến quyền phần mềm, một số bản vá cần thêm file vào thư mục này
- system/lib/ : Nơi lưu trữ các thư viện của chương trình hệ thống
2. Tiếp theo, làm quen với file script flash: Khi flash bằng recovery, quá trình flash được điều khiển bởi file script. File script là file update-script trong thư mục META-INF/com/google/android/ trong gói nén, có thể mở bằng trình soạn thảo văn bản. Trong file script có một số câu lệnh mà chúng ta quan tâm:
- show_progress 0.1 0 : Hiển thị thanh tiến trình. Đây dùng để hiển thị thanh tiến trình flash, số 0.1 ở trước chỉ vị trí của thanh tiến trình, có thể thay bằng giá trị khác (nhỏ hơn 1). Số ở sau chưa rõ nghĩa, nhìn chung trừ câu cuối cùng là 10 thì các câu khác đều là 0. Một số ROM khi flash xong, thanh tiến trình mới đi được một nửa, các bạn có thể thử thay câu cuối cùng thành show_progress 0.8 10, thanh tiến trình sẽ chạy hết.(2) Một số từ khóa quan trọng (A) "SYSTEM:" đại diện cho thư mục hệ thống sau khi flash = "/system/" (B) "INTERNAL:" đại diện cho thư mục /data sau khi flash = "/data/" (C) "PACKAGE:" đại diện cho thư mục gốc của file nén, ví dụ "SYSTEM:etc/" tương đương với thư mục "/system/etc/" sau khi flash, "PACKAGE:dev_data" tương đương với thư mục dev_data trong file nén (3) copy_dir PACKAGE:dev_data INTERNAL: copy_dir dùng để sao chép thư mục, tham số trước là thư mục cần sao chép, tham số sau là nơi sao chép tới. Ví dụ copy_dir PACKAGE:dev_data INTERNAL: dùng để sao chép nội dung trong thư mục dev_data của gói ROM vào thư mục "/data/" sau khi flash (4) set_perm_recursive 0 2000 0755 0755 SYSTEM:bin Dùng để thiết lập quyền cho thư mục hoặc tệp, cách sử dụng tương tự như đặt quyền trong Linux. (5) delete SYSTEM:app/YouTube.apk Xóa tệp, cái này thường ít dùng, nếu muốn xóa thì cứ xóa trực tiếp. Được rồi, có thể bắt đầu tinh chỉnh và thêm ứng dụng. Hai. Tinh chỉnh ứng dụng hệ thống Tinh chỉnh thực chất là xóa các ứng dụng hệ thống, những ứng dụng không dùng đến có thể xóa đi. Lợi ích của việc xóa các ứng dụng này là (1) Một số thứ chúng ta không dùng, xuất hiện trong danh sách ứng dụng rất khó chịu, nếu những ứng dụng như vậy quá nhiều cũng khiến mở danh sách ứng dụng chậm. (2) Một số ứng dụng khi khởi chạy sẽ chiếm bộ nhớ mà chúng ta không dùng, ví dụ như chặn tin nhắn, v.v. (3) Một số ứng dụng không muốn dùng theo ROM gốc, muốn thay bằng cái khác, ví dụ không thích ADW, chuyển sang LAUNCH PRO, v.v. Cách tinh chỉnh rất đơn giản, dùng WinRAR mở ROM, vào dev_data/apps, tìm ứng dụng không cần, xóa đi. Những ứng dụng có thể tinh chỉnh: vấn đề này đã được nhiều bài viết đề cập, mọi người có thể tìm kiếm, ví dụ vài bài viết dưới đây. Ba. Thêm ứng dụng Thêm ứng dụng có hai cách, một là thêm ứng dụng thành ứng dụng hệ thống, hai là thêm thành ứng dụng người dùng. Lợi ích của việc thêm ứng dụng thành hệ thống là tốc độ thực thi nhanh (mọi người nói vậy, tôi dường như chưa cảm nhận được), nhược điểm là không thể gỡ trực tiếp, chỉ có thể xóa bằng công cụ RE.Thật ra khi dùng RE trực tiếp xóa tập tin APK của chương trình hệ thống thì không phải lúc nào cũng gỡ hết, nếu không tin mọi người có thể xem thư mục /data/data/, có phải mỗi chương trình đều tương ứng với một mục tiêu, tên thư mục giống với tên gói chương trình (không phải XXX.APK mà là XXX).
1. Thêm chương trình hệ thống: Cách thêm chương trình hệ thống đơn giản nhất:
(1) Dùng WinRAR mở tập tin nén ROM, vào thư mục "dev_data/app_s", sao chép tập tin APK của chương trình muốn thêm vào.
(2) Dùng WinRAR mở tập tin APK muốn thêm để xem trong thư mục "lib/armeabi" có tập tin nào kết thúc bằng .so không, đó là các thư viện mà chương trình cần dùng khi chạy, nếu có thì sao chép chúng vào thư mục "system/lib/" trong tập tin nén. Có những bạn khi chỉnh sửa ROM thêm chương trình không thể chạy, đa số là trường hợp này. Ví dụ như phiên bản mới của Google Pinyin Input.
2. Thêm chương trình người dùng: Thêm chương trình người dùng hơi phức tạp chút, nhưng sau khi flash máy có thể gỡ trực tiếp. Nếu dùng ROM sau ngày 28 tháng 10, chỉ cần kéo APK vào thư mục "dev_data/app/". Bước này rất đơn giản, vấn đề phiền phức là khi APK có thư viện. Cách xử lý đơn giản giống như bước 2 trong phần thêm chương trình hệ thống, nhược điểm của cách này là khi gỡ bỏ thư viện vẫn còn trong "system/lib/", may mà hầu hết chương trình không có thư viện, một số chương trình mà thư viện còn lại cũng không ảnh hưởng nhiều. Cách cao cấp hơn là cài đặt thông qua viết script.
ROM trước ngày 28 tháng 10 trong "dev_data/" không có thư mục app, mọi người có thể tự tạo (trong WinRAR nhấn chuột phải, chọn tạo thư mục mới), sau khi tạo thư mục cần thiết lập thuộc tính thư mục trong script flash:
Trong script flash tìm đoạn sau: copy_dir PACKAGE:dev_data INTERNAL: set_perm 1000 1000 0771 INTERNAL:app_s
Ở sau đó thêm câu này: set_perm 1000 1000 0771 INTERNAL:app
Trong đó câu đầu là sao chép tất cả mọi thứ trong thư mục dev_data của ROM vào /data, câu thứ hai là thiết lập quyền cho app_s, câu chúng ta thêm là thiết lập quyền cho app.
Tiếp theo có thể chỉnh sửa, tùy chỉnh ROM.Script firstboot dùng để thực hiện các thiết lập nâng cao cho ROM, có thể sử dụng script firstboot.sh. Script firstboot.sh nằm trong thư mục dev_data của ROM. Các đoạn mã trong script được thực thi lần đầu khi máy khởi động sau khi cài ROM, sử dụng nó có thể thiết lập hệ thống, cài đặt APK, v.v. Xem đoạn script trong liudidi1028rom # Cài đặt mặc định hệ thống /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);" Tôi nghĩ mọi người có thể đoán được chức năng của ba dòng mã này rồi. Còn về việc script được viết như vậy, đừng hỏi tôi, tôi cũng không rành, mọi người có thể cùng nghiên cứu. Trong script có thể sử dụng các lệnh như rm, mv, dùng nó có thể trực tiếp ghi đè lên một số file cấu hình. Ví dụ: busybox rm /system/etc/tệp_nào_busybox mv /system/etc/tệp_nào Tất nhiên, nếu sửa file hệ thống, trước tiên phải lấy quyền: busybox mount -o remount,rw /system Sau đó mới đổi về chế độ chỉ đọc: busybox mount -o remount,ro /system firstboot.sh rất hữu ích, nếu có ai viết một hướng dẫn cơ bản thì tốt quá!