LM Huang wrote:
cscscscs大!...(恕刪)
本次教學以編譯,反編譯 systemui.apk 為舉例對象. 其它的 apk 檔也適用
編譯 apk 要有 二 種軟体 , 電腦要配罝 JAVA 的環境 ,
JAVA 下載
官網地址:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
1,下載JDK並安裝 (以下是我擷取網路文章 , 作者 : Zhjunfu )
我這裡下載的是JDK 6 Update 31 with NetBeans 7.1 ,下載好之後安裝,設置都是預設即可,因為後面
需要配置環境變數,所以最好不需要改變安裝路徑(改了的話後面請留意)。
2,環境變數配置(以Windows 7 64bit為例)
(1)右鍵點擊“電腦”打開電腦屬性,看到“高級系統設置”這一項,點開;

(2) “系統屬性”中,點開“環境變數”,其中我們需要修改三個專案,有些細節請注意;
(3) 第一個,點擊“系統變數”下面的“新建”,如圖填寫雙引號內的內容:
變數名"JAVA_HOME"
變數值"C:\Program Files\Java\jdk1.6.0_31"(改路徑的填自己對應的路徑,不含雙引號)

(4)第二個,找到"PATH"變數,切記是“找到”不是“新建”,
在變數值的最後加上";C:\Program Files\Java\jdk1.6.0_31\bin"
(改路徑的填自己對應的路徑,不含雙引號,注意盤符前的分號別漏掉了)

(5)第三個,新建如下:
變數名:"CLASSPATH"
變數值"C:\Program Files\Java\jdk1.6.0_31\lib\dt.jar;C:\Program
Files\Java\jdk1.6.0_31\lib\tools.jar;."
(改路徑的填自己對應的路徑,不含雙引號,別漏了最後的分號和句點)

(6)最後打開cmd,輸入“java –version”,看到你的java版本,基本能說明JAVA環境配置成功了。

再來要找合適的編譯軟体
本來編譯軟体是 apktool , 2.3.6 用一套 apktool 1.2.4 全部都可編譯, 反編譯
但到了 4.0.3 , 原來的 apktool 1.2.4 已經無法使用 ,
發展至今 最新版是 apktool 1.4.3
但是某些 apk 檔 , 還是無法 編譯,反編譯, 所以我試了又試, 目前有 一套最好用
APKTOOLD => 約 90% 的 APK 檔,都可編譯,反編譯
C35.== 相容性更好的 APKTOOL (D) ==
http://www.mobile01.com/topicdetail.php?f=568&t=2369097&p=969#34861079
另外還有一套是 APKTOOLB , 專門編譯 APKTOOLD 無法編譯的 APK 檔, 最常見是
framework-res.apk 這個檔, 一定要這套才有辦法編譯
解壓縮後有三個版本, 我們只要 apktoolb 就好了, 其餘可刪除
三個版本的APKTOOL FOR ICS.rar·Download (31.0 MB)
http://minus.com/mboXnQ5Bwv
二個資料夾的名稱分別為
apktoolB
ApktoolD
分別放入 C:\底下
檔案介紹
二個資料夾, 都有三個同樣檔名的 批次處理, 避免手打錯誤
===================================================================
1IN_1.cmd 這個檔最主要是執行框架, 下面這二個指令, 只要按下去,就會自動執行
apktool if twframework-res.apk
apktool if framework-res.apk
資料夾裏我已附上最新的 4.0.3 Framework-res.apk 及 twframework-res.apk
應該是 4.0.3 版都可適用 , 以後若換 4.0.4 .... , 再從 rom 中提取這二個檔案
覆蓋即可
=====================================================================
2N_2.cmd 這個檔最主要是執行編譯的指令,
apktool d xxx.apk
把 apk 檔的文件, 拖到 2N_2.cmd 這裏面, 就開始執行編譯的動作, 執行完會分解同名的資料夾
=====================================================================
3N_3cmd 這個檔最主要是執行反編譯的指令,
apktool b xxx
把剛編譯產生的資料夾, 拖到 3N_3.cmd 這裏面, 就開始執行反編譯的動作, 執行完成後,資料來
會多出二個資料夾, 容後說明
=======================================================================
我們開始進入正題 , 如何編譯 systemui.apk
1. 首先您要將手機的 /system/app/systemui.apk copy 至 電腦
2. 我們現在的工作目錄是 C:\apktoolD
3. 將 systemui.apk copy 至 c:\apktoolD
4. 將 systemui.apk , 拉至 2N_2.cmd
5. 會跳出 dos 畫面 , 執行反編譯程式
6. 執行完會多一個資料夾 [systemui]
7 若在 dos 的畫面都沒有錯誤, 直接跳到 18 項次
8. 發現執行發生錯誤 (如下圖)

9. 仔細看錯誤的地方是 目錄 drawable-hdpi/ 底下的一些圖檔出問題, 所以才不讓我們反編譯
10. 所以我們要將 這個 systemui.apk / drawable-hdpi/底下的圖檔,換為原廠的圖檔
(注意 : 只有圖檔的部份)
11. 原廠 systemui.apk /drawable-hdpi / 底下的圖檔, 如下
= drawable-hdpi 圖檔 =
12. 開始換圖檔之前,要先將原來的圖檔保留, 因為等一下編譯完成,還要將原廠的圖檔,換為這個
rom 的圖檔
13. 依相對的位置,給予置換
14. 換完圖檔, 我們要開始重新反編譯 systemui.pak , 原上次編譯失敗的 systemui 的資料
夾要刪掉
15. 將 systemui.apk , 拉至 2N_2.cmd
16. 會跳出 dos 畫面 , 執行反編譯程式
17. 執行完會多一個資料夾 [systemui]
18. 從這個 systemui 資料夾, 去修改,
19. 修改完成, 開始編譯
20 這個資料夾 ,拉至 3N_3.cmd
21. 會出現 dos 的畫面, 在執行編譯
22. 這個資料夾會多出二個子資料夾 [build] 及 [disk]
23. 按 [build] => [apk] => 有出現這個 resources.arsc 檔編譯才算成功
24. 再回到 apktoolD 最上層的目錄 ( 注意是 apktoolD )
25. 按 systemui.apk , 按上面那個 [加入]
26. 選擇加入的檔案, 資料夾是 ApktoolD [systemui]=> [buld] => [apk] =>
resources.arsc
27. 按確定, 選擇左下角的 [僅儲存], 離開
28. 我們已經編譯完成,最後要將原來 drawable-hdpi/ 底下的一些圖檔,
換為這個 rom 本身的圖
29. 大功告成
內文搜尋

X