android adb

学习参考参考 Adb
adb 其实就是 Android Debug Bridge, Android 调试桥的缩写,是安卓sdk的一个工具,adb工具在<sdk>/platform-tools/目录下;

adb devices

打印出设备列表


image.png

连接设备拥有如下几种状态:

offline 未连接到adb或者无响应
device 已连接到adb上
no device 没有连接着的模拟器或设备

对于adb只能同时对一个设备执行命令,因此当设备数量超过1时,需要选择执行命令的设备。
选择设备有如下几个参数:

-d 如果有多个模拟器和一个usb设备,就使用-d;
-e 如果有多个usb设备和一个模拟器,就使用-e;
-s <serialNumber> 通过指定的序列号对指定的设备或模拟器执行一条命令,这是指定设备更通用的方式;

adb push/pull 数据的拷贝和推送

参数应用:

-p 显示传输进度
-a 拷贝时保留时间戳和模式,相当于linux命令cp的-p参数

从设备复制文件

adb pull remote local

将文件复制到设备

adb push local remote

apk的安装与卸载

安装apk

adb install <.apk完成路径>

安装多个apk到手机

adb install-multiple <.apk完成路径...>

一些特殊场合的apk安装参数:

-l 指禁止将文件移动到手机设备以外的位置;
-r 指覆盖安装APP并保留旧数据;
-t 指先测试安装一下;
-s 指安装进SD卡中;
-d 指允许版本代码降级;
-g 允许所有运行权限;

安装时的常见错误

INSTALL_FAILED_UNKNOWN_SOURCES
未知来源处于勾选状态
INSTALL_FAILED_INVALID_URI apk
名字不能是中文的
INSTALL_FAILED_ALREADY_EXISTS
已安装,需要用-r替换安装
INSTALL_FAILED_INSUFFICIENT_STORAGE
空间不足

卸载apk

adb uninstall <package>
adb uninstall [-k] <package>(保留数据和缓存目录)

adb logcat

导出系统命令,包括error的堆栈和log类打出的日志
adb logcat [<option>] ... [<filter-spec>] ...

adb服务的管理

adb start-server
adb kill-server

adb远程操作

设备目标设备监听TCP/IP连接,默认端口为5555,执行命令:

adb tcpip 5555

命令返回:
restarting in TCP mode port: 5555

获取安卓设备的ip地址后,执行以下命令:

获取安卓设备ip地址的方式在设置->关于手机->状态信息->ip

adb connect <device-ip-address>

断开链接

disconnect [<host>[:<port>]]
若有特殊情况无法连接设备,可以试试adb kill-server,重启并重新操作.

设置端口转发

可以使用 forward 命令设置任意端口转发 — 将对特定主机端口的请求转发到模拟器/设备实例上的其他端口.

adb forward tcp:6100 tcp:7100

adb shell

运行shell命令的两种方式

  • 每次执行一个单独的shell命令,然后退出shell;

adb [-d|-e|-s <serialNumber>] shell <shell_command>

  • 先进入shell,再在shell中执行命令;

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

am

利用它可以启动一个app,但需要知道包名和活动名:

am start -n 包(package)名/包名.活动(activity)名称

还有种方式就是利用Action的方式启动

adb shell am start -a android.intent.action.VIEW [指定页面的scheme]

参数:

-n 直接启动组件
-a 启动前执行的action
-W:等待启动完成
-R [count]:重复 Activity 启动 count 次数。在每次重复前,将完成顶部 Activity
-S:启动 Activity 前强行停止目标应用
--user user_id | current:指定要作为哪个用户运行;如果未指定,则作为当前用户运行
--opengl-trace:启用 OpenGL 函数的跟踪
-P file:类似于 --start-profiler,但当应用进入空闲状态时分析停止

介绍一个间接的方法:

monkey -p app.greyshirts.sslcapture -c android.intent.category.LAUNCHER 1

pm 包管理器

列出设备中所有包的名称和路径;

pm list packages [-f]

列出指定包名的apk路径:

pm path com.qihoo.map360.auto

查看设备ip
比如无线连接需要查看手机ip,可以直接使用命令:

ifconfig wlan0

dumpsys相关

输出系统信息,如window, activity, task/back stack信息.

activity:输出app组件相关信息,还可以用细分参数获得单项内容(adb shell dumpsys activity activities来获取activity task/back stack信息).

dumpsys window |grep mCurrentFocus
获取当前栈顶activity

alarm:输出当前系统的alarm信息
cpuinfo:输出当前的CPU使用情况
diskstats:输出当前的磁盘使用状态
batterystats:电池使用信息
package:package相关信息, 相当于pm功能的集合 输出诸如libs, features, packages等信息
meminfo:输出每个App的内存使用和系统内存状态,可以指定包名
例如adb shell dumpsys meminfo com.anly.githubapp

window:输出当前窗口相关信息,policy, animator, tokens, windows

获取当前界面的UI信息,可以用:

adb shell dumpsys activity top

要获取当前界面的Activity:

adb shell dumpsys activity top | grep ACTIVITY
adb shell dumpsys window | grep mCurrentFocus

截屏与录屏

截屏

screencap filename

拿到截屏的文件

进入到shell界面
screencap /sdcard/screen.png
exit
adb pull /sdcard/screen.png

录屏

screenrecord [options] filename
拿到录屏文件
进入shell界面
screenrecord --verbose /sdcard/demo.mp4
(press Control + C to stop)
exit
adb pull /sdcard/demo.mp4

关于录屏时候的参数

--help 显示命令语法和选项
--size widthxheight 设置视频大小:1280x720,默认值是设备的原生显示分辨率(如果支持),如果不支持,则使用 1280x720
--bit-rate rate 设置视频的视频比特率(以兆比特每秒为单位)。默认值为 4Mbps(screenrecord --bit-rate 6000000 /sdcard/demo.mp4)
--time-limit time 设置最大录制时长(s)默认值和最大值均为180s。
--rotate 将输出旋转 90 度。此功能是实验性的。
--verbose 显示命令行屏幕上的日志信息。如果您不设置此选项,则运行时此实用程序不会显示任何信息。

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

推荐阅读更多精彩内容

  • 又到重阳九月九,择段时令宜踏秋, 老父务工今日回,本想早归酌小酒, 怎奈公事总缠身,不知何时是个头, 都说无官一身...
    金陵君阅读 174评论 0 0
  • 目的地:太平山、天际100观景台、维多利亚港(星光大道) 上午太平山: 深圳湾——维港——坐天星小轮到中环——天际...
    Be_a_Geek阅读 227评论 0 0
  • 今天继续发布第四篇原创文件:关于创业的一些思考。 同步开通赞赏功能,自己用两个小号做了一下赞赏测试。 在赞赏中,赞...
    坤哥_6faf阅读 187评论 0 0
  • 美奈 简单的幸福 越南有绵长的黄金海岸,从北向南整个东部海岸线都浸在南海的臂弯里,从世界遗产下龙湾开始,到中部的岘...
    蔓延022阅读 336评论 2 1