Android3.2 AS smali动态调试

1. 发现问题

1.2 DDMS不能使用的问题

因为DDMS被AS神奇的不用了,网上也没有很好的方法,只有去找monitor.bat去打开,而且由于AS自动占用8700端口,所以很容易导致我们的DDMS崩溃,而且我还发现打开DDMS的一个bug,但是没有找到原因,怀疑是环境玄学问题

Android3.2 AS smali动态调试_第1张图片
DDMS崩溃.png

反正就是这个DDMS,可能就从此不用了,那么如何找到端口就是我们最重要的问题了

1.3 版本问题

而且之前有一个版本的AS没有这个按钮,是真的让我头疼了很久,后来更新到AS3.3.2才重新恢复了这个按钮,真的是气死我了,主要是没有这个按钮,也就也没有这个功能


调试连接按钮.png

2.准备工作

1.1 环境和工具

目前是Android Studio3.3.2,win10环境,手机是华为荣耀7(推荐使用真机调试,模拟器不通用,而且还占用内存)

插件下载:

ideasmali插件。下载地址https://github.com/JesusFreke/smali/wiki/smalidea

该插件不要解压,直接在AS中导入插件的压缩包就行了
File->Settings->Plugins,安装之前下载的ideasmali插件
install plugin from disk...

2. 正式开始

2.1 反编译smali文件

从头开始吧
首先是使用Apktools去把apk反编译出smali文件...终极简单,我用的是吾爱上一直更新的APK改之理,其实也是基于Apktools的一个优化的软件,直接把smali文件打开文件夹,把它复制到没有中文字符的目录,我目前的目录是D:\Android\smali

同时我的这个apk也是设置好了debug属性的 android:debuggable="true" 如果没有,就加上这条,然后重新签名就OK,不能忘记哦

Android3.2 AS smali动态调试_第2张图片
反编译出smali文件.png

2.2 导入项目

2.2.1 导入smali文件

打开AS,如果有已经打开的项目就File->Close Project,退出到初始界面

Android3.2 AS smali动态调试_第3张图片
AS初始界面.png

导入D:\Android\smali

Android3.2 AS smali动态调试_第4张图片
默认next.png

一路next,项目名称随便改,不改也行,资源文件就这些smali文件,不用检测到的框架,其实也没有...

2.2.2 配置该项目

成功打开该项目后,设置该项目为Source Root

打开File->Project Structure,修改选项

Android3.2 AS smali动态调试_第5张图片
选择jar包.png

打开增加配置,配置Remote端口,改个名字,记住端口号,也可以改成不被占用的端口...这个端口是本机连接端口

Android3.2 AS smali动态调试_第6张图片
配置Remote.png
Android3.2 AS smali动态调试_第7张图片
Remote参数.png

2.3 连接手机

然后就是连接手机了,华为手机狂按版本号,打开开发者模式,USB接上电脑,然后打开USB调试

AS无线调试(某些手机不支持无线调试,需要ROOT)

1.手机通过USB线连接到电脑,cmd打开电脑命令窗口
2.设置adb端口号: adb tcpip 端口号(随便写个大点的比如:12345)
3.查看手机IP地址:adb shell ifconfig wlan0
4.连接手机: adb connect 手机ip:端口号
5.断开手机连接 : adb disconnect 手机ip:端口号
6.切回USB模式 :adb usb

注意:使用的前提是手机和电脑连接的是同一个WiFi,如果手机连接as成功后断开USB,你执行第四步就可以重新连上。

然后就是win+R打开cmd

#查看当前打开的进程
adb shell dumpsys window | findstr mCurrentFocus
#找到进程,然后复制到下一条命令
#调试状态启动app
adb shell am start -D -n com.example.easy_android2/com.example.easy_android2.MainActivity
#查看手机上该进程的ID号
adb shell ps | findstr easy_android2
#连接调试,使用之前的本机连接端口
adb forward tcp:5005 jdwp:27156
Android3.2 AS smali动态调试_第8张图片
adb连接命令.png

然后就可以看到已经连接,调试成功

0x03 参考文章

  1. as无线调试: https://blog.csdn.net/AndroidOliver/article/details/75225707
  2. 命令行: https://www.cnblogs.com/goodhacker/p/5592313.html
  3. 格式矫正:https://www.jianshu.com/p/9843e80f5ac5

你可能感兴趣的:(Android3.2 AS smali动态调试)