zoukankan      html  css  js  c++  java
  • 安卓模拟器的使用和adb工具的使用-mac

    ####

    夜神有windows版,也有mac版

    我用的mac版,直接官网下载mac版安装

    但是夜神模拟器在我的mac安装一直是卡在99%,所以使用了网易mumu模拟器

    ###

    ###

    现在不管是用使用代码的方式,往手机传输数据,

    还是云测平台,比如阿里云测,华为云测,

    还是手机群控,兼容性测试,

    还是说appium工具,

    都是里面部分使用了adb的命令

    ##

    ###

    什么是adb

    ADB,全称为Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具。

    只能操作安卓手机

    ###

    ###

    adb的工作原理:

    首先是adb client 和adb server,都是安装在pc端的,守护进程是在app端的,

    然后pc的adb client 输入命令,adbserver会接收到这个命令,然后转发给app端,这就是原理,

    ###

    adb环境安装:

    去安装安卓sdk,并且配置环境变量,这里不做介绍

    ###

    adb连接设备查看状态:

    可以连接真机,或者模拟器,都行,

     mac连接的时候需要重启一下服务,然后再去连接,就可以了,

     mac不需要安装手机驱动,

    通过adb devices,这个命令,

    未授权,可能连接真机会有这个问题,

    adb get-state,也可以查看连接状态,

    ###

    adb命令格式,和安装卸载app

    设备是一个可选项,可以不写,

    ##

    注意这个命令的,apk包,是在pc上面的路径,

    具体下载apk,可以去腾讯应用宝下载apk的文件,

    ###

    如果多台设备的话,也是可以adb -s 设备名 uninstall XXX来指定设备卸载

    ###

    实际这个安装卸载app,比较鸡肋,因为这个可以在模拟器里面安装卸载app啊,

    ###

    adb启动app

    ###

    这个命令很重要很重要!!!

    adb shell "dumpsys window | grep mCurrentFocus"

    知道这个就可以启动app的这个页面了

    adb shell am start -n com.tencent.news/com.tencent.news.pubweibo.PubTextWeiboActivity

    这个命令是先打开app的某一个页面,然后执行这个命令,

    ###

    这个命令非常的重要!!!

    adb logcat ActivityMnanager:I | grep "cmp"------com.tencent.news/.activity.SplashActivity

    adb shell am start -n com.tencent.news/.activity.SplashActivity

    这个就是从启动页,开始启动app,模拟用户的真实操作,

    这个是先打开日志这个命令,然后去操作app

    ###

    使用adb shell 命令清理缓存

    安卓的底层是使用的Linux内核的,所以Linux的命令都是通用的,

    可以使用adb shell 直接进入这个安卓系统,

     

     所有应用包名列表:adb shell pm list packages

    查看所有自己安装的app,adb shell pm list packages -3

    常用的adb shell操作----文件操作

    进入手机设备:adb shell ---剩下的操作和Linux一样

    列出目录下的文件和文件夹:ls

    进入文件夹:adb shell cd <folder>

    新建文件夹:adb shell mkdir path/foldername

    ###

    所有的包都在cd /data/data/这个目录下面,

    查看ls | grep news

    这个是一个目录,可以进入,

    我们操作了这个app之后,发现有些问题,想要回到初始的安装的状态,又不想要卸载重装,怎么办,就可以把所有的缓存都删除,就是刚安装好的初始状态了,

     执行了这个命令之后,这个文件夹就只剩下lib目录了,其他的文件夹都删除了,

    pm是package manage

    am是activity manage,这两个一个是包管理器,一个是页面管理器,

    ###

    ####

    ###

    手机电脑传输文件,

    注意:导入导出要退出adb shell,

    1.导入到app中,

    adb push pc下文件路径 device中目录路径

    2.导出app中的到pc中,

    adb pull device中的文件路径 pc下的文件路径

    app中的/data/data/我们是不能操作的,这是系统目录,

    我们可以操作sdcard,这个目录,ls /sdcard

    可以使用vi,touch,这样的命令,vim使用不了

    可以把app的图片和日志拉取出来,然后分析,

    ####

    使用adb查看日志

    ###

    设置成为V,会打印所有的日志,

    开发人员一般是D,debug模式,

    S是什么日志都不输出,

    ###

    这个日志不是全部的,这个日志很大的时候,会把之前的日志覆盖,这个要注意,

     ###

    ###

    ###

     "*:W"这个是任意tag下的warning以上的日志

    '*:S'  这个已经要有,意思就是设置为静默模式,其他的都不展示,只展示我们想要的内容,

    ###

    通过adb命令模拟手机按钮操作

     在模拟器的设置里面,打开开发者模式,打开指针位置设置,

    ####

    ###

    这个命令结合指针,很重要!!!

    adb shell input tap 257 406

    ###

     adb shell input text 312312

    ###

      adb shell input swipe 479 769 479 1392

      adb shell input swipe 479 1392 479 769 2000 ----这个是慢慢的滑动, 

    ### 

    实际上是手机所有的操作都是有一个key值得,可以看这个连接查看,

    ###

    使用adb查看性能指标

    ###

    ###

     -d 1,就是每隔一秒,就打印一下性能情况

    这个命令是实时的,这个更加的准确,上面的cpuinfo这个是某一个时间段内的平均值,

    ###

    ##

     ###

    adb命令实现monkey压力测试

    ###

    压力测试就是连续长时间的操作这个应用,能保证每一个按键,页面都是操作到的,没有性能问题,

    比如内存泄漏,比如app无相应

    为什么叫做monkey,因为是随机性点击操作,猴子上蹿下跳的,客户的操作也是随机性的

    我们只需要收集这个monkey的日志,然后分析,看看有没有问题,

    ###

    ##

    monkey是adb的一个应用,

    ###

     ###

    adb shell monkey 100,就是100个事件,事件发送的非常的快,

    下面是花费了多少时间,12s的时间就运行完了 ,

     如果想要看到运行的结果,那就是设置多一些,比如设置1000个事件,就可以看到运行的过程了,

     会随机的吊起其他的应用,随机性是非常的强的,

    ##

     刚刚我们看到,打印的日志是非常的少的,

    我么可以使用这个命令,打印更多的日志,

    可以看到发送了哪些事件,比如移动,点击,滑动输入,等等,

    ####

    我们可以输入很大的事件数,比如10万个,

    我们怎么停掉他呢?

     进入到设备里面,adb shell

    杀掉进程,

    所以monkey要停止,只有这三个情况可以停止,pc端是停止不了这个monkey的

    ###

    一般我们就是只需要一个包压力测试,

     ##

     300是毫秒

    适当的延长时间,可以更好的模拟用户操作,

    ###

    问题:

    这种都是随机的操作,出现问题了,我们怎么复现呢?

    可以看到每次开启这个monkey任务的时候,有一个种子,找到这个种子号,我们可以重现这次随机的操作,

    ####

    ##

    启动启动monkey的时候我们可以看到比例

    ### 

    比如有的app点击事件比较多,比如抖音是滑动事件比较多,都可以设置的,

    事件的权重合计,不能大于100%,

    这个是根据产品的需求来设置的,

    ###

    忽略异常,就不会运行是停止的了,

    一般操作的时候,可以直接把这些都忽略掉,忽略崩溃,忽略超时,忽略安全异常,

    ###

    ###

    第一种方式,直接输出到pc电脑上了,执行了这个命令,页面就不打印日志了,

    这个会把每一个时间都打印出来,但是这些我们是不需要的,这个非常占据空间,有可能运行了几天之后,磁盘都被占满了都有可能,

    第二种方式,我们可以对日志过滤,‘*E’这就是我只想关注error日志,

    注意,我们可以执行运行的命令之后,再新开一个窗口执行第二个方式的命令,这种命令就会过滤日志,把我们的error输出到文件,

    ###

    ####

    8小时能执行多少个事件呢?怎么算,按照,每一个事件发送需要1毫秒算

    8*60*60*1000/300=96000,不要被图片上的误导了,

    ###

      

    ###

    可以在日志中搜索,

    ###
    这个monkey,也有问题,有些时候,在一个页面转转,跑不出来,而有些页面就点击不到,

    ####

    ==================结束=================

    ###

     

     ###

    ###

    ####

    ###

    ###

  • 相关阅读:
    并发编程
    网络与WEB 编程
    包和模块
    元编程
    类和对象
    【算法题 14 LeetCode 147 链表的插入排序】
    剑指offer面试54题
    剑指offer 面试51题
    剑指offer 面试3题
    剑指offer 面试52题
  • 原文地址:https://www.cnblogs.com/andy0816/p/15105085.html
Copyright © 2011-2022 走看看