Android(三)——将程序打包成APK文件,进行APK签名以及反编译APK
文章目錄
- 1. 簽名的作用
- 2. Android Studio 如何打包簽名
- 3. 反編譯 APK
- 3.1 獲取圖片資源
- 3.2 獲取 .XML 資源
- 3.3 獲取代碼資源
1. 簽名的作用
- Android APP都需要我們用一個證書對應用進行數字簽名,不然的話是無法安裝到Android手機上
- 平時我們調試運行時到手機上時,是Android Studio會自動用默認的密鑰和證書來進行簽名
- 但是我們實際發布編譯時,則不會自動簽名,這個時候我們就需要進行手動簽名
APK簽名的作用:
(1)應用程序升級
想升級應用程序,簽名證書要相同,應用程序的包名稱要相同
(2)應用程序模塊化
Android系統允許同一個證書簽名的多個應用程序在一個進程里運行,系統實際把他們作為一個單個的應用程序,以模塊化的方式進行部署,用戶可以獨立的升級其中的一個模塊。
(3)代碼或者數據共享
Android提供了基于簽名的權限機制,那么一個應用程序就可以為另一個以相同證書簽名的應用程序公開自己的功能,可以在應用程序間以安全的方式共享代碼和數據。
2. Android Studio 如何打包簽名
調試運行時,Android Studio默認生成的apk在:app/build/outputs/apk目錄下
手動簽名步驟:
1、打開HelloWorld項目——>Build——> Generate Signed Bundle/APK…
2、選擇APK——>Next
3、Create new key——>Next
如果沒有key,就創建一個,有的話就選擇存在的Key
4、依次填寫相關信息——>Ok——>Next
5、選擇release——>v1/v1+v2——>Finish
6、打包簽名成功后,可以看到 D:\AndroidProject\HelloWorld\app\release 目錄下的 app-release.apk 文件
7、獲取密鑰的簽名
(1)cmd——>進入之前存放鑰匙的文件夾——>輸入鑰匙的名字:keytool -list -v -keystore mykey.jks——>輸入密鑰庫口令(之前設置的密碼)——>可以看到簽名的信息了
(2)直接通過APK獲取密鑰的簽名
cmd——>進入 app-release.apk 文件d的目錄:D:\AndroidProject\HelloWorld\app\release——>輸入 keytool -printcert -jarfile app-release.apk——>可以看到簽名的信息了
打包 Android APK 的方法還有很多,命令行,或者Gradle,ANT,MAVEN等等
3. 反編譯 APK
反編譯:通過某些反編譯軟件,對APK進行反編譯,從而獲取程序的源代碼,圖片,XML資源等文件
一般想要反編譯一個apk,無非就是想獲得三樣東西:圖片資源 、XML資源、代碼資源
3.1 獲取圖片資源
(1)將 .apk后綴的文件后綴改成 .zip——>解壓——>打開res目錄
點進去可以看到我們想要的圖片資源
3.2 獲取 .XML 資源
可以在剛剛的目錄下看到有 .xml 文件,但是打開的都是亂碼或者是空白的
要想獲取到這個 xml 資源,需要借助一個名為 AXMLPrinter2.jar 的jar包,然后把這個jar包放在 xml文件的同級目錄下,用cmd命令找到這個目錄,然后執行
java -jar AXMLPrinter2.jar xxxxx.xml>xxxxx.txt
可以看到多了 AndroidManifest.txt 文件,打開就是 xml資源的內容了
3.3 獲取代碼資源
首先要準備兩個工具:dex2jar 和 jd-gui
dex2jar主要是用來把之前zip解壓出來的classed.dex轉成jar包的
jd-gui主要是用來打開jar包的
將之前zip文件里的 classes.dex 放到 dex2jar目錄下,注意必須要跟 d2j-dex2jar.bat 是同級目錄
接著用 cmd,cd 到dex2jar目錄下,輸入命令:d2j-dex2jar.bat classes.dex
然后目錄里會多一個classes-dex2jar.jar 的jar包
注意:如果在cmd里輸入命令之后,出現如下錯誤
dex2jar classes.dex -> .\classes-dex2jar.jar
Detail Error Information in File .\classes-error.zip
Please report this file to http://code.google.com/p/dex2jar/issues/entry if possible
這是因為現在舊版的比如2.0版不能反編譯某些dex了,可以下載2.1版本的 dex2jar
最后在用 jd-gui 把此jar包打開,最終apk的代碼就這樣被反編譯出來了
總結
以上是生活随笔為你收集整理的Android(三)——将程序打包成APK文件,进行APK签名以及反编译APK的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android(二)——汉化版Eclip
- 下一篇: android sina oauth2.