深入认识adb工具

前言

官方文档

本篇文章是对官方文档的理解和总结,大部分内容来自官方文档。

adb即Android 调试桥,是一个通用命令行工具,其允许我们与模拟器实例或连接的 Android 设备进行通信。

和Git、MySQL等一样,adb也有图形化工具,给我们更友好的交互体验。

但不管是Android Studio开发环境还是豌豆荚等工具,实质都是用的adb命令和设备通信。

因此,真正去了解adb是什么,如何使用,有利于我们更好地去发挥它的作用和解决问题。

你可能也会发现,它很有趣~

adb的组成

adb工具位于android_sdk目录/platform-tools/,作为一个客户端-服务器程序,它包括三个组件:

客户端,该组件发送命令。客户端在开发计算机上运行。您可以通过发出 adb 命令从命令行终端调用客户端。

后台程序,该组件在设备上运行命令。后台程序在每个模拟器或设备实例上作为后台进程运行。

服务器,该组件管理客户端和后台程序之间的通信。服务器在开发计算机上作为后台进程运行。

启动一个 adb 客户端时,此客户端首先检查是否有已运行的 adb 服务器进程。如果没有,它将启动服务器进程。

当服务器启动时,它与本地 TCP 端口 5037 绑定,之后所有 adb 客户端均通过该端口 与 adb 服务器通信。

然后,服务器设置与所有运行的模拟器/设备实例的连接。

它通过扫描 5555 到 5585 之间(模拟器/设备使用的范围)的奇数号端口查找模拟器/设备实例。

服务器一旦发现 adb 后台程序,它将设置与该端口的连接。

请注意,每个模拟器/设备实例将获取一对按顺序排列的端口:

用于控制台连接的***偶数***号端口

用于 adb 连接的***奇数***号端口。例如:

模拟器 1,控制台:5554

模拟器 1,adb:5555

模拟器 2,控制台:5556

模拟器 2,adb:5557

以此类推…

如上所示,在端口 5555 与 adb 连接的模拟器实例与侦听端口 5554 的控制台的实例相同。

常用的命令(更多命令可以自行探索~):

停止adb服务器
adb kill-server
之后使用任一adb命令会重启adb服务器
查看设备
adb devices
输出:
List of devices attached
[* daemon not running. starting it now on port 5037 *]
[* daemon started successfully *]
serial_number state
将命令发送至特定设备
adb -s serial_number command 
选定目标设备
-d 将 adb 命令发送至唯一连接的 USB 设备
-e 将 adb 命令发送至唯一运行的模拟器实例
-s 将 adb 命令发送至该序列号表示的设备实例
安装app
adb install apk_path
安装选项
-r 替换设备上已有的APP
-d 允许降版本安装
-t 允许安装测试包
-g 授予所有运行时权限
-s 安装在sd卡上
-l 安装具有转发锁定功能的软件包。
卸载app
adb uninstall [-k] 包名
 -k 保留缓存
重启设备
adb reboot
Wifi连接设备
//设置目标设备以侦听端口 5555 上的 TCP/IP 连接
adb tcpip 5555
//连接到设备的ip地址
adb connect device_ip_address
将文件复制到设备
adb push local remote
如:
adb push foo.txt /sdcard/foo.txt
从设备复制文件
adb pull remote local

shell命令

在目标设备中发出 shell 命令,然后退出远程 shell
adb [-d|-e|-s serial_number] shell shell_command
在目标设备中启动远程 shell
 adb [-d|-e|-s serial_number] shell
 以下shell命令按此示例
离开shell环境
 exit
调用 Activity Manager (am)
//示例:启动Activity
 am start -n com.example.app/.ExampleActivity
 //启动Activity
 am start [options] intent
 //启动Service
 am startservice [options] intent
 //启动广播
 am broadcast [options] intent
//强制关闭APP
 am force-stop package
 [options]:
 -a action
 -c category
 -d data_uri
 -t mime_type
 -n component (指定带有软件包名称前缀的组件名称以创建显式 intent)
调用软件包管理器 (pm)
//列出所有软件包
pm list packages [包含的文本]
//列出所有测试包
pm list instrumentation
//列出系统所有功能
pm list features
//列出设备支持的所有库
pm list libraries
//列出设备上的所有用户
pm list users
//输出给定 package 的 APK 的路径
pm path package
//安装app
pm install [options] path
//卸载app
pm uninstall [options] package
//删除与软件包关联的所有数据
pm clear package
截屏
screencap /sdcard/screen.png
//将图片复制到电脑
adb pull /sdcard/screen.png
录制视频
screenrecord [options] /sdcard/demo.mp4
[options]:
--size widthxheight
--bit-rate rate 默认值为 4Mbps(4000000)
--time-limit time 设置最大录制时长(以秒为单位)。默认值和最大值均为 180(3 分钟)
--rotate 将输出旋转 90 度。此功能是实验性的
--verbose 显示命令行屏幕上的日志信息
删除文件
rm file_path
删除整个文件夹
rm -r dir_path
cat /data/misc/wifi/*.conf
设备型号
getprop ro.product.model
查看android版本
getprop ro.build.version.release
屏幕分辨率
wm size
屏幕密度
wm density
电池情况
dumpsys battery

adb shell cat /sys/class/power_supply/bms/uevent
input 交互
//输入文本到设备上处于焦点的文本框
shell input text hello
其他输入input查看
Monkey压力测试(官方文档)
adb shell monkey -p your.package.name -v 500
查看手机cpu架构
adb shell cat /proc/cpuinfo
查看Activity返回栈
adb shell dumpsys activity activities
查看属性
adb shell getprop | grep log
设置属性-某个tag日志的打印级别
adb shell setprop log.tag.<your-tag> v	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值