Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Studio 2.2 apk逆向工具--APK Analyzer

Android Studio 2.2 apk逆向工具--APK Analyzer

編輯:關於Android編程

APK解析器解析APK

Android Studio的APK解析器可以直接查看打包完成的apk的組成。APK解析器可以減少調試app內部的DEX文件和資源文件的時間,對減小APK的大小也有幫助。通過Android Studio的APK解析器,你可以完成如下功能:

---查看apk中文件的大小(如DEX文件和Android的資源文件)

---了解DEX文件的組成

---快速查看版本的文件(例如AndroidMainfest.xml文件)

---同時比較兩個apk

 

當打開一個工程時,有三種打開APK分析器的方式

---直接將一個apk拖動到Android Studio的編輯器窗口

---在Project窗口中選擇Project,然後雙擊build/output/apks/目錄下的apk

---在菜單欄中選擇選擇Build > Analyze APK,然後選擇要分析的apk

 

重要:當分析創建的apk時,通過Build>Build APK或者gradle的命令來創建apk。點擊工具欄中的Run將會打開Instant Run,

注:打開分析器的三種方式

1.在編輯窗口下

\

將一個apk拖到編輯器區域,如MainActivity所在的區域,從電腦的G盤把facebook拖動到該區域

\

出現解析出的內容並點擊可以查看相應的內容,如AndroidMainfest.xml文件

\

 

2.選擇Project視圖

\

雙擊build/output/apks/目錄下的apk,然後出現APK解析器解析出的內容

\

3.工具欄中選擇Build>Analyze APK

\

選中所要解析的APK

\

出現解析器界面

\

 

 

查看文件和大小信息

APK是zip格式的壓縮包。APK解析器按APK的文件結構對文件夾和文件進行映射,並且可以查看每個文件夾和文件。

APK解析器顯示了原始文件的大小和下載文件的大小。1.原始文件的大小是未經解壓縮的文件大小,而下載大小是傳送到Google Play時的壓縮後文件的大概大小。總下載大小的%是占APK總的下載大小的百分比。

\

圖1:文件解析器中文件的大小

 

查看AndroidMainfest.xml

如果你的項目包含多個AndroidMainfest.xml文件(例如多渠道情況下)或者所依賴的libraries中也包含mainfest文件,在生成的apk中這些mainfest文件將會被合並到一個文件中。mainfest文件在APK中通常是二進制文件,但是在APK解析器中查看時,這個XML文件將被重建來顯示。查看器允許你查看創建過程中的所進行的任何改變。例如,你可以查看項目所依賴的library中的AndroidMainfest.xml是如何被合並到最終的AndroidMainfest.xml文件中的.

 

另外,可以在右上角查看警告和錯誤。圖5為選中的mainfest文件中所上報的一個錯誤。

\

圖5.所選擇的mainfest文件中右上角有一個錯誤的圖標

 

查看代碼和資源

不同的apk創建方式會影響最終的APK中的文件。例如,Proguard中配置文件中刪除無效代碼(Shrinking rules)生成的最終APK的代碼會改變,某個渠道中的圖標資源也可能會被覆蓋。通過APK解析器查看最終版本的apk中的文件變得更加容易:點擊一個實體(解析器中可以點擊的任何一項)與其相關的內容將會在下方列出來,如可以預覽文件的內容、圖片的內容。

 

\

圖2.圖片資源的預覽

 

圖片分析器也可以顯示不同的文本和二進制文件。例如,實體resources.arsc的查看器可以查看配置中的特定文件,例如翻譯的String文件。在圖3中,你可以看見所翻譯的每個String文件。

\

圖3.翻譯的String文件的預覽

 

查看DEX文件

APK解析器的DEX文件查看器可以直接查看app中隱藏的DEX文件。查看器中可以查看類、包、引用和聲明的總數量,對決定是否使用muli-DEX或者如何移除依賴以使DEX文件在64k之下(64k DEX limit:https://developer.android.com/studio/build/multidex.html)是很有幫助的。

 

圖4描述了一個大小接近達到“DEX不超過64k”的限制的中型app。每個包、類、方法的數量都可以在Defined Method和Referenced Method的列裡查看。Referenced Methods列展示了DEX文件中所有引用的方法的數量。這些是在代碼中、依賴的libraries、單獨的java和android包中定義的---這些被統計的方法的大小接近DEX文件的大小限制64k。Defined Methods這列只顯示在DEX文件中定義的方法,所以數量是Referenced Methods的子集(感覺好像說反了,還是我理解錯了)。需要注意的是當將APK中的依賴打包的時候,兩列的方法數量都會增加。也應該注意到,壓縮率和混淆文件的刪除無用文件(Proguard shrinking)都會在編譯源碼時影響DEX文件的內容。

\

圖4.使用了multi-dex的app

 

比較APK文件

APK解析器可以比較兩個不同APK中的文件。對於找到這個版本為什麼比上一個版本的apk的大小增加了的原因很有幫助。

在發布新的APK之前,從APK解析器中加載出你所要發布的APK的版本號。然後在APK解析窗口右上角點擊Compare with.在彈出的窗口中,選擇上次發布的最近一個版本的APK然後點擊OK.如圖6所示是一個與上一個彈窗類似的小點的彈窗顯示的是可以進行對比的不同的文件。

 

圖6顯示了一個app的正式版和測試版之前的不同。不同的創建方式導致不同的創建類型,從而導致實體的不同。

\

 

 

注:

選中所要發布的apk,然後拖動到編輯區域,然後點擊右上角的Compare With

\

然後彈出框中選擇最近一次發布的版本的apk(也可以是任何需要比較的apk,我上一個版本的apk保存在目錄E:\lastversion),然後點擊OK

\

下面是可以對比的文件,old size是以前的,New Size是現在的

\

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