• Appium 自动化测试第一天——基础知识


    概述

    Adb作为PC和Android设备交互与通信的工具

    Android调试桥接,Android DebugBridge,它是一个CS架构的命令行工具,作用就是PC通过adb来操作手机

    Adb的组成

    客户端(client):所有命令都是PC发起,可以对Android应用进行安装,卸载和调试(可以有多个窗口或程序发送命令)

    服务端(server):管理客户端到Android设备上adb后台进程的连接(不同客户端发来的命令都由服务器负责和Android设备通信,他们之间的通信都是通过5037端口连接)

    守护进程:Android后台运行的进程,负责接收命令(ADB服务器和守护进程的通信是通过相邻的两个端口实现的,偶数端口(比如5554)负责处理命令行的通信,奇数端口(比如5555)是用来保持连接的,我们可以看到,adb服务器可以和多台设备连接,每连接一个,会分配两个相邻的端口出来,第一对是5554/5555,第二对就是5556/5557,相对应的,我们adb连接多台设备的时候,需要指定端口号或者设备名称,服务器会找到对应的设备,进行通信)

     

    Adb环境配置

    下载SDK-------将tools和platform-tools两个目录配置到系统环境变量PATH中-----这样就可以直接在命令行中使用adb命令进行验证了

    ADB命令

    ADB基本命令格式

    adb [-e | -d | -s<设备序列号>]<子命令>

    参数

    说明

    -e

    只运行在模拟器 adb -e shell

    -d

    只运行在真机adb -d shell

    -s

    运行在指定的设备中,设备序列号通过adb device获取到

    help

    列出adb帮助文件

    version

    列出adb版本

    Adb基础命令

    文件传输和安装命令

    子命令

    参数

    说明

    devices

    [-l]详细信息

    列出所有已经连接的设备,有三种状态
    device/offline/device not fount
    分别对应设备连接正常,设备断线和设备未找到

    push

    <local> <remote>

    复制电脑本地文件到手机设备

    pull

    <remote> <local>

    拉取手机设备文件到本地

    install

    [-lrtsd] <file>

    安装apk
    -l:标识应用为受限制应用
    -r:替换安装
    -t:运行安装测试包
    -s:安装到SD卡
    -d:允许降级安装

    install -mutiple

    [-lrtsd] <file ...>

    批量安装
    -p:部分应用程序安装

    uninstall

    [-k] <package>

    查找包名可以通过命令(adb shell pm list packages | find “***”)

    卸载
    -k:保持data和cache下的文件

    获取信息命令

    子命令

    参数

    说明

    wait-for-device

    等待设备连接

    start-server

    开启adb服务

    kill-server

    杀掉adb服务(adb连不上的时候可以尝试)

    get-state

    获取adb服务状态
    offline | bootloader | device

    get-serialno

    获取SN号

    get-devpath

    获取device-path

    status-window

    连续打印指定设备的设备状态(监听状态)—做开发工具时使用较多

    Log与重启相关命令

    子命令

    参数

    说明

    bugreport

    打印当前的dumpsys,sumpstate,logcat的输出

    logcat

    参数较多,
    需要单独研究

    输出Android系统日志

    shell

    参数较多,
    需要单独研究

    进入远程shell端

    remount

    重新挂载系统分区,是的系统分区重新可写(多用于push到系统目录之前)

    reboot

    [bootloader | recovery]

    重启

    reboot -bootloader

    重启到bootloader

    root

    重新启动adbd获取root身份

    usb

    重新启动adbd来监听USB,相当于重新插拔USB

    tcpip

    <port>

    重新启动adbd来监听指定的TCP端口

    Adb备份与恢复命令

    子命令

    参数

    说明

    backup
    (将一页的数据文件写入到指定的文件,如果没有指定-f输出目录,则保存在当前目录的backup.ab)

    [-f<file>]

    指定备份目录

    [-apk | -noapk]

    是否备份apk文件,默认为否

    [-obb | -noobb]

    是否备份obb数据包,默认为否

    [-shared | -noshared]

    是否备份SD卡共享内容,默认为否

    [-all]

    备份所有已安装应用

    [-system | -nosystem]

    是否备份系统应用,-all包括系统应用

    [<packages...>]

    备份指定的应用列表

    restore

    将备份文件恢复到手机中

    这两个命令可以实现数据的备份以及两台手机间的数据恢复等场景

    如下图的操作步骤可以将手机完全备份,备份的过程中可以进行加密,这样恢复的时候也需要密码

     

    Adb重定向端口命令

    端口映射模型

    将开发PC上的端口(1314)重定向到设备的端口(5200)上,这样所有发往PC端口1314的数据都会被转发到设备端口5200。

    这个机制可以实现远程控制Android设备应用。

    如下图

    具体命令如下表格,具体应用后续如果使用到再进行补充

    子命令

    参数

    说明

    forward --list

    列出所有套接字连接列表

    forward

    <local><remote>

    重定向端口

    forward --norebind

    <local><remote>

    重定向端口,假如local端口已经被占用则失败

    forward --remove

    <remote>

    移除本地已连接的套接字

    forward --remove-all

    移除本地已连接的所有套接字

    reverse --list

    列出所有连接设备的反向连接套接字

    reverse

    <remote><local>

    反向连接套接字

    reverse --norebind

    <remote><local>

    反向连接,假如端口被占用则失败

    reverse --remove

    <remote>

    删除一个特定的逆转套接字连接

    reverse --remove-all

    删除所有特定的逆转套接字连接

    Adb无线连接与文件同步

    Adb无线连接可以不使用USB来直接调试Android设备,这样就是通过TCP/IP连接来操作设备,其实和操作模拟器的原理是一致的

    子命令

    参数

    说明

    connect

    <host>[:<port>]

    通过TCP/IP连接到设备,如果没有指定端口号则使用5555作为默认端口

    disconnect

    <host>[:<port>]

    断开与TCP/IP设备的连接,如果没有指定端口号则使用5555作为默认端口,如果使用这个命令没有附加参数,将端口所有连接的TCP/IP设备

    sync

    [<directory>]

    只要文件发生改变时就会自动从主机拷贝到设备,需要指定环境变量ANDROID_PRODUCT_OUT为同步目录

    同步文件的使用场景多为有多个so文件等需要同步,如果一个个删除再push的话会耗费很大的工作量,这时候使用同步命令

    无线连接和同步的具体操作后续完善补充

    Adb连接问题

    Adb list of devices attached

    Windows:

    首先安装驱动程序,看设备管理器驱动是否安装成功,不能安装驱动可以借助随便一个手机助手解决

    然后打开手机开发者选项中的usb调试,并允许电脑始终对手机usb调试

    连不了的时候首先用adb kill-server和adb start-server进行重启adb,或者用命令查看是哪个进程占用了5037端口,然后进行释放

    参考:http://blog.csdn.net/johnnycode/article/details/7678083

    这时候如果这些准备好的话应该是可以正常连接的,我们的手机序号应该已经写入了Windows下的.android隐藏目录下的adb_usb.ini文件,但还是同样的adb list of devices attached,这时候我们要考虑自动连接写入的adb设备号是否和我们终端使用的adb为同一个路径,在合适的位置写入正确的设备号即可,亲测有效,记得加0x

    参考:http://blog.csdn.net/join_12/article/details/45970717

    Ubuntu:和Windows下的基本思路是一致的,具体的操作方法参考如下帖子:

    http://blog.csdn.net/mr_driver/article/details/8449642

    Adb devices offline

    端口抢占,可以参考上述方法解决

  • 相关阅读:
    新增数据盘
    FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。
    将tomcat的protocol改为APR模式,以提高性能
    POJ 2195 Going Home (最小费用最大流)
    HDU 2732 Leapin' Lizards (最大流)
    POJ 2516 Minimum Cost (最小费用最大流)
    POJ 1087 A Plug for UNIX (最大流)
    POJ 3281 Dining (最大流)
    HDU 3605 Escape (最大流)
    POJ 1149 PIGS (最大流)
  • 原文地址:https://www.cnblogs.com/huiguniang/p/7482428.html
Copyright © 2020-2023  润新知