1.簡介
smalidea是一個IntelliJ IDEA/Android Studio smali語言插件,可實現動態調試smali代碼。下載地址為:https://github.com/JesusFreke/smali/wiki/smalidea
。Android Studio的安裝,就是傻瓜式的安裝,一路next下去。接下來筆者介紹一下筆者的軟件環境:jdk 1.8,android studio 2.3,smalidea 0.0.5,測試的app是筆者寫的一個demo.
2.動態調試Smali需要的軟件
調試的過程中需要准備的軟件有android studio、smalidea、baksmali。經過筆者的測試,發現不同版本的軟件搭配,會得出許多問題。這里筆者測試出,在筆者的軟件環境下情況正常,Android Studio動態調試AKP需要的軟件集合。
3.動態調試smali
3.1 生成Smali文件
將需要編譯的軟件放到apktool目錄下面。
然后執行這個命令:
java -jar baksmali-2.0.3.jar test.apk -o ./projects/test/src
就可以得到projects這個文件夾。在執行上面這行代碼時,可能會遇到“com.beust.jcommander.MissingCommandException: Expected a command”的異常信息。這時候可以運行
java -jar baksmali-2.0.3.jar -?
來查看幫助信息。通過報出的異常信息,和觀察的幫助信息后,知道應該添加disassemble命令參數:
java -jar baksmali-2.0.3.jar disassemble test.apk -o ./projects/test/src
3.2 導入Smali文件
打開visual studio軟件,File -> New -> Import Project...
然后選中上面解壓出來的test文件夾
接下來,我們就可以在project中看到自己的項目了
3.3 安裝Smalidea插件
現在還沒有smali插件,所以不會進行語法檢查。
File -> Settings...然后選中Plugins,選中Install plugin from disk... ,然后找到解壓出來的smalidea 0.0.5.zip文件,點擊確認重啟,smalidea插件就安裝成功了。
這時候,筆者建議點開查看打開smali文件看看,如果在Log台中,出現錯誤信息,那么表明你的Smalidea版本不對,不能正常解析。
3.4 設置遠程監聽
點擊 Run -> Edit Configurations... 然后點擊+號,選擇remote。
然后再設置端口為8700
3.5 查看DDMS
在sdk tools中點擊 monitor.bat ,就會看見DDMS,打開客戶端的軟件端口的信息就會出現,然后選中端口。
3.6 開始調試
在打好斷點后,點擊調試按鈕。
然后就會斷點處出現調試界面,