adb命令(一)

针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb 命令熟记于心, 将会为 Android 测试带来很大的方便,其中很多命令将会用于自动化测试的脚本当中。

Android Debug Bridge

adb其实就是Android Debug Bridge,安卓调试桥的缩写,adb.exe在安装的anroid的sdk开发包platform-tools目录下,它是一个C/S架构的命令行主要由3部分组成:

  1、运行在PC端的Client:可以通过它对Android应用进行安装、卸载及调试

    Eclipse 中的 ADT、SDK Tools 目录下的 DDMS、Monitor 等工具,都是同样地用到了 adb 的功能来与 Android 设备进行交互。

    PC 端的手机助手,诸如 360 手机助手、豌豆荚、应用宝等,其除了安装第三方应用方便,其他的功能,基本上都可以通过 adb 命令去完成,这里建议测试人员尽量不要在电脑上安装这类手机助手,因为其自带的 adb 程序可能会与 Android SDK 下的 adb 程序产生冲突,5037 端口被占用,导致使用 adb 命令时无法连接到设备

  2、运行在PC端的Service:其管理客户端到Android设备上adb后台进程的连接

    adb 服务启动后,Windows 可以在任务管理器中找到 adb.exe 这个进程

  3、运行在 Android 设备上的 adb 后台进程(adb daemon,守护进程,一个以后台进程的形式运行于模拟器或物理手机设备上的守护程序(daemon))

    执行 adb shell ps | grep adbd ,可以找到该后台进程,windows 请使用 findstr 替代 grep

    

[xuxu:~]$ adb shell ps | grep adbd
root      23227 1     6672   832   ffffffff 00019bb4 S /sbin/adbd

    这里注意一个地方,就是 adb 使用的端口号,5037,有必要记一下

  当用户启动一个adb客户端,客户端首先确认是否已有一个adb服务进程在运行。如果没有,则启动服务进程。当服务器运行,adb服务器就会绑定本地的TCP端口5037并监听adb客户端发来的命令,所有的adb客户端都是使用端口5037与adb服务器进行对话的。接着服务器将所有运行中的模拟器或设备实例建立连接。它通过扫描所有5555到5585范围内的奇数端口来定位所有的模拟器或设备。一旦服务器找到了adb守护程序,它将建立一个到该端口的连接。请注意任何模拟器或设备实例会取得两个连接的端口,一个偶数端口用来控制与控制台的连接,和一个技术端口用来控制与adb连接。

adb命令

在开发或者测试的过程中,我们可以通过adb来管理多台设备,其一般的格式为:

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

在配好环境变量的前提下,在命令窗口当中输入adb help或者直接输入adb,将会列出所有选项的说明及子命令

这里介绍一些里面蝉蛹的命令:

  1、adb devices,获取设备列表及设备状态 

[xuxu:~]$ adb devices
List of devices attached
44c826a0    device  

  2、adb get-state,获取设备的状态 

[xuxu:~]$ adb get-state
device

  设备的状态有3种,device,offline,unknown

  device:设备正常连接

  offline:表明设备或者模拟器没有连接到adb服务器或者没有响应,连接异常,设备无响应

  unknown:没有连接设备

  

  3、adb install,安装应用

    只有一个手机设备或者一个模拟器设备:adb install 路径

    指定设备或者模拟器安装:adb -s 物理手机设备序列号/手机模拟器设备序列号 install 安装包路径

    覆盖安装:adb -s 设备序列号 install -r 安装包路径

windows 下如果需要安装含有中文名的 apk ,需要对 adb 进行修改,百度可以找到做出修改的adb , 支持中文命令的 apk,请自行搜索

    

  4、adb uninstall,卸载应用

    adb uninstall 包名

    指定设备或者模拟器设备卸载:adb -s 手机设备序列号/手机模拟器设备序列号 uninstall 已安装的应用报名

    保留配置和缓存文件卸载:adb -s 设备序列号 shell pm uninstall -k 已安装的应用包名

  

  5、adb pul,将 Android 设备上的文件或者文件夹复制到本地

    例如复制 Sdcard 下的 pull.txt 文件到 D 盘:    

adb pull sdcard/pull.txt d:/

    指定设备或者模拟器:adb -s 设备序列号 pull 手机上文件路径 电脑上的路径

    如果需要重命名为 rename.txt:

db pull sdcard/pull.txt d:/rename.txt
注意权限,复制系统权限的目录下的文件,需要 root ,并且一般的 Android 机 root 之后并不能使用命令去复制,而需要在手机上使用类似于 RE 的文件浏览器,先对系统的文件系统进行挂载为可读写后,才能在手机上复制移动系统文件,这里推荐使用小米手机的开发版本,IUNI 也是不错滴~~

  6、adb push,推送本地文件或文件夹至Android设备

    例如推送 D 盘下的 push.txt 至 Sdcard:

adb push d:/push.txt /sdcard/

    推送D盘下的“pass”文件夹至Sdcard:

adb -s 设备号 push d:/pass /sdcard/pass/

  

  7、adb shell命令

    安卓系统是基于Linux系统开发的,支持常见的linxu命令,这些命令都保存在手机的“/system/bin/”文件夹下,在该文件夹下能看到我们一些平时在应用linux系统时经常操作的指令,如"ls、cat、df、uptime、ps、kill"等。我们可以通过使用adb shell命令后直接加上相关的指定及其参数来执行这些指令

    例如:查看手机当前目录的所有内容,可以输入adb shell ls命令查看

    

    可以输入“exit”来退出“adb shell”提示符。回到windows命令行控制台

    

    有时候,我们可能关心手机上安装了哪些应用,可以使用adb shell命令来访问手机系统/data/data目录进行查看。提醒,在操作的过程中需要切换root用户

  具体操作如下:

adb shell
su root
cd /data/data
ls

    如果没有root,则会出现访问权限问题

    

  8、adb shell dumpsys battery,查看电池电量的相关信息

    

    各参数的含义:

      AC powered:false  表示是否连接电源供电,false也就是没有使用电源供电

      USB powered:true  表示是否使用USE供电,true是使用USB供电

      status:2  表示电池充电状态,这里2表示电池电量

      health:2  表示电池的健康情况,2表示电池的状态为良好

      present:true  表示手机上是否有电池,true表示有电池

      level:66  表示当前剩余的电量信息,66表示剩余电量为66%

      scale:100  表示电池电量的最大值

      voltage:4035  表示当前电池的电压,模拟器上的电压是0,这里我们手机上电池的电压为4035毫伏

      temperature: 310  表示当前电池的温度,它是一个整数值,310表示31.0度

      technology: Li-ion  表示电池使用的技术,z合理的Li-ion表示锂电池

  9、adb shell dumpsys WiFi,查看无线网络的信息

    运行该命令后输出信息内容很多,所以这里加入了“| more”参数,这样当输出信息在满一页时就暂停输出,若需要查看后续输出内容,就可以按空格继续显示下页内容,或者按Q键停止显示后续输出内容

    

  相关输出信息的含义:

    Wi-Fi is enabled:表示wifi的连接状态信息,安卓系统中,包含了5中wifi连接状态

      WIFI_STATE_DISABLED  wifi已关闭

      WIFI_STATE_DISBLING  WIFI正在关闭中

      WIFI_STATE_ENABLED  WIFI已启用

      WIFI_STATE_ENABLING  WIF正在启动中

      WIFI_STATE_UNKNOWN  未知WIFI状态

    Internal state:  在该部分罗列了一些关于wifi设备名称、wifi的名称,状态,IP地址,MAC地址,网络加密方式等信息

    如果需要查看后面的输出信息,单机空格键可进行查看

  10、adb shell dumpsys power,查看你电源管理的相关信息

    

    在进行移动测试自动化测试的或死后,有时候需要判断手机是否处于锁屏状态,以及根据手机的一些设置来决定其操作,比如手机设置的是5分钟不进行操作就关闭屏幕,我们在进行自动化脚本设计的时候,在长时间停顿后就需要判断其是否超过锁屏了时间,从而采取后续不同的操作,如果没超过改时间则就进行输入操作,而超过了这个时间则需要激活屏幕,锁锁定了屏幕还需要解锁,再进行响应的输入操作,这里的“mScreenOffTimeoutSetting=60000”,其值“60000”表示1分钟

过滤信息:
在windows可以加入“findstr”或者“grep”,在Linux中只能加入“grep”。
adb shell dumpsys power | findstr "mScreenOffTimeoutSetting"
就可以只输出屏幕个i鞍鼻时间的设置信息

  

  

  11、adb shell dumpsys telephony.registry,查看电话相关信息

  

  mCallState=0  表示呼叫状态,0表示待机状态;1表示来电尚未接听;2表示电话占线

  mCallIncomingNumber=  表示最近一次来电的电话号码

  mServiceState  表示服务的状态,0表示正常使用状态

  mSignalStrengt  表示信号强度

  mMessageWaiting  表示是否在等待无线电信息

  mCallForwarding  表示是否启用了呼叫转移

  mDataActivity  表示无线数据通话情况,0表示没有通话,1表示正在接受IP PPP信号,2表示正在发送IP PPP信号,3表示正在发送和接受IP PPP信号

  mDataConnectionState  表示无线数据连接情况,0表示无数据连接,1表示正在创建数据连接,2表示已连接,3表示已挂起状态,已经建好连接,但是IP数据通信暂时无法使用

  mDataConnectionPossible  表示是否有数据连接

  mDataConnectionReason  表示数据连接的原因

  mDataConnectionApn  表示APN,即接入点名称

  mDataConnectionLinkProperties  表示数据连接的链路属性

  mDataConnectionLinkCapabilities  表示数据链路连接的能力

  mCellLocation  表示基站相关信息

  registrations  表示登记记录计数

  12、adb shell cat /proc/cpuinfo,CPU硬件的相关信息

    安卓系统的“/proc”分区保存的系统各种实时信息,如CPU、内存等信息

  

  13、adb shell cat /proc/meminfo,查看内存的相关信息

    

  14、adb shell cat /proc/iomem,查看I/O内存分区的相关信息

    

时间: 2024-10-12 07:31:18

adb命令(一)的相关文章

adb命令详解(二)——手机缺失sqlite3时操作数据库的多种解决方案

在android应用开发无处不在SQLite数据库的身影.那么在开发中怎么使用adb命令操作数据库的功能呢? 下面我们将完整的介绍与数据库操作相关的命令集及当手机缺少sqlite3的时候的多种解决方案. 1.当手机缺失sqlite3时,如何操作数据库 先来看看手机缺失sqlite3时候的效果图: 这个时候你想操作刚刚编写应用程序中执行的数据库文件内容,显然是执行不了sql语句的.下面我们将介绍三种方法让你可以查看应用程序下的数据库文件: ㈠向手机导入sqlite3文件 ①第一步,下载sqlite

Android笔记之adb命令应用实例1(手机端与PC端socket通讯下)

由于本人学习Android也挺长时间了,一直把日记记在evernote里面,由于刚离职比较空闲就打算把evernote里的日志一遍遍整理出来发布到网上分享. 本篇将分别使用C#和java语言,来实现和android端通讯的PC客户端代码. 通过adb和Android通讯需要引用adb相关的组件到项目中,分别为:adb.exe,AdbWinApi.dll,AdbWinUsbApi.dll. 可以在XXX\sdk\platform-tools目录下找到 首先看C#语言的实现: 界面效果如下: nam

第4章4节《MonkeyRunner源码剖析》ADB协议及服务: ADB命令行客户端使用简介(原创)

天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文"寻求合作伙伴编写<深入理解 MonkeyRunner>书籍".但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在所难免.有需要的就参考下吧,转发的话还请保留每篇文章结尾的出处等信息. 从前面几个小节我们知道ADB命令行客户端是存在与主机端的一个命令,用户可以使用该命令来发送服务请求到ADB服务器,ADB服务器再判断该服务请求是主机服务请求还是本地服务请求来决定是否应该将请求传送给远程adbd守护进程

常用adb命令

常见的adb命令 adb devices 列出所有的设备 adb start-server 开启adb服务 adb kill-server 关闭adb服务 adb logcat 查看Log adb shell 挂载到Linux的空间 adb install <应用程序(加扩展名)>  安装应用程序 adb –s <模拟器名称>  install  <应用程序(加扩展名)>  安装应用到指定模拟器 adb uninstall <程序包名> adb pull &

adb命令开启手机的一些功能,请问怎么操作?

============问题描述============ 我想使用ADB命令,来启动手机的一些功能,比如开启"未知来源",即允许第三方程序安装.因为我要写一个脚本,自动安装APK的,但是系统默认设置是不允许第三方的.因为每一次操作之前有刷版本,手机多了用手打开就太费事了.希望能够找到怎么用ADB命令打开"未知来源",然后写成脚本. ============解决方案1============ 把脚本放刷机包里自动运行啊,或者电脑用adb install安装应用

android SDK adb命令入门学习

[基本介绍] 在学习android过程中,经常需要用到adb命令.ADB全称Android Debug Bridge,是android sdk里的一个工具, ADB是一个"客户端-服务器端"程序,其中客户端就是操作的的电脑,服务器端是android设备,包括实体机器戒者虚拟机.用这个命令可以直接操作管理android模拟器或者真实的andriod设备 它的主要功能有: *运行设备的shell(命令行) * 管理模拟器戒设备的端口映射 * 计算机和设备之间上传/下载文件 * 将本地apk

Android 中查看内存的使用情况集常用adb命令

1. 在IDE中查看Log信息 当程序运行垃圾回收的时候,会打印一条Log信息,其格式如下: D/dalvikvm: <GC_Reason> <Amount_freed>, <Heap_stats>, <External_memory_stats>, <Pause_time> GC_Reason表示导致垃圾回收的原因以及当前的回收类型,包括以下几类: GC_CONCURRENT:当堆中对象数量达到一定是触发的垃圾收集 GC_FOR_MALLOC:

赵雅智_android使用adb命令详解附图

adb是一个客户端-服务器端程序,其中客户端是你用来操作的电脑,服务器端是android设备 我们除了用可视化窗口中操作也可以采用cmd命令行进行操作. 在开始菜单的搜索栏中输入cmd打开命令行 在本地找到adb.exe路径(如图1.1),把adb.exe拖到cmd命令行敲击回车显示所有可操作帮助示例(如图1.2). 图1.1 adb.exe路径 图1.2 adb命令示例 如果不输入adb的正确路径就不能进行正常显示,如图1.3: 图1.3adb未能正确打开 为了保证adb在任何路径下都能使用,

adb命令-连接不上手机

adb命令,连接手机状态不对 解决方法:电脑连接手机的usb调试确认信息没有勾选确认 注:网上有说是360手机助手,实验一下该方法没有成功.

android中adb命令大全

adb 常用命令大全 1. 显示系统中全部Android平台:   android list targets 2. 显示系统中全部AVD(模拟器):   android list avd 3. 创建AVD(模拟器):  android create avd --name 名称 --target 平台编号 4. 启动模拟器:   emulator -avd 名称 -sdcard ~/名称.img (-skin 1280x800) 5. 删除AVD(模拟器): android delete avd