adb 你对力量一无所知

adb 介绍

adb 其实就是 Android Debug Bridge, Android 调试桥的缩写,adb 是一个 C/S 架构的命令行工具,主要由 3 部分组成:

  • 运行在 PC 端的 Client : 可以通过它对 Android 应用进行安装、卸载及调试
  • 运行在 PC 端的 Service : 其管理客户端到 Android 设备上 adb 后台进程的连接
  • 运行在 Android 设备上的 adb 后台进程, 可以通过该指令查看该进程adb shell ps | grep adbd windows 请使用 findstr 替代 grep

注意:adb 使用的端口号,5037


adb 命令

adb 命令一般格式为:
adb [-e | -d | -s<设备序列号>]<子命令>

1.帮助

adb help

2.获取设备列表以及设备状态

adb devices

3.获取设备状态

adb get-state
adb -s 设备名称 get-state      // 多设备时,获取指定设备状态

设备状态有3种:

    * device: 设备正常连接
    * offline: 连接出现异常
    * unknown: 没有连接设备

4.结束/启动adb服务

adb kill-server     // 结束adb服务
adb start-server    // 启动adb服务

5.日志相关 (用于分析错误)

adb logcat         // 打印Android系统日志
adb bugreport      // 打印dumpsys、dumpstate、logcat的输出
adb bugreport > d:\bugreport.log     // 输出比较多,建议重定向到一个文件中

6.安装卸载apk

adb install         // 后面跟 apk文件名, 覆盖安装使用参数 -r
adb install 相对路径    // 如: adb install Desktop/app-debug.apk
adb -s 设备名称 install apk绝对路径     // 多个设备同时存在时,指定设备进行apk安装
adb -s 设备名称 install -r apk绝对路径     // 多个设备同时存在时,指定设备进行apk 覆盖安装(覆盖之前的版本)

adb uninstall      // 卸载应用,后面跟的参数是应用的包名(如:com.DefaultCompany.UnityProject),请区别于 apk 文件名,卸载时保存数据和缓存使用参数 -k
adb -s 设备名称 uninstall 应用的包名   // 多个设备同时存在时,指定设备进行卸载应用

7.文件处理

adb pull           // 将 Android 设备上的文件或者文件夹复制到本地, 如:
    例如复制 Sdcard 下的 pull.txt 文件到 D 盘:
        adb pull sdcard/pull.txt d:\
                          
    如果需要重命名为 rename.txt:
        adb pull sdcard/pull.txt d:\rename.txt     // 与D盘同级(\)
        adb pull sdcard/screen.png /Users/tacker/Desktop/screen.png    // 在Desktop 下面(/)

adb shell pm path com.kiloo.subwaysurf  //查看在应用 camera的路径
adb pull /data/app/com.kiloo.subwaysurf-bZU_n1moBgXbp_sDeP3sXw==/base.apk base.apk

    注意:  注意权限,复制系统权限的目录下的文件,需要 root ,并且一般的Android 机 root 之后并不能使用命令去复制,而需要在手机上使用类似于RE 的文件浏览器,先对系统的文件系统进行挂载为可读写后,才能在手机上复制移动系统文件,这里推荐使用小米手机的开发版本,IUNI 也可以
                  
db push           // 推送本地文件至 Android 设备, 例如:
    adb push d:\push.txt sdcard/
    再如: adb push abc.txt /storage/emulated/0/Download

8.重启设备

adb reboot        // 重启设备,进入fastboot模式
adb recovery      // 重启设备, 进入recovery模式(刷机)
adb shell input keyevent 26      // 唤醒设备

9.将宿主机上的某个端口重定向到设备的某个端口

adb forward tcp:1314 tcp :8888

执行该命令后所有发往宿主机 1314 端口的消息、数据都会转发到 Android 设备的 8888 端口上,
因此可以通过远程的方式控制 Android 设备。

10.远程连接 Android 设备

方法一:
前提: 手机, PC 处于相同的网络下, 手机root, 安装应用adbWireless。
步骤:
1. 启动adbWireless ,点击中间按钮。
2. adb connect 192.168.1.102 // 后面的连接是adbWireless 给的
3. 即可通过无线的方式连接手机,缺点是速度比较慢

方法二: (上面方法的补充)
前提: 手机, PC 处于相同的网络下
步骤:
1. 首先用USB链接上手机
2. adb tcpip 5555
3. adb connect 192.168.1.102 // 后面的连接是adbWireless 给的
4. 即可通过无线的方式连接手机,缺点是速度比较慢


adb shell 命令

adb 命令是 adb 这个程序自带的一些命令,而 adb shell 则是调用的 Android 系统中的命令,这些 Android 特有的命令都放在了 Android 设备的 system/bin 目录下

pm 命令

Package Manager , 可以用获取到一些安装在 Android 设备上得应用信息

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       // 列出应用包名及其安装来源
adb shell pm list features         // 列出硬件信息

命令最后增加 FILTER:过滤关键字,可以很方便地查找自己想要的应用,例如: 
adb shell pm list package -f -i tencent  // 可以找到tencent 相关的应用

adb shell pm path com.tencent.mobileqq  // 列出对应包名 .apk的位置

adb shell pm list instrumentation       // 列出含有单元测试 case 的应用,后面可跟参数 -f (与 pm list package 中一样),以及 [TARGET-PACKAGE]

adb shell pm dump 后跟包名         // 列出指定应用的 dump 信息,里面有各种信息,自行查看

adb shell pm install apk文件名     // 安装Apk, 区别于 adb install 安装,
目标apk 存放于PC端, 使用adb install 安装
目标apk 存放于Android 设备上, 使用pm install 安装

adb shell pm unistall 应用的包名      // 卸载应用,注意同adb uninstall 后面的参数是应用的包名

adb shell pm clear 包名                  // 清楚应用的数据

adb shell pm set-install-location       // 设置应用安装位置
adb shell pm get-install-location       // 获取应用安装位置
[0/auto]:  默认为自动
[1/internal]:  默认为安装在手机内部
[2/external]:  默认安装在外部存储

输入: exit 推出 shell

am命令

am命令 主要负责应用内部

    adb shell dumpsys window | findstr mCurrentFocus  命令,可以查看当前启动中的应用信息
    adb shell dumpsys activity | grep mFocusedActivity  查看当前resume的是哪个activity
    adb logcat | grep ActivityManager                              查看当前正在运行的Activity

adb shell am start -n com.android.camera/.Camera        // 启动系统相机的Camera Activity (实践中发现 包名 com.android.camera 如果是自己的项目可以在build.gradle 中找到, .Camera 可以在manifest 中查找, 暂时还未实践在他人的apk中如何查找)
adb -s 设备名称 shell am start -n com.android.camera/.Camera   // 多设备时,启动系统相机的Camera Activity, 其他操作同理
adb shell am start -S com.android.camera/.Camera        // 先停止相机应用,在启动相机应用(S 大写)
adb shell am start -W com.android.camera/.Camera        // 等待应用完成启动
adb shell am start -a android.intent.action.VIEW -d http://testerhome.com      // 启动默认浏览器打开一个特定网页
adb shell am start -a android.intent.action.CALL -d tel:10086         // 启动拨号器拨打 10086
adb shell am instrument                   // 启动一个 instrumentation , 单元测试或者 Robotium 会用到
adb shell am monitor                      // 监控 crash 与 ANR
adb shell am force-stop  包名              // 结束应用
adb shell am startservice  服务(类似于启动Activity)   // 启动服务
adb shell am broadcast  广播(类似于Activity)          // 启动广播

Input

这个命令可以向 Android 设备发送按键事件

adb shell input text abcd1234                 // 发送文本内容,不能发送中文, 且键盘要是英文键盘
adb shell input keyevent KEYCODE_HOME    // 发送按键事件(模拟 按下 Home键)
adb shell input tap 500 300              // 对屏幕发送点击事件(位置)
adb shell input swipe 300 100 1000 600   // 滑动事件, 需要注意的是在小的距离内,在较长的持续时间内进行滑动,最后表现出来的结果就是长按动作
adb shell screencap -p /sdcard/screen.png     // 截屏并保存到sdcard 目录下
adb shell screenrecord sdcard/record.mp4      // 录屏,结束后保存在sdcard 中,ctrl + c 结束录制

uiautomator

执行 UI automation tests , 获取当前界面的控件信息

adb shell uiautomator dump                 // 获取空间信息
adb shell uiautomator runtest              //

ime

输入法相关

adb shell ime list -s                     // 列出设备上的输入法
adb adb shell ime set com.baidu.input_mi/.ImeService      // 选择输入法(这里设置为百度输入法)

wm

设备相关

adb shell wm size                    // 获取设备分辨率 

补充:

补充连接: <a href='http://www.cnblogs.com/bravesnail/articles/5850335.html', target='__blank'>http://www.cnblogs.com/bravesnail/articles/5850335.html</a>

在 PC 端执行 monkey 命令,将信息保存至 D 盘 monkey.log,会这么写:

adb shell monkey -p com.android.settings 5000 > d:\monkey.log

在 PC 端执行 monkey 命令,将信息保存至手机的 Sdcard,可能会这么写:

这样写会报错 adb shell monkey -p com.android.settings 5000 > sdcard/monkey.log  这样写会报错
正确的如下:
adb shell "monkey -p com.android.settings 5000 > sdcard/monkey.log"

adb 链接 夜神模拟器:adb connect 127.0.0.1:62001

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

推荐阅读更多精彩内容