adb常用命令

  • 什么是ADB
    Android Debug Bridge,我们一般简称为adb,主要存放在sdk安装目录下的platform-tools文件夹中,它是一个非常强大的命令行工具,通过这个工具你能够与你的android设备进行交互。同时这是一个包含了以下三部分的cs模式的程序:

  • adb client
    client运行在PC端,当我们发起一个adb命令时,会开启一个client程序。当我们开启DDMS或者ADT的时候,也会创建client。所以当你打开Eclipse时,进入DDMS或者ADT视图,你再cmd下输入adb devices,会发现有emulator。
    当我们开启一个client是,它首先检测后台是否已经有一个server程序在运行,如果没有,则开启一个adb-server进程。
    所有的client都是通过5037端口与adb-server进行通信。

  • adb daemon
    daemon是作为一个后台进程运行在模拟器/真实Android设备中。
    daemon使用端口的范围是5554-5585,每个模拟器/设备连接到PC,总会开启一个后台进程,并且为其分配两个连续的端口,比如:
    emulator 1,console:5554
    emulator 1,adb:5555
    正因为每个设备都分一组(两个)端口,所以adb连接手机的最大数量是16.
    在这两个端口中,偶数端口是用于server与设备进行交互,可以让server直接从设备中读取数据,而奇数端口是原来与设备的adbd进行连接通信。

  • adb server
    server作为后台运行在PC端,负责管理client进程以及adb daemon之间的通信。
    当server开启的时候,它会自动绑定并且监听5037端口,接收client通过该端口发送过来的命令。同时server还会对5555-5585间的奇数端口进行扫描,进行对已连接设备的定位。

  • 官网文档
    The server then sets up connections to all running emulator/device instances. It locates emulator/device instances by scanning odd-numbered ports in the range 5555 to 5585, the range used by emulators/devices. Where the server finds an adb daemon, it sets up a connection to that port. Note that each emulator/device instance acquires a pair of sequential ports — an even-numbered port for console connections and an odd-numbered port for adb connections. For example:
    Emulator 1, console: 5554
    Emulator 1, adb: 5555
    Emulator 2, console: 5556
    Emulator 2, adb: 5557
    and so on...
    As shown, the emulator instance connected to adb on port 5555 is the same as the instance whose console listens on port 5554.

常用adb命令

首先介绍adb命令格式

adb [-d|-e|-s <serialNumber>] <command>

adb是必须的,接下来方括号[]里面的内容不是必须的,最后才是我们需要执行的命令操作
下面先介绍下,前面几个参数的含义吧:

-d: 让唯一连接到该PC端的真实安卓设备执行命令,如果发现USB中连接有多部设备,将会报错
-e: 让唯一连接到该PC端的模拟器执行命令,如果发现开启了多个模拟器,将会报错
-s:通过设备的序列号进行指定设备执行命令

如果设备只连接有一个设备或者一个模拟器的时候,可以不用声明这三个参数,adb默认会让这部唯一连接到的设备进行命令执行。

  • 查看连接的设备
adb devices

其实执行该命令,可能返回的状态有三种:
device 设备已经成功连接到了adb-server
offline 设备并没有连接到adb或者没有响应
no device 并没有设备/模拟器连接

  • 查看adb版本
adb version
  • 安装
adb -s <serialNumber> install <path-to-apk>
eg:
adb -s 99eb07a9 install D://Test.apk

此外,还有另一个命令:

adb -s <serialNumber> shell pm install [options] <PATH>

其中[options]中最常用的选项是-r,代表着本次安装是重新安装,会保留用户数据。
pm是package manager的意思。

  • 卸载
adb -s <serialNumber> uninstall <pkg_name>
eg:
adb -s 99eb07a9 uninstall cn.uc.test

此外,还有另一个命令:

adb -s <serialNumber> uninstall [options] <PACKAGE>

这里的options是-k,加上该参数表明卸载软件后依旧保留用户数据

  • 将数据从设备复制到PC中
adb -s <serialNumber>pull <remote> <local>
eg:
adb -s 99eb07a9 pull /sdcard/stericson-ls D://
  • 将数据从PC复制到设备
adb -s <serialNumber>push <local> <remote>
eg:
adb -s 99eb07a9 push d://stericson-ls /sdcard/
  • 获取连接到手机的序列号
adb get-serialno
  • 获取设备的连接状态
adb -s <serialNumber> get-state
eg:
adb -s 99eb07a9 get-stat
  • 等待设备连接成功
adb wait-for-device
  • adb-server的开启与关闭
adb kill-server
adb start-server

adb kill-server 这个命令会把所有的模拟器杀掉。然后可以重新adb devices查看真机。
有时候我们开启server会失败,这是因为我们装了的手机助手,豌豆荚或者其他软件自带有自己的adb,导致端口冲突开启失败。主要关掉那些软件并且杀掉那些软件自带的adb进程重来即可。

shell命令

Android的内核本身就是Linux,所以Android本身也支持Linux命令,但是因为是手机系统,所以进行了一定的删减,部分命令不支持,而不支持的部分,我们可以通过安装busybox这个软件进行填补。
执行shell命令的两种方式:

  • 每次都加上adb shell进行命令的发送和执行
adb shell <command>
  • 先通过adb shell进入手机shell状态,然后输入linux命令如图:

Activity Manager常用命令和参数说明

这里有一篇文章写得不错
am全称Activity Manager,你能使用am去模拟各种系统的行为,例如去启动一个activity,强制停止进程,发送广播进程,修改设备屏幕属性等等。当你在adb shell命令下执行am命令:am <command>
你也可以在adb shell前执行am命令:adb shell am start -a android.intent.action.VIEW

  • 关于一些am命令的介绍:
    start [options] <INTENT> :启动activity通过指定的intent参数。具体intent参数参照官方表。
    startservice [options] <INTENT> : 启动service通过指定的intent参数。具体intent跟start命令参数相同。
    force-stop <PACKAGE> : 强制停止指定的package包应用。
    kill [options] <PACKAGE> :杀死指定package包应用进程,该命令在安全模式下杀死进程,不影响用户体验。参数选项:–user <USER_ID> | all | current: 指定user进程杀死,如果不指定默认为所有users。(关于USER_ID下面会介绍到)
    kill-all :杀死所有的后台进程。
    broadcast [options] <INTENT> :发送一个intent。具体intent参数参照start命令参数。参数选项:–user <USER_ID> | all | current: 指定user进程杀死,如果不指定默认为所有users。
    instrument [options] <COMPONENT> :测试命令,不多作介绍。
    profile start <PROCESS> <FILE> :在进程中运行profile,分析结果写到里。
    profile stop <PROCESS> :停止profile。
    set-debug-app [options] <PACKAGE> :设置package包应用为debug模式。参数选项:-w|–persistent:等待进入调试模式,保留值。
    clear-debug-app :清空之前用set-debug-app命令设置的package包应用。

  • 以下命令查看官网:

monitor [options]
screen-compat [on|off] <PACKAGE>
display-size [reset|<WxH>]
display-density <dpi>
to-uri <INTENT>
to-intent-uri <INTENT>

Package Manager常用命令与参数说明

  • 禁用apk
disable <PACKAGE_OR_COMPONENT>
其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobile
eg:
adb shell su disable com.UCMobile/.main.UCMobile

我们在手机上发现,UC浏览器的图标不见了

  • 恢复apk
enable <PACKAGE_OR_COMPONENT>
其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobile
eg:
adb shell su enable com.UCMobile/.main.UCMobile

时我们从手机上发现,UC浏览器的图标又回来啦。

  • 查看apk路径
pm path <Package>
eg:
adb shell pm path com.UCMobile
  • 查看手机中所有包
pm list packages

list packages [options] <FILTER>:打印所有包,选择性的查询包列表。
参数选项:-f:查看关联文件,即应用apk的位置跟对应的包名(如package:/system/app/MusicPlayer.apk=com.sec.android.app.music);
-d:查看disabled packages;
-e:查看enable package;
-s:查看系统package;
-3:查看第三方package;
-i:查看package的对应安装者(如:1、package:com.tencent.qqmusic installer=null 2、package:com.tencent.qqpim installer=com.android.vending);
-u:查看曾被卸载过的package。(卸载后又重新安装依然会被列入);
–user<USER_ID>:The user space to query。

  • 其他
list permission-groups :打印所有已知的权限群组。
list permissions [options] <GROUP> :选择性的打印权限。参数选项:
list features :设备特性。硬件之类的性能。
list libraries :当前设备支持的libs。
list users :系统上所有的users。(上面提到的USER_ID查询方式,如:UserInfo{0:Primary:3}那么USER_ID为0)
path <PACKAGE> :查询package的安装位置。
install [options] <PATH> :安装命令。
uninstall [options] <PACKAGE> :卸载命令。
clear <PACKAGE> :对指定的package删除所有数据。
enable <PACKAGE_OR_COMPONENT> :使package或component可用。(如:pm enable "package/class")
disable <PACKAGE_OR_COMPONENT> :使package或component不可用。(如:pm disable "package/class")(disable了指定的package,但是getComponentEnabledSetting该package里的components依然是enable状态的。disable-user一样原理。)
disable-user [options] <PACKAGE_OR_COMPONENT> :参数选项:–user <USER_ID>: The user to disable.
grant <PACKAGE_PERMISSION> :授权给应用。
revoke <PACKAGE_PERMISSION> :撤销权限。
set-install-location <LOCATION> :设置默认的安装位置。其中
0:让系统自动选择最佳的安装位置。
1:安装到内部的设备存储空间。
2:安装到外部的设备存储空间。(这只用于调试应用程序,使用该命令可能导致应用程序退出或者其他不适的后果)。
get-install-location :返回当前的安装位置。返回结果同上参数选项。
set-permission-enforced <PERMISSION> [true|false] :使指定权限生效或者失效。
create-user <USER_NAME> :增加一个新的USER。
remove-user <USER_ID> :删除一个USER。
get-max-users :该设备所支持的最大USER数。(某些设备不支持该命令)

其他常用adb命令

  • 屏幕录像
adb shell screenrecord /sdcard/demo.mp4
  • 关闭设备&开启设备
adb shell stop
adb shell start
  • 设备关机&重启
adb reboot
adb shutdown

posted on 2016-05-25 15:53  XD大侠  阅读(440)  评论(0编辑  收藏  举报

导航