Apktool(4)——實戰篇:修改小米桌面

来源:http://www.cnblogs.com/mliangchen/archive/2016/01/05/5103705.html
-Advertisement-
Play Games

準備工作: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文件夾。

image

4.修改桌面

儘管已經反編譯了MiuiHome.apk,但想要修改桌面,必須找到直接關係到小米桌面的配置文件。那麼桌面的配置文件在哪裡呢?

我在Apktool(2)中介紹了res目錄則是程式中所有的資源文件,顯然,我們需要在該目錄下尋找。

小米手機首次啟動,會載入哪個配置文件呢?結論是:res/xml/default_workspace4x5.xml(4列5行桌面圖標)

image

該目錄下有這麼多配置文件,怎麼知道啟動載入的是該文件呢?具體可參考:http://forum.xda-developers.com/showpost.php?p=40167735

由此可得出結論:如果我們不希望手機啟動時載入該文件也可以修改res/values/integers.xml文件中的config_cell_count_x和config_cell_count_y

image

(未驗證,讀者可自行驗證)

知道關係到小米桌面的關鍵配置文件,那我們就可以通過修改該配置文件來修改桌面了。(該配置文件部分如下)

image

#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,可以看到系統預設載入的兩個文件夾的名字為“系統工具”和“推薦”。

image

因此,我們可以在這裡修改文件夾名字,或者增加自定義的文件名。

2)怎麼添加程式apk到文件夾?

image

launcher:container為文件夾的id,預設從1開始編號。

通過觀察launcher:x和launcher:y,我們發現y是固定不變,x從0開始編號,這樣,添加進文件夾的apk快捷方式就會從左到右,從上到下依次排列。

#4.修改hotseat

hostseat為如圖所示apk

image

查看配置文件:

image

可以看到launcher:container定義為-101,launcher:y固定不變,launcher:x從0開始編號。這樣也可以對其進行相應的修改。

5.編譯

至此,我們通過修改配置文件修改小米的桌面了。

最後,我們必須反編譯修改後的文件,生成修改後的apk。

運行:apktool b -cf -t xiaomi MiuiHome -o out\MiuiHome.apk

image

這樣,我們就編譯生成了修改後的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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這一篇《我的MYSQL學習心得(十五)》將會講解MYSQL的日誌 MYSQL里的日誌主要分為4類,使用這些日誌文件,可以查看MYSQL內部發生的事情。 分別是 1、錯誤日誌:記錄mysql服務的啟動、運行、停止mysql服務時出現的問題 2、查詢日誌:記錄建立的客戶端連接和執行的語句 3、二進位日誌...
  • MySQL是一個功能強大的開源資料庫。隨著越來越多的資料庫驅動的應用程式,人們一直在推動MySQL發展到它的極限。這裡是101條調節和優化MySQL安裝的技巧。一些技巧是針對特定的安裝環境的,但這些思路是通用的。我已經把他們分成幾類,來幫助你掌握更多MySQL的調節和優化技巧。 MySQL 伺服器....
  • Order By--將當前查詢出來的數據結果,進行排序,排序按照後面指定的列排序;DESC--倒序排序(降序);ASC--正序排序(升序);漢字:用拼音的首字母排序,升序是從a--z;降序是從z--a;如果是根據多個列排序,那麼兩個之間用逗號,隔開,排序會先按照前面一個排序之後,在按照後面一個排序;...
  • UIScrollView --->UIView//創建UIScrollViewtestScrollView=[[UIScrollView alloc]init];testScrollView.frame=CGRectMake(0, 0, 320, 200);testScrollView.backgr...
  • 自己管理好自己的。儘量別把屬性暴露給其他對象。1,封裝成一個整體,讓多個地方直接調用整體。2,可以解耦合。將來一個類中的屬性發生變化的時候,只需要對類本身進行修改即可。
  • 圖片排列切換
  • 本文轉載於:http://www.cnblogs.com/tianzhijiexian/p/4254110.htmlBitmap是引起OOM的罪魁禍首之一,當我們從網路上下載圖片的時候無法知道網路圖片的準確大小,所以為了節約記憶體,一般會在伺服器上緩存一個縮略圖,提升下載速度。除此之外,我們還可以在本...
  • 實現圖片按鈕的縮放、動畫效果(block的初步應用)
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...