編輯:htc刷機
很多第三方ROM會已經包括了高級電源菜單,但是往往,在重啟項中的4個選項會是英文的列表:
normal
hot reboot
bootloader
recovery
這點難免讓人有些不爽,那麼本文就來教大家如何把這個列表變成:
正常重啟
快速重啟
引導模式
刷機模式
一、實現原理
列表中的4項被定義在一個字符串型數組中(數組1),而如果單純的將這個數組中的4個字符串漢化的話,會導致重啟出現錯誤,這是因為顯示值與操作數沖突。好奇的朋友可以試試。那麼解決的辦法就是再重新定義一個容量為4的字符串型數組(數組2),將漢化後的值賦進去,作用僅僅是顯示,與操作數分開,這樣就不會造成與操作數的沖突。最終的效果就是在顯示的時候讀取數組2,而執行操作的時候參數讀取自數組1。(理解這裡可能需要一些編程基礎,不過不懂也不要緊,跟著教程做,會成功的)
二、修改方法
1、以壓縮包方式打開android.policy.jar,將classes.dex取出,放在smali工具根目錄下,運行“解包”,輸出文件夾out。此舉是將dex反編譯為smali文件,便於修改。
2、進行修改,這裡具體的行數以我自己的做說明,實際中多少可能會有些偏差。
打開\com\android\internal\policy\impl\GlobalActions$SinglePressAction.smali,在24行,找到這樣一條語句:
復制代碼這條語句的含義是定義了一個字符串型的變量,名稱為rebootOptions,通過字面很容易理解為重啟設置,就是原理中所述的操作數。同樣根據原理所述,我們需要再定義一個同樣類型的變量來作為顯示。中間空一行,在26行,添加如下語句:
變量的名字叫做rebootString,是稍後用來顯示的。
3、往下看,38行後
1..method static constructor <clinit>()V
2. .registers 3 ——聲明使用3個寄存器
3.
4. const/4 v0, 0x4 ——v0=4
5.
6. new-array v0, v0, [Ljava/lang/String; ——建立新數組,容量為v0,即4
7.
8. const/4 v1, 0x0 ——v1=0
9.
10. const-string v2, "Normal" ——v2=Normal
11.
12. aput-object v2, v0, v1 ——v0數組中的第v1個值為v2,即數組中的第一個為Normal(至於0為什麼是第一個就不提了,0123就是1234)
13.
14. const/4 v1, 0x1
15.
16. const-string v2, "Hot restart"
17.
18. aput-object v2, v0, v1
19.
20. const/4 v1, 0x2
21.
22. const-string v2, "Bootloader"
23.
24. aput-object v2, v0, v1
25.
26. const/4 v1, 0x3
27.
28. const-string v2, "Recovery"
29.
30. aput-object v2, v0, v1
31.
32. sput-object v0, Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;->rebootOptions:[Ljava/lang/String; ——rebootOptions就從v0數組中取值了,作為操作數
上段原來的代碼,有必要的地方都加了注釋,會代碼的仔細看一看吧。原來的代碼,不難看出,這裡只定義了給rebootOptions提供參數的一個容量為4的數組。同樣,仿照它,再定義一個容量為4的數組,來給上邊定義過的rebootString提供參數。
修改後的代碼如下:
1..method static constructor <clinit>()V
2. .registers 8
3.
4. const/4 v7, 0x4
5.
6. const/4 v6, 0x3
7.
8. const/4 v5, 0x2
9.
10. const/4 v4, 0x1
11.
12. const/4 v3, 0x0
13.
14. new-array v0, v7, [Ljava/lang/String; ——新的數組v0,容量為v7(4)
15.
16. const-string v2, "\u6B63\u5E38\u91CD\u542F" ——“正常重啟”的轉碼結果賦值給v2
17.
18. aput-object v2, v0, v3 ——數組v0的第v3位為v2
19.
20. const-string v2, "\u5FEB\u901F\u91CD\u542F" ——“快速重啟”
21.
22. aput-object v2, v0, v4
23.
24. const-string v2, "\u5F15\u5BFC\u6A21\u5F0F" ——“引導模式”
25.
26. aput-object v2, v0, v5
27.
28. const-string v2, "\u5237\u673A\u6A21\u5F0F" ——“刷機模式”
29.
30. aput-object v2, v0, v6
31.
32. sput-object v0, Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;->rebootString:[Ljava/lang/String; ——數組定義完畢,rebootString的參數將從數組v0中讀取
33. new-array v1, v7, [Ljava/lang/String;
34.
35. const-string v2, "Normal"
36.
37. aput-object v2, v1, v3
38.
39. const-string v2, "Hot restart"
40.
41. aput-object v2, v1, v4
42.
43. const-string v2, "Bootloader"
44.
45. aput-object v2, v1, v5
46.
47. const-string v2, "Recovery"
48.
49. aput-object v2, v1, v6
50.
51. sput-object v1, Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;->rebootOptions:[Ljava/lang/String;
這樣就有了一個新的數組,其中4位內容分別為:正常重啟、快速重啟、引導模式、刷機模式。而在顯示的時候rebootString會調用這個數組裡的值,這樣就達到了漢化的目的。然後保存文件。
4、在\com\android\internal\policy\impl\GlobalActions$6.smali中,71行處:
將rebootOptions改為rebootString,意為顯示時指定通過rebootString取值。然後保存文件。
5、將GlobalActions$SinglePressAction.smali和GlobalActions$6.smali修改完畢保存後,回到smali工具的根目錄,運行“打包”,生成文件smail-classes.dex。在將這個文件重命名為classes.dex,以壓縮包方式打開android.policy.jar,將classes.dex替換進去,不用簽名。
這樣,一個新的android.policy.jar就做完了,用adb push或者RE文件浏覽器替換回去,修改相應權限和所有者,看看效果吧。(權限需修改成:rw-r-r),
如果發現文中有什麼錯誤及不明,可聯系我進行修正.
三、工具下載及注意事項:
1、並非所有的ROM四重啟漢化項目都在\com\android\internal\policy\impl\GlobalActions$SinglePressAction.smali
比如MIUI 的ROM是在:\com\android\internal\policy\impl\MIUIGlobalActions$SinglePressAction.smali內的;
2、修改過程中可以用Beyond Compare文件比較器進行對比修改。
解包&打包dex文件的smali工具下載:安裝後請詳細看看使用說明:
安裝完成後,右鍵點擊你想要反編譯的文件即可——傻瓜式操作!
如圖:
APKDB安裝 常見問題.zip (1.84 KB, )
另外:在解包編譯android.policy.jar的classes.dex文件時,最好在原ROM\system\framework 下進行,不要提到其它文件夾進行編譯,可能會出現無法回編譯現象,添加回classes.dex文件時,注意檢查壓縮包的大小!
以上內容來自度娘,如有雷同,純屬巧合!
1.首先字體一般都存放在手機內存的/system/front目
HTC G16 ROOT權限獲取後就到了刪除系統自帶軟件的問題了?但很多已經獲取ROOT權限的朋友還是不知道刪除方法!於是老是在論壇說無法刪除等問題!
1.用系統軟件卸載程序將原有的HtcLockScreen.apk文件刪除 再把對應的HtcLockScreen.odex一起刪除(不刪除會無限重啟)
其實這個教程也可以一鍵刷入radio(基帶)、recovery、boot(內核的) HTC所有安卓手機通用 先下載htc一鍵工具集合:點擊下載 &