Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Apktool(3)——Apktool的使用,apktool使用

Apktool(3)——Apktool的使用,apktool使用

編輯:關於android開發

Apktool(3)——Apktool的使用,apktool使用


一.apktool的作用

安卓應用apk文件不僅僅是包含有resource和編譯的java代碼的zip文件,如果你嘗試用解壓工具(如好壓)解壓後,你將會獲得classes.dex和resource.arsc等文件。但這些文件對我們來說一無用處。你可以嘗試打開AndroidManifest.xml:

二.apktool命令相關選項(options)說明

1.概要

使用:apktool

(1)-version,--version

查看apktool版本號。

(2)-v,--verbose

使用apktool命令時輸出詳細內容,該參數必須作為第一個參數。

(3)-q,--quiet

隱藏輸出(quiet output),即輸出是不顯示詳細信息,該參數必須作為第一個參數。

(4)-advance,--advances

輸出更詳細的信息。

2.反編譯(decode)

使用:apktool d testapp.apk

(1)--api

產生smail文件的api等級。(??)

(2)-b,--no-debug-info

阻止baksmail寫出debug信息。

(3)-d,--debug

在debug模式下decode apk。

(4)--debug-line-prefix

在debug模式下decode時,smali中有行號前綴。

(5)-f,--force

強制刪除目標目錄,如在再次decode時,刪除已經存在的文件夾。強制覆蓋存在。

(6)--keep-broken-res

如果存在類似這樣的錯誤:Invalid Config Flags Detected. Dropping Resouerces…,如果加上該選項,則仍然能夠通過decode,但需要手動修改文件夾中報錯的問題。

(7)-m,--match-original

盡量去保持跟原文件一致或接近,但不能夠重新編譯打包(rebuild)。

(8)-o,--output <dir>

apk反編譯後輸出到指定目錄

(9)-p,--frame-path <dir>

指定framework文件儲存的位置。

(10)-r,--no-res

阻止反編譯resource,不修改resources.arsc,若僅僅修改java(smail),建議使用該選項。

(11)-s,--no-src

阻止dex文件分割,在build時僅僅移動classes.dex,若需要快速打包,建議使用該選項。

(12)-t,--frame-tag <TAG>

給生成的framework文件打上標識。

2.編譯(rebuild)

使用:apktool b apptest

(1)-a,--aapt

從特殊的位置load appt,不在依賴path。

(2)-c,--copy-original

復制原始的AndroidManifest.xml 和 META-INF文件到apk,可用於保持簽名。

(3)-d,--debug

在debug模式下打包。

(4)-f,--force-all

在打包時重寫已經存在的文件,強制覆蓋。

(5)-o,-output <file>

輸出apk的位置和名字。

(6)-p,--frame-path <dir>

保存framework文件到指定目錄。

三.重要補充

1.framework文件

一般來說,在用apktool反編譯前不需要做其他任何事情,然而有些廠商,如小米,htc,三星等,定制了framework文件並且他們在系統應用中使用了這些文件,因此,為了能夠正常反編譯這些apk,則必須拷貝反編譯apk依賴framework文件。

如,我們嘗試編譯小米桌面的MiuiHome.apk,將會得到如下錯誤。

使用:apktool if/install-framework <framework.apk>

再次嘗試反編譯MiuiHome.apk

image

2.簽名問題

使用apktool b testapp –o out\testapp.apk,不出意外程序就會編譯成功,單編譯生成的testapp.apk並沒有簽名,還不能安裝測試。一般情況下,保持原始簽名不變,使用-c選項來保持。否則就要使用其他的簽名工具來對apk簽名了,如signapk.jar,auto-sign等。

META-INF包含apk的簽名,使用-c/--copy-original來保持簽名,使用原始的AndroidManifest.xml文件。但是如果修改AndroidManifest.xml文件,簽名也就丟失了。就要重新對其簽名。

參考文獻:

apktool官方網站:http://ibotpeaches.github.io/Apktool/

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved