1. 发现问题
1.2 DDMS不能使用的问题
因为DDMS被AS神奇的不用了,网上也没有很好的方法,只有去找monitor.bat去打开,而且由于AS自动占用8700端口,所以很容易导致我们的DDMS崩溃,而且我还发现打开DDMS的一个bug,但是没有找到原因,怀疑是环境玄学问题
反正就是这个DDMS,可能就从此不用了,那么如何找到端口就是我们最重要的问题了
1.3 版本问题
而且之前有一个版本的AS没有这个按钮,是真的让我头疼了很久,后来更新到AS3.3.2才重新恢复了这个按钮,真的是气死我了,主要是没有这个按钮,也就也没有这个功能
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,不能忘记哦
2.2 导入项目
2.2.1 导入smali文件
打开AS,如果有已经打开的项目就File->Close Project,退出到初始界面
导入D:\Android\smali
一路next,项目名称随便改,不改也行,资源文件就这些smali文件,不用检测到的框架,其实也没有...
2.2.2 配置该项目
成功打开该项目后,设置该项目为Source Root
打开File->Project Structure,修改选项
打开增加配置,配置Remote端口,改个名字,记住端口号,也可以改成不被占用的端口...这个端口是本机连接端口
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
然后就可以看到已经连接,调试成功
0x03 参考文章
- as无线调试: https://blog.csdn.net/AndroidOliver/article/details/75225707
- 命令行: https://www.cnblogs.com/goodhacker/p/5592313.html
- 格式矫正:https://www.jianshu.com/p/9843e80f5ac5