【前言】

   之前我写过一篇Android Studio 3.0+无源码调试apk的博客,可能很多小伙伴试了,发现虽然apk是导入进Android Studio,但是却无法加断点,主要是因为新版本的Android Studio默认解析smali文件的插件是Smali Support,这个插件不支持断点,所以我们需要自己手动下载支持断点的smali解析插件:smalidea
解决新版Android Studio 4.0+无法断点调试smali问题

一、smalidea下载配置

1、下载支持断点的smali解析插件:smalidea,目前最新的版本是0.0.5,他们GitHub仓库源码在这里,有兴趣的可以去瞅一瞅
解决新版Android Studio 4.0+无法断点调试smali问题
2、下载完smalidea-0.0.5.zip之后,我们在Android Studio中依次点击File -> Settting -> Plugins ->小齿轮 -> Install Plugins from Disk,从我们本地磁盘中选择我们下载好的smalidea-0.0.5.zip,点击“OK”就导入进来了,导入成功之后,会提示让你重启一下Android Studio, 使得smalidea插件生效
解决新版Android Studio 4.0+无法断点调试smali问题
3、重启Android Studio之后,依次点击File -> Settting ->Editor -> File Types, 你会看到两个smali名字的插件,一个是smali support ,一个是刚安装的smalidea
解决新版Android Studio 4.0+无法断点调试smali问题
4、首先我们先点击smali support插件,把它支持处理*.smali文件的配置项去掉
解决新版Android Studio 4.0+无法断点调试smali问题
5、然后给smalidea插件,新增支持处理*.smali文件配置项
解决新版Android Studio 4.0+无法断点调试smali问题
6、到此,配置就结束啦,我们可以愉快地进行加断点了
解决新版Android Studio 4.0+无法断点调试smali问题

二、调试apk

1、导入需要调试的apk,依次点击 File -> Profile or Debug Apk,选择导入apk,导入成功之后,显示如下:
解决新版Android Studio 4.0+无法断点调试smali问题
2、点开java目录下,找到需要断点的代码行,点击最左边加上断点
解决新版Android Studio 4.0+无法断点调试smali问题
3、准备一台支持debug apk的设备(以下满足任意一个条件即可)

  • 把你的手机设备root掉
  • 修改测试机的 /default.prop文件的ro.debuggable=1,目测这一步也可能需要root。可以使用这个命令查看你的设备是否支持debug所有app: adb shell “getprop ro.debuggable”,显示1就是可以,显示0就是不可以
  • 使用模拟器(这个最简单,市面上很多模拟器,比如:逍遥、夜神、雷电、mumu等)
  • 修改apk的Manifest application 属性 android:debuggable=“true”,可以用apktool
    解出Manifest 然后修改,接着重新打包回去。
    4、为了能够让apk等待调试进程连接才开始运行,还需要设置调试应用
    1)先把第3步修改好的apk,安装到手机
    2)然后打开手机的开发人员选项-> 选择待调试应用-> 选中需要调试的应用,接着把等待调试器开关打开
    解决新版Android Studio 4.0+无法断点调试smali问题
    5、点击启动需要调试的应用,会出现等待调试进程连接的对话框
    解决新版Android Studio 4.0+无法断点调试smali问题
    6、回到第2步打开的Android Studio项目,点击将调试器连接到android进程
    解决新版Android Studio 4.0+无法断点调试smali问题
    7、上述点击之后,会弹出选择调试进程弹窗,这里显示的都是有debuggable标识的包名
    解决新版Android Studio 4.0+无法断点调试smali问题
    8、双击选中,你想要调试的包名即可,不过假如你需要调试的apk有.so库,可能会提示这个错误
    解决新版Android Studio 4.0+无法断点调试smali问题
    9、要解决上述问题,选择只调试java即可
    解决新版Android Studio 4.0+无法断点调试smali问题
    10、终于搞掂,我们看看效果
    解决新版Android Studio 4.0+无法断点调试smali问题

相关文章: