準備工作:1.下載對應手機型號線刷Rom包,進入小米官網Rom下載頻道2.解壓下載下來的Rom包,並用Rom助手提取出system.img中的文件內容。這方面的文章很多,請參考Rom助手如何提取IMG文件3.找到跟小米桌面相關的apk——/system/priv-app/MiuiHome.apk(5...
準備工作:
1.下載對應手機型號線刷Rom包,進入小米官網Rom下載頻道
2.解壓下載下來的Rom包,並用Rom助手提取出system.img中的文件內容。這方面的文章很多,請參考Rom助手如何提取IMG文件
3.找到跟小米桌面相關的apk——/system/priv-app/MiuiHome.apk(5.0及以上系統是在MiuiHome文件夾下的MiuiHome.apk)
實戰篇:
1.嘗試反編譯MiuiHome.apk,具體可參考:Apktool(3)
2.步驟1會提示需要依賴的framework文件,這裡依賴文件是/system/app/miui.apk
運行:apktool if miui.apk –t xiaomi
該命令只需執行一次,以後再次反編譯時會到預設路徑下去load依賴文件。其中-t參數是給依賴文件加標識。
3.再次反編譯MiuiHome.apk,運行:apktool d –cf MiuiHome.apk –t xiaomi
則會得到MiuiHome文件夾。
4.修改桌面
儘管已經反編譯了MiuiHome.apk,但想要修改桌面,必須找到直接關係到小米桌面的配置文件。那麼桌面的配置文件在哪裡呢?
我在Apktool(2)中介紹了res目錄則是程式中所有的資源文件,顯然,我們需要在該目錄下尋找。
小米手機首次啟動,會載入哪個配置文件呢?結論是:res/xml/default_workspace4x5.xml(4列5行桌面圖標)
該目錄下有這麼多配置文件,怎麼知道啟動載入的是該文件呢?具體可參考:http://forum.xda-developers.com/showpost.php?p=40167735
由此可得出結論:如果我們不希望手機啟動時載入該文件也可以修改res/values/integers.xml文件中的config_cell_count_x和config_cell_count_y
(未驗證,讀者可自行驗證)
知道關係到小米桌面的關鍵配置文件,那我們就可以通過修改該配置文件來修改桌面了。(該配置文件部分如下)
#1.幾個關鍵詞
folder代表文件夾,該預設桌面有兩個文件夾。
launcher:title為文件夾的名稱,前面com.miui.home:string/是固定的,告知系統從該位置下載入配置文件。
launcher:screen為桌面的屏數,預設第一屏launcher:screen=0,後面以此類推。
launcher:x和launcher:y分別代表列號和行號,預設都是從0開始編號的,如第三行第四列,則launcher:x=3,launcher:y=2。
clock2x4為系統載入的系統時鐘。
favorite為程式(apk)的快捷方式。
launcher:className為apk的類名,launcher:packageName為apk的包名。對於獲取類名和包名,後續博文會介紹,請關註。
#2.修改favorite
顯然,我們可以通過修改launcher:x和launcher:y來調整apk的位置,launcher:screen來修改apk該放在哪一屏。
#3.修改folder文件夾
同樣,可以通過修改launcher:x和launcher:y來調整文件夾的位置,launcher:screen來修改文件夾該放在哪一屏。
這裡還需要說明的是:
1)怎麼定義文件夾的名字?
系統載入的中文名字的配置文件是res\values-zh-rCN\string.xml,可以看到系統預設載入的兩個文件夾的名字為“系統工具”和“推薦”。
因此,我們可以在這裡修改文件夾名字,或者增加自定義的文件名。
2)怎麼添加程式apk到文件夾?
launcher:container為文件夾的id,預設從1開始編號。
通過觀察launcher:x和launcher:y,我們發現y是固定不變,x從0開始編號,這樣,添加進文件夾的apk快捷方式就會從左到右,從上到下依次排列。
#4.修改hotseat
hostseat為如圖所示apk
查看配置文件:
可以看到launcher:container定義為-101,launcher:y固定不變,launcher:x從0開始編號。這樣也可以對其進行相應的修改。
5.編譯
至此,我們通過修改配置文件修改小米的桌面了。
最後,我們必須反編譯修改後的文件,生成修改後的apk。
運行:apktool b -cf -t xiaomi MiuiHome -o out\MiuiHome.apk
這樣,我們就編譯生成了修改後的apk了。
疑問:1.怎麼獲取apk類名和包名呢?
2.怎麼刷入修改後的apk系統到小米手機呢?
3.通過rom助手解開的system.img,怎麼打包生成img文件呢?
請持續關註博客更新。
參考文獻:
1.http://forum.xda-developers.com/showpost.php?p=40167735
2.Rom助手如何提取IMG文件:http://www.yzmg.com/news/show-89909.html