adb技能使用技巧

作为一名android开发的同学 , 还是测试开发者,adb命令都是工作中必备的技能,今天主要梳理一下adb的初级使用技能 。
adb是什么?,我们来看看Google官方给它的解释:
adb (android debug bridge) 是一个通用命令行工具,其允许你与模拟器实例或连接的 Android 设备进行通信 。它可为各种设备操作提供便利,如安装和调试应用 , 并提供对 Unix shell(可用来在模拟器或连接的设备上运行各种命令)的访问 。
adb是一个强大的命令行工具 , 我们通过它可以去操作我们的设备,adb的位置一般在android sdk的platform-tools目录下 。我们看看adb强大的命令 。

adb技能使用技巧

文章插图
图片来自网络
【adb技能使用技巧】1.adb devices
devices命令可以检测当前电脑上连接了那些设备,它的输出方式为
List of devices attached
serial_number state
serial_number :由adb创建的序列号 , 用来标示一个设备
state:状态号,它有三种状态
  • offline — 实例未连接到 adb 或不响应 。
  • device — 实例现在已连接到 adb 服务器 。请注意,此状态并不表示 Android 系统已完全启动且可以运行,因为在此实例连接到 adb 时系统仍在启动 。不过,在启动后 , 这将是模拟器/设备实例的正常运行状态 。
  • no device — 未连接模拟器/设备 。
例如:
adb技能使用技巧

文章插图
2.adb [-d|-e|-s serial_number] <子命令> 向特定的设备发送命令
如果只有一个设备或者模拟跟电脑相连,adb默认会将命令发送到该设备上 , 实际工作中我们的工作机上可能不止连接了一台设备,那如何向一台特定的设备发送命令呢
  • -d 将命令发送到真实的android设备上
  • -e 将命令发送到android的模拟器
  • -s 设备或者模拟器的序列号
3. install [options] path 安装应用:例如在一个手机上装一个apk,adb -d -s 39ad65 install test.apk
path:安装应用的绝对路径名称
[options]:可选项,已有以下几个:
  • -l:安装具有转发锁定功能的软件包 。
  • -r:重新安装现有应用,保留其数据 。
  • -t:允许安装测试 APK 。
  • -i installer_package_name:指定安装程序软件包名称 。
  • -s:在共享的大容量存储(如 sdcard)上安装软件包 。
  • -f:在内部系统内存上安装软件包 。
  • -d:允许版本代码降级 。
  • -g:授予应用清单文件中列出的所有权限 。
4 uninstall [options] package 卸载应用
默认卸载应用时删除应用缓存,options 可选参数为-K表示卸载应用后保留数据和缓存目录,卸载应用的时候指定应用包名即可 。
5.adb pull/adb push 命令
adb pull remote local 从设备或者模拟器复制文件到本地
adb push local remote 将文件复制到设备或者模拟器
local 和 remote 指的是开发计算机(本地)和模拟器/设备实例(远程)上目标文件/目录的路径 。例如:adb push test.txt /sdcard/test.txt
6.adb forward 端口转发命令
这个命令也是超级实用的一个命令,这个命令和其他工具配合实用,就可以是实现实时抓取android手机的网络请求数据
adb forward tcp:8888 tcp:9999 表示从当前主机的8888端口到设备的9999端口的转发
7.adb kill-server adb start-server
为啥这个两个命令放到一起说呢,因为一般它们都是配合实用的,这一对命令使用频率非常高,adb kill-server 杀掉adb进程,当我的手机连接到电脑上,发现adb启动不了,我们可以先用kill-server命令,再使用adb start-server命令来启动adb进程 。
二.adb shell 命令;
进入adb shell命令也非常简单 , 直接在指定的设备上执行adb shell即可
  1. pm命令
install [options] path 安装应用程序,pm install path 在root手机root情况下可以实现静默安装 , 
  • -l:安装具有转发锁定功能的软件包 。
  • -k:移除软件包后保留数据和缓存目录 。
  • -r:重新安装现有应用 , 保留其数据 。
  • -t:允许安装测试 APK 。
  • -i installer_package_name:指定安装程序软件包名称 。
  • -s:在共享的大容量存储(如 sdcard)上安装软件包 。
  • -f:在内部系统内存上安装软件包 。
  • -d:允许版本代码降级 。
  • -g:授予应用清单文件中列出的所有权限 。
uninstall [options] package 卸载一个应用
-k:移除软件包后保留数据和缓存目录
2.clear package 清除目标应用的所有数据
3. am start 命令 例如启动一个Activity
adb shell am start -n 包名/包名.类名
4. force-stop package
强行停止与 package(应用的包名称)关联的所有应用
5. kill [options] package
终止与 package(应用的包名称)关联的所有进程 。此命令仅终止可安全终止且不会影响用户体验的进程 。
  • –user user_id | all | current:指定将终止其进程的用户;如果未指定,则终止所有用户的进
6.ps 命令 获取进程信息
输出格式:
USER PID PPID VSIZE RSS WCHAN PC NAME
  • USER : 进程的当前用户;
  • PID : process ID的缩写,也就进程号;
  • PPID : process parent ID,父进程ID
  • VSIZE : virtual size , 进程虚拟地址空间大?。?
  • RSS : 进程正在使用的物理内存的大?。?
  • WCHAN : 进程如果处于休眠状态的话,在内核中的地址;
  • PC : program counter , 
  • NAME : process name,进程的名称
这些都是一些常用的adb命令 , 一些adb的高级使用方式和常见问题解决 , 将在下次分享出来 。