解决新版Android Studio 4.0+无法断点调试smali问题

【前言】

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

一、smalidea下载配置

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

二、调试apk

1、导入需要调试的apk,依次点击 File -> Profile or Debug Apk,选择导入apk,导入成功之后,显示如下:
在这里插入图片描述
2、点开java目录下,找到需要断点的代码行,点击最左边加上断点
在这里插入图片描述
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)然后打开手机的开发人员选项-> 选择待调试应用-> 选中需要调试的应用,接着把等待调试器开关打开
在这里插入图片描述
5、点击启动需要调试的应用,会出现等待调试进程连接的对话框
在这里插入图片描述
6、回到第2步打开的Android Studio项目,点击将调试器连接到android进程
在这里插入图片描述
7、上述点击之后,会弹出选择调试进程弹窗,这里显示的都是有debuggable标识的包名
在这里插入图片描述
8、双击选中,你想要调试的包名即可,不过假如你需要调试的apk有.so库,可能会提示这个错误
在这里插入图片描述
9、要解决上述问题,选择只调试java即可
在这里插入图片描述
10、终于搞掂,我们看看效果
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值