Smalidea+IntelliJ IDEA/Android Studio动态调试安卓app教程
smalidea
smalidea是一個IntelliJ IDEA/Android?Studio smali語言插件,可實現動態調試smali代碼。
github地址:https://github.com/JesusFreke/smali/wiki/smalidea
下載地址:https://bitbucket.org/JesusFreke/smali/downloads
動態調試安卓app
smalidea支持14.1或以上版本的IDEA。Android Studio如果是基于14.1或以上版本的IDEA也是支持的,我這里用的是2.0版本的Android Studio,IDEA的操作也差不多。
從上面的地址下載這3個文件。?
安裝smalidea
1.打開Android Studio,按Alt+Ctrl+S打開設置界面,點擊Plugins——Install plugin from disk…——選擇下載好的smalidea-0.03.zip。?
2.重啟Android Studio。
baksmali
使用baksmali反編譯apk得到smali代碼。
使用下面命令得到apk的smali代碼,在./projects/myapp/src目錄下?
java -jar baksmali-2.1.2.jar myapp.apk -o ./projects/myapp/src
下面是一個windows下批處理的代碼,用于更新src目錄下smali代碼,copy到baksmali-2.1.2.jar同級目錄下
<code class="language-bat hljs tex has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">@echo offif exist projects<span class="hljs-command" style="box-sizing: border-box; color: rgb(0, 0, 136);">\myapp</span><span class="hljs-command" style="box-sizing: border-box; color: rgb(0, 0, 136);">\src</span> @DEL /S /Q projects<span class="hljs-command" style="box-sizing: border-box; color: rgb(0, 0, 136);">\myapp</span><span class="hljs-command" style="box-sizing: border-box; color: rgb(0, 0, 136);">\src</span><span class="hljs-command" style="box-sizing: border-box; color: rgb(0, 0, 136);">\*</span> java -jar baksmali-2.1.2.jar myapp.apk -o ./projects/myapp/src</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li></ul>創建新的工程并導入smali
1.Project from Existing Sources…?
選擇工程目錄?
接著一路Next…?
2.工程創建成功后,在src目錄上右鍵并選擇”Mark Directory As——Sources Root”。?
開始調試app
1.打開DDMS?
工程創建成功后,發現Android Device Monitor按鈕不能點擊,因為這不是一個完整的安卓工程,不過可以到Android SDK/tools目錄下點擊monitor.bat打開DDMS。?
2.Run/Debug Configurations?
創建一個”Remote” debug configuration (Run->Edit Configurations), 設置Port為8700。?
3.在smali代碼中你需要的地方打上斷點。
4.運行應用,并在DDMS中選中該應用的進程。?
5.點擊Debug按鈕,開始調試。當運行到斷點時應用就會被暫停,這時就可以像平時調試應用一樣操作了。?
說明:在smali中所有的局部變量用v開頭,方法的頂部.locals n表示這個方法使用n個局部變量。所有的參數用p開頭,局部變量和參數都是從0開始編號。對于非靜態方法來說,p0就是對象本身的引用,即this指針。
關于smali語法可以參考這篇文章
原文地址: http://blog.csdn.net/linchaolong/article/details/51146492
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Smalidea+IntelliJ IDEA/Android Studio动态调试安卓app教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据存储之 SQLite 数据库操作(三
- 下一篇: Android中的ClassLoader