美文网首页
Android3.2 AS smali动态调试

Android3.2 AS smali动态调试

作者: selfishspring | 来源:发表于2019-03-29 21:26 被阅读0次

    1. 发现问题

    1.2 DDMS不能使用的问题

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

    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,不能忘记哦

    反编译出smali文件.png

    2.2 导入项目

    2.2.1 导入smali文件

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

    AS初始界面.png

    导入D:\Android\smali

    默认next.png

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

    2.2.2 配置该项目

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

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

    选择jar包.png

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

    配置Remote.png 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
    
    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动态调试

          本文链接:https://www.haomeiwen.com/subject/gcypvqtx.html