常用adb命令

查询设备

adb device
输出格式:序列号+状态
序列号:由adb创建的字符串,用于通过其控制台端口号唯一识别设备。
状态:offline:实例未连接到adb或不响应;device:实例已连接到adb服务器;no device:未连接设备

将命令发送至特定设备

db -s 序列号 command
如果有多个设备且只有一个设备是模拟器,使用-e选项将命令发送至该模拟器
如果有多个设备且只有一个设备是硬件设备,使用-d选项将命令发送至该硬件设备

安装应用

adb install path_to_apk

设置端口转发

forward命令设置任意端口转发:将对特定主机端口的请求转发到设备实例上的其他端口
例如:设置主机端口6100到设备端口7100的转发:adb forward tcp:6100 tcp:7100
设置传输到指定的抽象UNIX网域套接字的转发:adb forward tcp:6100 local:logd

主机与设备之间文件复制传输

pull和push命令可以将任意目录和文件复制到设备中的任意位置
adb pull remote local :从设备复制文件或目录
adb push local remote :将文件或目录复制到设备
local指主机上的目标文件/目录的路径
remote指设备上的目标文件/目录的路径

停止adb服务器

adb kill-server

启动adb服务器

adb start-server 检查adb服务器进程是否在运行,如果未运行则启动它

日志输出

adb logcat [option] [filter-specs]
option:
-s:设置输出日志的标签,只显示该标签的日志
Log.d("TAG","first test");
adb logcat -s TAG

指定logcat的日志输出格式:
将logcat日志输出到文件中,adb logcat > log
-v:设置日志的输出格式
"time"格式:查看日志的输出时间 adb logcat -v time
"brief"格式:默认的日志格式:"优先级/标签(进程ID):日志信息" adb logcat -v prief
"process"格式:"优先级(进程ID):日志信息" adb logcat -v process
"tag"格式:"优先级/标签:日志信息" adb logcat -v tag
"thread"格式:"优先级(进程ID:线程ID)标签:日志信息" adb logcat -v thread

adb logcat -c :清空日志缓存信息,重新开始输出日志信息

filter-specs
过滤项格式:<tag>[:priority],标签:日志等级,默认的日志过滤项是"*:I"
-- V : Verbose (明细);
-- D : Debug (调试);
-- I : Info (信息);
-- W : Warn (警告);
-- E : Error (错误);
-- F : Fatal (严重错误);
-- S : Silent(Super all output) (最高的优先级, 可能不会记载东西);

过滤指定等级日志:
adb logcat 10 *:E 命令, 显示最近10条 Error 以上级别的日志

过滤指定标签等级日志:
adb logcat 标签:D *:S 过滤该标签且优先级Debug等级以上的级别的日志 *:S,如果没有会输出错误

同时设置多个过滤器:
adb logcat 标签1:D 标签2:I *:S 输出标签1的Debug以上级别和标签2的Info以上级别的日志

使用管道过滤日志
过滤固定字符串:只要命令行出现的日志都可以过滤,不管是不是标签
adb logcat | grep Wifi
过滤字符串忽略大小写:adb logcat | grep -i wifi

adb get-serialno 输出adb实例序列号字符串
adb get-state 输出设备的adb在线状态
adb wait-for-device 阻止执行,直至设备处于在线状态 adb wait-for-device install app.apk

发出shell命令

使用shell命令通过adb发出设备命令,可以进入或不进入设备实例上的adb远程shell
要在不进入远程shell的情况下发出一个命令:adb shell shell_command
进入设备实例上的远程shell:adb shell
shell 命令二进制文件存储在模拟器或设备的文件系统中,其路径为 /system/bin/。

调用Activity Manager(am)

使用Activity Manager工具发出命令以执行各种系统操作,如启动Activity、强行停止进程、广播intent、修改设备屏幕属性及其他操作
am command
也可以直接从adb发出Activity Manager命令,无需进入远程shell
adb shell am start -a android.intent.action.VIEW

adb shell am start [options] intent :启动intent指定的Activity
options:
-D:启用调试。
-W:等待启动完成。
--start-profiler file:启动分析器并将结果发送到 file。
-P file:类似于 --start-profiler,但当应用进入空闲状态时分析停止。
-R count:重复 Activity 启动 count 次数。在每次重复前,将完成顶部 Activity。
-S:启动 Activity 前强行停止目标应用。
--opengl-trace:启用 OpenGL 函数的跟踪。
--user user_id | current:指定要作为哪个用户运行;如果未指定,则作为当前用户运行。

startservice [options] intent :启动intent指定的service
options:
--user user_id | current:指定要作为哪个用户运行;如果未指定,则作为当前用户运行。

force-stop package :强行停止与package关联的所有应用

kill [options] package :终止与 package(应用的包名称)关联的所有进程。此命令仅终止可安全终止且不会影响用户体验的进程。
选项包括:
--user user_id | all | current:指定将终止其进程的用户;如果未指定,则终止所有用户的进程。

kill-all:终止所有后台进程

broadcast [options] intent:发出广播 intent。
选项包括:
[--user user_id | all | current]:指定要发送到的用户;如果未指定,则发送到所有用户。

instrument [options] component :使用 Instrumentation 实例启动监控。通常,目标 component 是表单 test_package/runner_class

调用软件包管理器pm

pm command
adb shell pm command

list packages [options] filter:输出包名称包含filter中的文本的软件包
选项:
-f:查看它们的关联文件。
-d:进行过滤以仅显示已停用的软件包。
-e:进行过滤以仅显示已启用的软件包。
-s:进行过滤以仅显示系统软件包。
-3:进行过滤以仅显示第三方软件包。
-i:查看软件包的安装程序。
-u:也包括卸载的软件包。
--user user_id:要查询的用户空间。

list permission-groups 输出所有已知的权限组

list permissions [options] group
输出所有已知权限,或者,仅输出 group 中的权限。
选项:
-g:按组加以组织。
-f:输出所有信息。
-s:简短摘要。
-d:仅列出危险权限。
-u:仅列出用户将看到的权限。

list instrumentation [options]
列出所有测试软件包。
选项:
-f:列出用于测试软件包的 APK 文件。
target_package:列出仅用于此应用的测试软件包

install [options] path
将软件包(通过 path 指定)安装到系统。
选项:
-l:安装具有转发锁定功能的软件包。
-r:重新安装现有应用,保留其数据。
-t:允许安装测试 APK。
-i installer_package_name:指定安装程序软件包名称。
-s:在共享的大容量存储(如 sdcard)上安装软件包。
-f:在内部系统内存上安装软件包。
-d:允许版本代码降级。
-g:授予应用清单中列出的所有权限。

uninstall [options] package
从系统中移除软件包。
选项:
-k:移除软件包后保留数据和缓存目录。

clear package
删除与软件包关联的所有数据。

查看设备系统信息

adb shell getprop

获取系统版本:adb shell getprop ro.build.version.release

获取系统api版本:adb shell getprop ro.build.version.sdk

dumpsys

adb shell dumpsys [options]

options:

meminfo:显示内存信息;cpuinfo:显示CPU信息;account:显示accounts信息; activity:显示所有的activities的信息;window:显示键盘,窗口和它们的关系;wifi:显示wifi信息

查看当前的activity&Package信息

1、adb logcat | grep ActivityManager

04-03 10:46:56.343 1617 1617 I ActivityManager_activity: Resuming ActivityRecord{f7f8de token=android.os.BinderProxy@c2ac0e8 {com.android.settings/com.android.settings.Settings$SecurityAndPrivacySettingsActivity}} with isForward=true,forwardBitChanged=false onlyLocalRequest=false

2、adb shell dumpsys activity activities

  • TaskRecord{67b3f36 #11 A=com.android.settings U=0 StackId=1 sz=2}

    userId=0 effectiveUid=1000 mCallingUid=u0a59 mUserSetupComplete=true mCallingPackage=com.huawei.android.launcher
    
    affinity=com.android.settings
    
    intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.settings/.HWSettings}
    

cmp=com.android.settings/.HWSettings

com.android.settings是包名,HWSettings是当前活动的activity

屏幕截图

screencap filename
adb shell screencap /sdcard/screen.png

录制视频

screenrecord [options] filename
adb shell screenrecord /sdcard/demo.mp4

其他 shell 命令

所有可用shell程序的列表:adb shell ls /system/bin

参考:https://developer.android.com/studio/command-line/adb.html?hl=zh-cn

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容

  • adb devices 指令实例讲解 状态信息有3种状态: 1)device状态:表示设备或模拟器已经连接到adb...
    粥一样温柔阅读 1,091评论 0 1
  • 福利大放送 这是对好多adb命令行的总结,很实用,有些东西知道了之后就会特别酷炫: 内容 指定目标设备: 如果只有...
    Only凹凸曼阅读 2,510评论 1 6
  • 春风十里拂山岫,杨柳依依动轻柔, 桃花锦簇枝头闹,鸣泉飞溅石上流。 逢郎欲语低头笑,芙蓉香腮红酥手, 愿作比翼双飞...
    小毛和小猫阅读 196评论 0 1
  • 早读分享…… 2017年3月15日 星期四 我们都有缺点, 所以彼此包容一点。 我们都有优点, 所以彼此欣赏一点。...
    SYK晟芸康时尚健康馆阅读 198评论 0 1
  • 是盘古开天劈出来的痕迹 是女娲补天炼石的工场 还是古希腊诸神之战留下的战场 让上帝经过时也不禁惊叹 不小心掉落了手...
    猫猫葵阅读 818评论 0 2