声明,为了防止原文不见了,所以拷贝过来的
原文地址:https://blog.csdn.net/qq_43278826/article/details/108377201
在Android Studio 4.1上亲测有效
且解决了,调试过程中,watch 中无法查看中间值的问题(smalidea下载配置
中 4、5 解决了这个问题)
smalidea 0.0.6 下载地址:https://bitbucket.org/JesusFreke/smalidea/downloads/
下面为原文
【前言】
之前我写过一篇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、终于搞掂,我们看看效果
————————————————
版权声明:本文为CSDN博主「潇曜」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43278826/article/details/108377201