【Smali】Smali文件的动态调试
1.简介
smalidea是一个IntelliJ IDEA/Android Studio smali语言插件,可实现动态调试smali代码。下载地址为:https://github.com/JesusFreke/smali/wiki/smalidea
。Android Studio的安装,就是傻瓜式的安装,一路next下去。接下来笔者介绍一下笔者的软件环境:jdk 1.8,android studio 2.3,smalidea 0.0.5,测试的app是笔者写的一个demo.
2.动态调试Smali需要的软件
调试的过程中需要准备的软件有android studio、smalidea、baksmali。经过笔者的测试,发现不同版本的软件搭配,会得出许多问题。这里笔者测试出,在笔者的软件环境下情况正常,Android Studio动态调试AKP需要的软件集合。
3.动态调试smali
3.1 生成Smali文件
将需要编译的软件放到apktool目录下面。
然后执行这个命令:
java -jar baksmali-2.0.3.jar test.apk -o ./projects/test/src
就可以得到projects这个文件夹。在执行上面这行代码时,可能会遇到“com.beust.jcommander.MissingCommandException: Expected a command”的异常信息。这时候可以运行
java -jar baksmali-2.0.3.jar -?
来查看帮助信息。通过报出的异常信息,和观察的帮助信息后,知道应该添加disassemble命令参数:
java -jar baksmali-2.0.3.jar disassemble test.apk -o ./projects/test/src
3.2 导入Smali文件
打开visual studio软件,File -> New -> Import Project...
然后选中上面解压出来的test文件夹
接下来,我们就可以在project中看到自己的项目了
3.3 安装Smalidea插件
现在还没有smali插件,所以不会进行语法检查。
File -> Settings...然后选中Plugins,选中Install plugin from disk... ,然后找到解压出来的smalidea 0.0.5.zip文件,点击确认重启,smalidea插件就安装成功了。
这时候,笔者建议点开查看打开smali文件看看,如果在Log台中,出现错误信息,那么表明你的Smalidea版本不对,不能正常解析。
3.4 设置远程监听
点击 Run -> Edit Configurations... 然后点击+号,选择remote。
然后再设置端口为8700
3.5 查看DDMS
在sdk tools中点击 monitor.bat ,就会看见DDMS,打开客户端的软件端口的信息就会出现,然后选中端口。
3.6 开始调试
在打好断点后,点击调试按钮。
然后就会断点处出现调试界面,