ngochoangimsat
Administrator
Hi all!
Mình xin hướng dẫ cách clean language cho ROM, cách này sẽ rất hiệu quả đối với các máy có RAM yếu nhưng lại thích chạy các ROM nặng như CM (nếu hỗ trợ). Khi đó máy sẽ trống RAM nhiều hơn, chạy nhẹ nhàng hơn,mướt hơn...
Công cụ gồm có:
[FONT="]1. [/FONT]Apktool để decompile/re_compile file apk
[FONT="]2. [/FONT]Apk manager, dùng để sign app, trong tut này sẽ rất hạn chế dùng cái này vì không cần thiết.
[FONT="]3. [/FONT]Total commander trên window, đây là công cụ quản lý file rất hữu ích trong tut này (các bạn search google để tải).
Các bước thực hiện:
[FONT="]1. [/FONT]Tải apktool về, giải nén, copy hết các file vào thư mục c:\windows, về sau chỉ cần mở cmd lên là có thể gõ luôn đc apk.
[FONT="]2. [/FONT]Tạo một thư mục (ví dụ d:\apk), copy các file apk cần clean vào thư mục đó, thường clean các file sau:
system\framework\framework-res.apk
system\app\AccountAndSyncSettings.apk
system\app\Bluetooth.apk
system\app\Browser.apk
system\app\Calculator.apk
system\app\Calendar.apk
system\app\CalendarProvider.apk
system\app\Camera.apk
system\app\CMParts.apk
system\app\Contacts.apk
system\app\DeskClock.apk
system\app\Email.apk
system\app\Gallery3D.apk
system\app\LatinIME.apk
system\app\Mms.apk
system\app\Music.apk
system\app\Phone.apk
system\app\Settings.apk
system\app\SystemUI.apk
[FONT="]3. [/FONT]Tạo liên kết với framework, điều này rất cần thiết vì các system apps thường có liên kết với framework của chính ROM đó
Mở cmd, gõ:
Apktool if d:/apk/framework-res.apk
[FONT="]4. [/FONT]Thực hiện clean file framework-res.apk:
Apktool d –f d:/apk/framework-res.apk
Thư mục framework-res sẽ được tạo theo đường dẫn:
C:\documents and setting\your_user_name\
Mở thư mục framework-res sẽ thấy thư mục /res/ đây là thư mục chứa các ngôn ngữ khác nhau, tương ứng là các thư mục như raw, values, xml (chứa ngôn ngữ default, không được xóa) và các thư mục như raw-xx, values-xx-, xml-xx, với xx là tên viết tắt của các nước (VD tiếng Việt sẽ là vi và vi-rVN). Các thư mục raw-xx, values-xx-, xml-xx có thể xóa hết. Các thư mục sau nếu có thì không xóa: values-land, values-finger, values-nokeys, values-keyhidden… (túm lại là thư mục nào không có từ viết tắt của quốc gia nào đó thì không xóa). Sauk hi xóa, sẽ trông như cửa sổ bên trái hình dưới:

Sauk hi xóa xong, thực hiện build (re_compile) file apk:
Apktool b ./framework-res
(./ là thay cho thư mục C:\documents and setting\your_user_name\).
Quá trình build sẽ nhanh hay chậm phụ thuộc vào app bạn build. Trong quá trình build sẽ xuất hiện các thông báo trên màn hình, nếu là warning thì không cần để ý, file apk vẫn sẽ đc buil, nếu là lỗi thì chỉ cần để ý thông báo lỗi trên màn hình thì có thể khắc phục đc.
Sauk hi build, mở thư mục ./framework-res/build/apk/ sẽ thấy có 1 file resources.arsc mới đc tạo ra, có dung lượng nhỏ hơn file resources.arsc của app gốc, dùng total commander, 1 cửa sổ tìm tới thư mục ./framework-res/build/apk/, một cửa sổ tìm tới thư mục d:\apk\, trông như ở dưới:

Click đúp vào file framework-res.apk ở cửa sổ bên phải để mở, rồi kéo file resources.arsc từ trái qua phải để ghi đè.

Như vậy đã clean xong file framework-res.apk và không cần phải resign.
Làm tương tự với các app khác.
Riêng với file latinime.apk, do rom mình dùng là CM7 nên dung lượng file latinime rất lớn, 17 mb+, sau khi clean, và build, dung lượng file latinime.apk trong ./latinime/dist/ chỉ còn 400 kb+, mình lấy file đó để vào thư mục “place here for signing” của apkmanager rồi sign, như vậy là có 1 file latinime mới dung lượng rất nhỏ.
Đây cũng là cách để add them TV cho các ROM chưa có TV (tạo thư mục values-vi, copy file string.xml đã dịch vào thư mục đó rồi build).
Cách thêm TV:
Nếu ROM không có TV thì bổ xung như sau:
tạo thư mục values-vi trong thư mục /res. Mở thư mục /res/value, copy file string.xml vào thư mục values-vi vừa tạo, mở file string vừa copy để dịch (hoặc cũng có thể extract TV từ các ROM khác có sẵn TV rồi lấy file string copy vào thư mục values-vi). Sau đó build lại, app đã có thêm TV.
Cách đọc và dịch file string:
Cấu tạo file string có dạng như sau:
Code:
<string name="additional_system_update" />
<string name="additional_system_update_menu" />
<string name="yes">Yes</string>
<string name="no">No</string>
<string name="device_info_default">Unknown</string>
<string name="turn_on_radio">Turn on radio</string>
<string name="turn_off_radio">Turn off radio</string>
<string name="radioInfo_menu_viewADN">View SIM address book</string>
<string name="radioInfo_menu_viewFDN">View Fixed Dialing Numbers</string>
<string name="radioInfo_menu_viewSDN">View Service Dialing Numbers</string>
Trong đó dòng trong dấu nháy kép là các attribute, dòng ở giữa hai dấu >< là string value, các bạn dịch dòng này. Chú ý trong dòng này thường có các ký tự như %s, %d... để nguyên các ký tự này.
Chúc các bạn tự mod đc 1 ROM theo ý muốn!
Nguồn:
https://tinhte.vn/threads/tut-clean-add-language-cho-rom.712984/
Nguồn:
https://forum.xda-developers.com/showthread.php?t=2213985
Mình xin hướng dẫ cách clean language cho ROM, cách này sẽ rất hiệu quả đối với các máy có RAM yếu nhưng lại thích chạy các ROM nặng như CM (nếu hỗ trợ). Khi đó máy sẽ trống RAM nhiều hơn, chạy nhẹ nhàng hơn,mướt hơn...
Công cụ gồm có:
[FONT="]1. [/FONT]Apktool để decompile/re_compile file apk
[FONT="]2. [/FONT]Apk manager, dùng để sign app, trong tut này sẽ rất hạn chế dùng cái này vì không cần thiết.
[FONT="]3. [/FONT]Total commander trên window, đây là công cụ quản lý file rất hữu ích trong tut này (các bạn search google để tải).
Các bước thực hiện:
[FONT="]1. [/FONT]Tải apktool về, giải nén, copy hết các file vào thư mục c:\windows, về sau chỉ cần mở cmd lên là có thể gõ luôn đc apk.
[FONT="]2. [/FONT]Tạo một thư mục (ví dụ d:\apk), copy các file apk cần clean vào thư mục đó, thường clean các file sau:
system\framework\framework-res.apk
system\app\AccountAndSyncSettings.apk
system\app\Bluetooth.apk
system\app\Browser.apk
system\app\Calculator.apk
system\app\Calendar.apk
system\app\CalendarProvider.apk
system\app\Camera.apk
system\app\CMParts.apk
system\app\Contacts.apk
system\app\DeskClock.apk
system\app\Email.apk
system\app\Gallery3D.apk
system\app\LatinIME.apk
system\app\Mms.apk
system\app\Music.apk
system\app\Phone.apk
system\app\Settings.apk
system\app\SystemUI.apk
[FONT="]3. [/FONT]Tạo liên kết với framework, điều này rất cần thiết vì các system apps thường có liên kết với framework của chính ROM đó
Mở cmd, gõ:
Apktool if d:/apk/framework-res.apk
[FONT="]4. [/FONT]Thực hiện clean file framework-res.apk:
Apktool d –f d:/apk/framework-res.apk
Thư mục framework-res sẽ được tạo theo đường dẫn:
C:\documents and setting\your_user_name\
Mở thư mục framework-res sẽ thấy thư mục /res/ đây là thư mục chứa các ngôn ngữ khác nhau, tương ứng là các thư mục như raw, values, xml (chứa ngôn ngữ default, không được xóa) và các thư mục như raw-xx, values-xx-, xml-xx, với xx là tên viết tắt của các nước (VD tiếng Việt sẽ là vi và vi-rVN). Các thư mục raw-xx, values-xx-, xml-xx có thể xóa hết. Các thư mục sau nếu có thì không xóa: values-land, values-finger, values-nokeys, values-keyhidden… (túm lại là thư mục nào không có từ viết tắt của quốc gia nào đó thì không xóa). Sauk hi xóa, sẽ trông như cửa sổ bên trái hình dưới:

Sauk hi xóa xong, thực hiện build (re_compile) file apk:
Apktool b ./framework-res
(./ là thay cho thư mục C:\documents and setting\your_user_name\).
Quá trình build sẽ nhanh hay chậm phụ thuộc vào app bạn build. Trong quá trình build sẽ xuất hiện các thông báo trên màn hình, nếu là warning thì không cần để ý, file apk vẫn sẽ đc buil, nếu là lỗi thì chỉ cần để ý thông báo lỗi trên màn hình thì có thể khắc phục đc.
Sauk hi build, mở thư mục ./framework-res/build/apk/ sẽ thấy có 1 file resources.arsc mới đc tạo ra, có dung lượng nhỏ hơn file resources.arsc của app gốc, dùng total commander, 1 cửa sổ tìm tới thư mục ./framework-res/build/apk/, một cửa sổ tìm tới thư mục d:\apk\, trông như ở dưới:

Click đúp vào file framework-res.apk ở cửa sổ bên phải để mở, rồi kéo file resources.arsc từ trái qua phải để ghi đè.

Như vậy đã clean xong file framework-res.apk và không cần phải resign.
Làm tương tự với các app khác.
Riêng với file latinime.apk, do rom mình dùng là CM7 nên dung lượng file latinime rất lớn, 17 mb+, sau khi clean, và build, dung lượng file latinime.apk trong ./latinime/dist/ chỉ còn 400 kb+, mình lấy file đó để vào thư mục “place here for signing” của apkmanager rồi sign, như vậy là có 1 file latinime mới dung lượng rất nhỏ.
Đây cũng là cách để add them TV cho các ROM chưa có TV (tạo thư mục values-vi, copy file string.xml đã dịch vào thư mục đó rồi build).
Cách thêm TV:
Nếu ROM không có TV thì bổ xung như sau:
tạo thư mục values-vi trong thư mục /res. Mở thư mục /res/value, copy file string.xml vào thư mục values-vi vừa tạo, mở file string vừa copy để dịch (hoặc cũng có thể extract TV từ các ROM khác có sẵn TV rồi lấy file string copy vào thư mục values-vi). Sau đó build lại, app đã có thêm TV.
Cách đọc và dịch file string:
Cấu tạo file string có dạng như sau:
Code:
<string name="additional_system_update" />
<string name="additional_system_update_menu" />
<string name="yes">Yes</string>
<string name="no">No</string>
<string name="device_info_default">Unknown</string>
<string name="turn_on_radio">Turn on radio</string>
<string name="turn_off_radio">Turn off radio</string>
<string name="radioInfo_menu_viewADN">View SIM address book</string>
<string name="radioInfo_menu_viewFDN">View Fixed Dialing Numbers</string>
<string name="radioInfo_menu_viewSDN">View Service Dialing Numbers</string>
Trong đó dòng trong dấu nháy kép là các attribute, dòng ở giữa hai dấu >< là string value, các bạn dịch dòng này. Chú ý trong dòng này thường có các ký tự như %s, %d... để nguyên các ký tự này.
Chúc các bạn tự mod đc 1 ROM theo ý muốn!
Nguồn:
https://tinhte.vn/threads/tut-clean-add-language-cho-rom.712984/
Nguồn:
https://forum.xda-developers.com/showthread.php?t=2213985
Sửa lần cuối: