android studio动态调试apk
文章最后更新时间为:2023年07月03日 16:07:13
一般调试apk都是用jeb,但是昨天调试豌豆荚的时候,总是卡死在页面上,于是测试一下用android studio去调试apk,测试下来感觉比jeb好用,故记录下调试步骤
1. PC环境准备
本地环境是windows,安装android studio最新版本,我本地这边是2022.1.1。
然后下载插件smalidea-0.06.zip,安装到android studio
file -> setting -> Plugins -> install plugin from disk
2. 手机环境准备
首先手机需要打开调试模式,我是使用magisk root的真机的方案,可以通过下列方式:
1. adb shell
2. su
3. magisk resetprop ro.debuggable 1
4. stop;start; #一定要通过该方式重启
3. 开始调试
1.修改apk包,首先反编译apk,然后在AndroidManifest.xml里添加可调试权限,然后再打包成apk。这一步可以用android killer去做,不过我感觉mt管理器更方便。
android:debuggable="true"
2.将apk安装到手机上,然后以debug模式启动app
adb shell am start -D -n com.wandoujia.phoenix2/com.pp.assistant.activity.PPMainActivity
解释:
adb shell am start -D -n 包名/类名
am start -n 表示启动一个activity
am start -D 表示将应用设置为可调试模式
3.转发本地端口到手机上的java调试器
# 得到app进程号
adb shell "ps | grep wandoujia"
# 转发本地端口到app进程
adb forward tcp:8700 jdwp:3540
adb forward tcp:本地端口号 jdwp:app进程号
adb forward --list # 查看
adb forward --remove tcp:8700 # 取消
adb forward --remove-all
jdwp是Java Debug Wire Protocol的缩写,是Java平台调试架构中用于调试器和目标Java虚拟机之间通信的协议。Java调试器通过JDWP与正在运行的Java虚拟机进行通信,以便能够在开发和调试Java应用程序时监视和控制虚拟机的状态。
4.android studio导入项目,直接导入可以debug的apk文件,然后切换到project试图,然后右键smali文件夹,将该文件夹设置成sources root
5.点击 edit configurations,新建一个remote jvm debug,然后设置一下端口和名字就行,别的不需要修改
6.在smali代码中下断点
7.attach debugger to android process
- 然后就可以开始调试了,下面演示下 触发断点时间,查看寄存器的值