AndroidStudio 动态调试Smali代码
2017-04-17 本文已影响1622人
Andrew玩Android
AndroidStudio调试方式其实和IDEA调试方式比较类似,毕竟是基于IDEA开发的。
优点是:断点可以打的比其他方式更早,比如入口Activity的onCreate方法,甚至入口Application(个人猜想未测试),而不必进入应用后再触发断点。
安装插件
最好安装0.0.5版本。
应用开启调试模式
- 首先将应用设置为debug模式,两处修改同IDEA调试。
- 命令行启动调试模式,
adb shell am start -D -n packagename/ MainActivity
。
如果packagename和MainActivityActivity路径相同的话,包名(com.test.www), MainActivity(com.test.www.activity)。
命令行:adb shell am start -D -n com.test.www/.activity.MainActivity
。
路径不同,包名(com.test.www), MainActivity(com.sample.www.activity):adb shell am start -D -n com.test.www/com.sample.www.activity.MainActivity
- 通过DDMS中的
pid
查看应用所在进程。
如果不用 DDMS可以通过adb shell执行ps | grep packagename
命令查看pid。 - 端口转发:
adb forward tcp:8700 jdwp:pid
如果DDMS开启状态,请关闭,否则会报错。
配置Android Studio调试环境
- 将smali目录(或在smali建一级父目录后将该目录导入),选择
Import Project(Eclipse ADT, Gradle)
后选择Create project from existing sources
,一路Next
。 - 成功导入工程后右键点击 src 目录,设定
Mark Directory As
-->Sources Root
。 - 配置远程调试的选项,选择
Run
-->Edit Configurations
,增加一个Remote调试的调试选项,端口选择:8700。 - 选择
File
-->Project Structure
配置JDK。 - 打好断点之后
Run
->Debug
开始调试。
相关推荐:
JEB动态调试apk
IDEA 动态调试Smali代码
参考: