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