前言
adb原生的命令行工具,默认使用端口为5037,在安装目录SDKplatform-tools下可以找到它。
主要分三部分
1.运行在PC端的client,可以通过它对Android应用进行安装、卸载和调试
2.运行在PC端的service,管理客户端到Android设备上的adb后台进程的连接。
3.运行在android设备上的adb后台进程,通过adb shell ps|findstr adbd可以找到它。
常用的指令
1.adb kill-server 结束adb服务
adb start-server 启动adb服务
adb kill-server && adb start-server
2.adb devices 获取设备列表
3.adb get-state 获取设备状态
4.安装应用
adb install 选项 filepath
- -r 覆盖安装
- -d 降级安装
- -s 安装在SDcard
- -l 安装到保护目录/mnt/asec
- -g 授予所有运行时的权限
- -t:允许安装 AndroidManifest.xml 里 application 指定 android:testOnly=“true” 的应用
5.push和pull
复制文件/夹到手机中
adb push resource_file target_path
复制手机中的文件/夹到本地
adb pull resource_file target_path
logcat
1.命令行选项,复制自官网文档
选项 | 说明 |
---|---|
-b <buffer> |
加载可供查看的备用日志缓冲区,例如 events 或 radio 。默认使用 main 、system 和 crash 缓冲区集。请参阅查看备用日志缓冲区。 |
-c, --clear |
清除(清空)所选的缓冲区并退出。默认缓冲区集为 main 、system 和 crash 。要清除所有缓冲区,请使用 -b all -c 。 |
-e <expr>, --regex=<expr> |
只输出日志消息与 <expr> 匹配的行,其中 <expr> 是一个正则表达式。 |
-m <count>, --max-count=<count> |
输出 <count> 行后退出。这样是为了与 --regex 配对,但可以独立运行。 |
--print |
与 --regex 和 --max-count 配对,使内容绕过正则表达式过滤器,但仍能够在获得适当数量的匹配时停止。 |
-d |
将日志转储到屏幕并退出。 |
-f <filename> |
将日志消息输出写入 <filename> 。默认值为 stdout 。 |
-g, --buffer-size |
输出指定日志缓冲区的大小并退出。 |
-n <count> |
将轮替日志的数量上限设置为 <count> 。默认值为 4。需要使用 -r 选项。 |
-r <kbytes> |
每输出 <kbytes> 时轮替日志文件。默认值为 16。需要使用 -f 选项。 |
-s |
相当于过滤器表达式 '*:S' ;它将所有标记的优先级设为“静默”,并用于放在可添加内容的过滤器表达式列表之前。要了解详情,请转到有关过滤日志输出的部分。 |
-v <format> |
设置日志消息的输出格式。默认格式为 threadtime 。有关支持的格式列表,请参阅介绍控制日志输出格式的部分。 |
-D, --dividers |
输出各个日志缓冲区之间的分隔线。 |
-c |
清空(清除)整个日志并退出。 |
-t <count> |
仅输出最新的行数。此选项包括 -d 功能。 |
-t '<time>' |
输出自指定时间以来的最新行。此选项包括 -d 功能。如需了解如何引用带有嵌入空格的参数,请参阅 -P 选项。
adb logcat -t '01-26 20:52:41.820' |
-T <count> |
输出自指定时间以来的最新行数。此选项不包括 -d 功能。 |
-T '<time>' |
输出自指定时间以来的最新行。此选项不包括 -d 功能。如需了解如何引用带有嵌入空格的参数,请参阅 -P 选项。
adb logcat -t '01-26 20:52:41.820' |
-L, -last |
在最后一次重新启动之前转储日志。 |
-B, --binary |
以二进制文件形式输出日志。 |
-S, --statistics |
在输出中包含统计信息,以帮助您识别和定位日志垃圾信息发送者。 |
-G <size> |
设置日志环形缓冲区的大小。可以在结尾处添加 K 或 M ,以指示单位为千字节或兆字节。 |
-p, --prune |
输出(读取)当前的白名单和黑名单,不采用任何参数,如下所示:
adb logcat -p |
-P '<list> ...' |
写入(设置)白名单和黑名单,以出于特定目的调整日志记录内容。您可以提供 <white> 和 ~<black> 列表条目的混合内容,其中 <white> 或 <black> 可以是 UID、UID/PID 或 /PID。 在 Logcat 统计信息 (logcat -S ) 的指导下,您可以考虑出于各种目的调整白名单和黑名单,例如:
默认情况下,日志记录系统会自动以动态方式将日志统计信息中最严重的违规内容列入黑名单,以便为新的日志消息腾出空间。一旦它用尽启发法,系统便会删除最旧的条目,以便为新消息腾出空间。 添加白名单可保护您的 Android 识别码 (AID),它会变成进程的 AID 和 GID,而不会被声明为违规内容;添加黑名单有助于在相应内容被视为最严重的违规内容之前即释放空间。 您可以选择删除内容的程度和频率;也可以关闭删除功能,这样,系统便仅会移除各个日志缓冲区中最旧条目的内容。 引号
$ adb logcat -P '"<white_and_blacklist>"' or adb shell $ logcat -P '<white_and_blacklist>' 以下示例指定了一个包含 PID 32676 和 UID 675 的白名单和一个包含 PID 32677 和 UID 897 的黑名单。黑名单中的 PID 32677 经过加权处理,以便可以更快删除。 adb logcat -P '"/32676 675 ~/32677 897"' 其他您可以使用的黑名单和白名单命令变体如下所示: ~! worst uid blacklist ~1000/! worst pid in system (1000) |
--pid=<pid> ... |
仅输出来自给定 PID 的日志。 |
--wrap |
休眠 2 小时或者当缓冲区即将封装时(两者取其先)。通过提供即将封装唤醒来提高轮询的效率。 |
2.日志级别
- V:最低级别,输出最详细的日志信息
- D:调试信息
- I:信息
- W:warning
- E:错误
- F:严重错误,
- S:什么也不输出
eg.adb logcat -v time 分别是日志级别/tag
可以通过过滤器tag:priority输出指定的日志内容,一条指令可以指定多个过滤器,用空格隔开
eg.adb logcat ActivityManager:I MyApp:D *:S 只输出标记为ActivityManager的信息和MyApp的调试信息。*s将所有标记的优先级设为静默,从而确保系统仅显示标记为ActivityManager和MyApp的日志消息。
3.日志输出格式
-v <选项>指定日志输出格式,只能指定一种输出格式
- brif:显示优先级、标记以及发出信息的进程PID
- long:显示所有元数据字段,并使用空白行分隔消息
- process:仅显示PID
- raw:显示不包含其他数据字段的原始日志消息
- tag:仅显示优先级和标记
- thread:旧版格式,显示优先级、PID、以及发出消息的线程TID
- threadtime:默认值,显示日期、调用时间、优先级、标记、PID以及发出消息的线程TIP
- time:日期、调用时间、优先级、标记以及发出消息的进程PID
4.日志缓冲区
Android 日志系统为日志消息保留了多个环形缓冲区,并非所有的日志信息都会到默认的缓冲区,可以查看指定缓冲区。
-b +<选项> 可以指定查看多个缓冲区的日志,用空格隔开
- radio:查看包含无线装置/电话相关消息的缓冲区
- events:查看已经解译的二进制系统事件缓冲区消息
- main:主日志缓冲区,默认值,不包含系统和崩溃日志消息
- system:系统日志 默认
- crash:查看崩溃日志缓冲区
- all:查看所有
- default:报告main、system和crash缓冲区
5.常用指令
- adb logcat>filepath 输出日志到路径patch下
- adb logcat|findstr ** 过滤输出含有***的日志
- adb logcat -c 清除屏幕上的日志记录
- adb logcat -c && adb logcat -s ActivityManager|findstr "Dispalyed" 客户端启动时间获取 -s相当于 *:S
难点:缓冲区的理解
shell命令
前面的adb指令是adb程序中的指令,shell指令是指android系统中的指令
pm包管理
pm list package 列出安装在设备上的应用
- adb shell pm list package(列出全部)
- adb shell pm list package –s (列出系统应用)
- adb shell pm list package –3(列出第三方应用)
- adb shell pm list package –f(列出应用包名及对应的apk名及存放位置)
- adb shell pm list package –i(命令最后增加过滤关键字 eg.adb shell pm list package -i com.tencent.mm)
- adb shell path -packagename (列出对应包名的 .apk 位置)
- adb shell dump packageName 列出指定应用的dump信息
- adb shell pm install apk_path 此时apk保存在手机中
- adb shell pm uninstall packageName 卸载应用
- adb shell pm clear packageName 清除指定apk的数据
am控制应用
adb shell
- am start -n packageName/activityName 启动应用
- am start -S packageName/activityName 先停止再启动应用
- am start -W packageName/activityName 等待应用启动完成启动
- am force-stop packageName 结束应用
- am startservice 启动一个服务
- am broadcast 发送一个广播
- am monitor 监控crash和anr
常用指令:
获取应用启动时间
adb shell am start -W -n packageName/activityName
input
- adb shell input keyevent 发送按键事件
- adb shell input text text 发送文本内容
- adb shell input swipe x0 y0 x1 y1 发送一个滑动事件
- adb shell input tab x y 发送一个点击事件