1. 程式人生 > >Android Rom定製與修改學習(二)

Android Rom定製與修改學習(二)

由於ROM內部自帶APP的APK檔案都已經進行了ODEX化,需要對ROM內部自帶APP進行深度修改,必須對ODEX進行反編譯,另外對APK檔案直接解壓得到的XML檔案也是不能修改的,因此對APK檔案也需要進行合適的解包。

  • 1、APK檔案解打包
  • 2、Odex檔案反編譯

1、APK檔案解打包

  對APK解打包主要採用apktool工具,同樣的,最好下載最新版使用,目前實測2.2.2版本解包android6.0的自帶APK沒有問題,之前使用2.2.0版本無法解包,將apktool放到bin目錄,首先需要轉到framework資料夾執行以下命令:

sudo apktool if framework.res.apk

  (所有.jar工具都使用bash進行了二次打包,前置了java -jar命令)
  將會生成/home/xxxx/.local/share/apktool/framework/1.apk檔案,此檔案為解包依賴檔案,在解包rom自帶app時需要先更新此檔案。
  之後轉到APK所在目錄執行如下命令:

sudo apktool d xxx.apk

  如果發生錯誤請首先檢視檔案和資料夾許可權是否有進行合理設定,因為apktool會在該目錄下生成一個同名資料夾,裡面包含有APK檔案內含的大部分檔案,此時即可對xml和res檔案進行修改,修改完成後需要重新打包,執行命令:

sudo apktool b xxx

  xxx為資料夾名稱,所有命令帶上使用root許可權避免許可權不夠問題,另外apktool官方文件提到64位系統執行該工具需要32位庫的支援,需要提前安裝。

2、Odex解打包

  Odex化的APK資料夾中包含有oat資料夾,裡面存有Odex檔案,為軟體java原始碼編譯而成,使用baksmali和smali工具對其進行反編譯:

baksmali x xxx.odex

  在odex資料夾會生成out資料夾,裡面包含有Dalvik虛擬機器使用的smali檔案,看起來比較吃力,可以對其進行進一步轉換,生成dex檔案:

smali a out

  使用dex2jar工具進行轉換:

dex2jar out

  會在當前資料夾生成jar檔案,之後就可以用jd-gui檢視:

jd-gui out.jar

  同時可另存為zip檔案包,裡面就是所有的.java檔案,即可編輯的原始碼了,修改且編譯後的dex檔案可使用dexopt-wrappe轉換為odex檔案。