adb常用命令整理

一、概要

1.什么是ADB?

ADB(Android Debug Bridge)是Android SDK中的一个工具, 使用ADB可以直接操作管理Android模拟器或者真实的Andriod设备。adb是一个C/S架构的命令行工具,主要由3部分组成:

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

Eclipse 中的 ADT(虽然Eclipse已经不被Android开发者使用,但是为了理解还是拿出来说一下)、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后台进程

2.ADB的主要功能

(1)在Android设备上运行Shell(命令行)
(2)管理模拟器或设备的端口映射
(3)在计算机和设备之间上传/下载文件
(4)将电脑上的本地APK软件安装至Android模拟器或设备上

3.ADB工作原理

盗图一张

(1)当你启动一个adb Client(客户端),Client首先会选确认是否已有一个adb Server(服务器)进程在运行,如果没有,则会启动Server进程。此时,adb Server就会绑定本地的TCP端口5037,并监听adb Client发来的命令。

(2)接着,Server将会扫描所有5555到5585范围内的奇数端口来定位所有的模拟器或设备,并与之建立连接。一旦Server找到 了adb daemon(守护程序),它将建立一个到该端口的连接,这样,我们就可以使用adb命令控制和访问模拟器或设备了。在这里,需注意的是任何模拟器或设备实例会取得两个连续的端口:一个偶数端口用来相应控制台的连接,和一个奇数端口用来响应adb连接。

4.ADB使用

一般我们只要将adb.exe所在目录添加到系统的环境变量中,就可以在命令行中使用adb命令了。

二、ADB命令

我们将命令分为adb命令adb shell 命令Linux命令三种来介绍。

adb命令

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

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

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

 

下面我们介绍几个常见的命令:

  • adb devices : 获取设备列表及设备状态

  • adb get-state :获取设备的状态(注意这个命令只有有一个设备时才可以,有多个设备连接时会显示unknown)

设备的状态有 3 钟,device , offline , unknown
device:设备正常连接
offline:连接出现异常,设备无响应
unknown:没有连接设备

  • adb kill-server / adb start-server :结束服务和启动服务,通常两个命令一起用,来重启adb服务

  • adb logcat :打印Android的系统日志。输出内容比较多,最好重定位到一个文件

  • adb bugreport :打印dumpsys、dumpstate、logcat的输出,也是用于分析错误的

  • adb install :安装应用,覆盖安装使用-r选项

当apk已经安装过的时候,再次install就会报错,此时覆盖安装可以用-r

  • adb uninstall :卸载应用,后面的参数是应用的包名,而不是apk文件的名称。卸载保存数据和缓存目录时用 -k

  • adb push :推送本地文件至Android设备  例如,将本地E盘上的adb.log推送到sdcard目录下

我们可以看到在sdcard目录下已经有adb.log这个文件

  • adb pull :将Android设备上的文件或者文件夹复制到本地

这里我们将sdcard目录下的adb.log文件复制到本地E盘下,并重命名为rename.log。

注意:在执行adb pull和adb push两个命令的时候注意权限问题,当操作系统权限的目录下的文件时,需要root

  • adb root :获取root权限
  • adb remount:挂载文件系统为可读写状态
  • adb reboot:重启Android设备
  • adb forward:将宿主机上的某个端口重定向到设备的某个端口
  • adb connect:远程连接Android设备

adb shell命令

首先要区分一下adb 命令和adb shell 命令。简单讲,adb命令是adb这个程序中自带的一些命令,而adb shell命令则是调用的Android系统中的命令,这些命令都在Android设备的system/bin目录之下。

截取一部分system/bin目录下的内容,有没有很熟悉的,如am 、pm、dumpsys等等。

接下来介绍几个常用的adb shell命令

pm命令

Package Manager,可以用来获取到一些安装在Android设备上的应用信息。直接运行adb shell pm命令可以获取该 命令的帮助信息。

注意这个命令可以直接敲成 adb  shell  pm  list  package,也可以先敲adb shell 进入shell之后再敲pm  list  package

  • pm list package :列出安装在设备上的应用(只截一部分图)

另外还有带选项的

-s : pm  list  package  -s     列出系统应用

-3:pm  list  package  -3    列出第三方应用

-f: pm  list  package   -f    列出应用包名及对应apk名称及存放的位置(部分截图)

-i : pm  list  package  -i   列出应用包名及安装来源(部分截图)

还可以增加过滤关键字,查找自己想要的应用。如下,查找和联系人(contact)相关的应用

  • pm  path  <包名>   列出对应包名的.apk的位置

  • pm list instrumentation  列出含有单元测试case的应用后面可跟参数-f,同样也会列出apk名称和位置以及 [TARGET-PACKAGE]

  • pm  dump  <包名>  列出指定应用的dump信息
  • pm  install  安装应用

        目标apk存放于PC端,用adb install安装;

        目标apk存放于Android设备上,用pm install 命令安装

  • pm  uninstall  <包名>  卸载应用
  • pm  clear  清除应用数据
  • pm  set-install-location  ,pm  get-install-location  <包名> 设置应用安装位置,获取应用安装位置

         这里的位置分为三种:

                                            [0/auto]:默认为自动

                                            [1/internal]:默认为安装在手机内部

                                            [2/external]:默认安装在外部存储

am命令

Activity Manager,可以使用am命令去模拟各种系统行为

  • am  start  启动一个Activity 

另外还有几个带参数的例子

adb shell am start -S com.example.eventtest/.MainActivity   :先停止目标应用,再启动

adb shell am start -W com.example.eventtest/.MainActivity  :等待应用启动完成

adb shell am start -a android.intent.action.VIEW   -d  http://www.baidu.com   :启动浏览器打开一个指定的网页

adb shell am start -a android.intent.action.CALL -d tel:10086  :启动拨号器拨打10086

  • am instrument  :启动一个instrumentation,单元测试或者Robotium会用到
  • am monitor  :监控crash于ANR
  • am force-stop <包名>   :结束应用
  • am startservice  :启动一个服务
  • am broadcast  :发送一个广播

ps命令

Process status,查看进程状态的命令,该命令像是瞬间进程的状态

input命令

这个命令可以向Android设备发送按键事件

  • input text  :发送文本内容,不能发送中文。

  • input keyevent  :发送按键事件。模拟按下HOME键,源码里有定义public static final int KEYCODE_HOME = 3,因此可以将命令中的KEYCODE_HOME替换成3。

  • input  tap  :对屏幕发送一个触摸事件。触摸屏幕700 1000的位置

  • input swipe  :滑动事件。模拟从(500,500)的点滑到(500,1000)的点

如下就是在小距离内,较长事件内滑动,实际上就是长按的动作

 

screencap 命令

截图命令

adb  shell  screencap  -p  /sdcard/screen.png   :截屏并保存到sdcard目录下,命名为screen.png

scrernrecord 命令

4.4新增的录制命令

adb  shell  screenrecord  sdcard/record.mp4  :ctrl+c结束录制,录制结果将会保存在sdcard目录下

ime 命令

输入法命令

adb shell ime list -s  :列出设备上的输入法

adb shell ime set <上述某个输入法>  :选择输入法

wm 命令

adb shell wm size  :获取屏幕分辨率

monkey

请参考 Android Monkey 的用法

settings

Settings.java,请参考 探究下 Android4.2 中新增的 settings 命令

dumpsys

请参考 android 中 dumpsys 命令使用

log

在logcat 里面打印设定的信息

getprop

查看Android设备的参数信息。结果以key:value键值对形式显示。

引号

在PC端执行monkey命令,将信息保存至D盘monkey.log

adb  shell  monkey  -p  com.android.settings  5000  > d:\monkey.log

(这里-p的意思是指定的包,如果不指定包,Monkey将允许系统启动设备中的所有APP。5000是指5000个随机事件)

在PC端执行monkey命令,将信息保存到sdcard,写成

adb  shell  monkey  -p  com.android.settings 5000 > sdcard/monkey.log

会报"系统找不到指定的路径"的错,这里要加上引号

adb  shell  “monkey  -p  com.android.settings 5000 > sdcard/monkey.log”

Linux命令

  • cat

用来查看文件内容的命令。

1.cat  filename  : 一次显示整个文件

2.cat  >  filename  :从键盘创建一个文件,只能创建新文件,不能编辑已有的文件。编辑完成后Ctrl+D退出

3.cat  file1   file2  >  file  :合并已有文件为一个文件

  • cd

切换当前目录到指定的目录

  • chmod

设置文件权限的命令

  • cp

复制文件或目录的命令

  • grep

用于查找文件里符合条件的字符串

  • netstat

用于显示网络状态

  • rm

用于删除一个文件或者目录

  • rmdir

删除空的目录

这里不再过多讲述,附上一个Linux命令大全的链接

http://www.runoob.com/linux/linux-command-manual.html

 

参考文章

https://www.cnblogs.com/bravesnail/articles/5850335.html

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值