前言
本文仅供学习探讨之用,如果侵犯了您的权益请联系我删除。
工具
准备工作
安装插件
我们先下载smalidea插件并在Android Studio中安装,不然的话没法对smali下断点。
点击Plugins -> 小齿轮 -> Install plugin from disk...
或者File -> Settings -> Plugins -> 小齿轮 -> Install plugin from disk...
选择我们刚才下载的插件,例如我是smalidea-0.06.zip
这里直接Accept就行了
获取目标APP的Activity名称
安装好了之后我们启动要调试APP,再通过执行
adb shell "dumpsys window | grep mCurrentFocus"
命令来获取当前正在运行的APP的Activity名称,例如:
mCurrentFocus=Window{dd97e24 u0 com.kapron.ap.aicamview.tv/com.kapron.ap.aicamview.ui.CameraListActivity}
我们把com.kapron.ap.aicamview.tv/com.kapron.ap.aicamview.ui.CameraListActivity
保存下来,后面会用到。
修改系统调试标志
然后我们用Magisk来修改系统的ro.debuggable
属性。
我们进入adb shell
然后输入su
获取root权限,然后执行下面的步骤:
- 执行
getprop ro.debuggable
获取当前ro.debuggable
的值,如果返回1
说明你的系统已经是可调试状态了,直接跳过下面的步骤。 - 执行
magisk resetprop ro.debuggable 1
修改ro.debuggable
的值为1
。 - 执行
stop ; start
进行软重启(不要手动重启或者用reboot
之类的命令)。 - 软重启完成之后执行
getprop ro.debuggable
,如果返回1
说明修改成功。
如果你想恢复默认的ro.debuggable
的值,只需要手动重启或者执行reboot
之类的指令重启手机即可。
开始调试
重新启动Android Studio,然后点击More Actions -> Profile or Debug APK
或File -> Profile or Debug APK
。
然后选择与我们要调试的APP对应的.apk文件即可,然后等待Android Studio完成反编译和加载。
加载完成后我们点击上面的More Actions -> Edit...
然后点击Debugger
,把Debug type改成Java Only
并把下面的Automatically attach on Debug.waitForDebugger()
给勾上,然后点击OK。
现在我们连接设备ADB,然后执行下面的命令启动要调试的APP:
adb shell "am start -D -n com.kapron.ap.aicamview.tv/com.kapron.ap.aicamview.ui.CameraListActivity"
其中com.kapron.ap.aicamview.tv/com.kapron.ap.aicamview.ui.CameraListActivity
这一串就是我们之前保存的Activity名称。
这个时候Android Studio就会自动连接上设备了
然后我们找个地方下个断点测试一下
可以看到已经成功断下来了,现在就可以愉快的调试了。
结语
那就这样了,有缘再见~