調(diào)試步驟
反編譯apk
- 使用apktool工具反編譯apk
java -jar apktool.jar d -fo out/
- 在AndroidManifest.xml里面的Application標(biāo)簽添加以下內(nèi)容打開調(diào)試開關(guān)
<application android:debuggable="true" ....
- 除此之外,還要在啟動(dòng)的Activity的onCreate方法添加等待調(diào)試語句,防止apk已啟動(dòng)就代碼執(zhí)行了乒验,具體看一下:
invoke-static {}, Landroid/os/Debug;->waitForDebugger()V
和包较雕,將上一個(gè)步驟產(chǎn)生的文件合成apk
- 和包
java -jar apktool.jar b out/
- 簽名并安裝到手機(jī)上随常,如果此時(shí)啟動(dòng)應(yīng)用掩蛤,apk可能處于白屏無影響狀態(tài)哮伟,這就是等待你調(diào)試啟動(dòng)
Android studio開始調(diào)試
- 將第一個(gè)步驟反編譯產(chǎn)生的smali文件導(dǎo)入到studio工程中干花,一直選默認(rèn)即可
1.png
- 使用adb 命令或者手動(dòng)啟動(dòng)應(yīng)用,adb命令如下:
adb shell am start -D -n com.jack.qrcode/.ui.MainActivity
1.png
-D:開啟debug模式
-n打開以包名/Activity名方式啟動(dòng)
相關(guān)命令詳解可點(diǎn)擊
- 查看手機(jī)端的應(yīng)用進(jìn)程并進(jìn)行端口映射
adb shell ps | grep "qrcode"
adb forward tcp:8901 jdwp:16886
1.png
插入知識(shí)點(diǎn):adb調(diào)試橋楞黄,adb調(diào)試橋是Android官方定制的一款A(yù)ndroid強(qiáng)大的調(diào)試工具池凄,通過adb工具我們可以向設(shè)備發(fā)送調(diào)試指令,獲取設(shè)備的運(yùn)行狀態(tài)鬼廓,操作控制設(shè)備修赞;adb調(diào)試橋分為三個(gè)部分:服務(wù)器(PC端,代碼在Android sdk里面)桑阶、客戶端(PC端柏副,我們通常發(fā)送一個(gè)指令,如adb shell install xx.apk就是客戶端的操作)和后臺(tái)程序(設(shè)備端蚣录,接收?qǐng)?zhí)行反饋狀態(tài))割择;服務(wù)端端用于連接客戶端和后臺(tái)程序,知道數(shù)據(jù)發(fā)送接收工作萎河,Android studio等開發(fā)工具的調(diào)試工具部分就是利用adb功能編寫荔泳,上面的端口映射也就是講PC端口8091的數(shù)據(jù)都轉(zhuǎn)發(fā)到設(shè)備端16886的進(jìn)程中去;具體工作流程可點(diǎn)擊這里:
- 配置Android studio的debug參數(shù)
1.png
- 設(shè)置斷點(diǎn)后開始調(diào)試即可虐杯,下圖是到斷點(diǎn)處的調(diào)試信息
1.png
- 后面就可以點(diǎn)IDE上的調(diào)試按鈕開始調(diào)試了玛歌,祝你成功