提醒:为保障学习效果,开始本节课前,请:
(1)搭建好测试环境;
(2)开启mumu模拟器;

1、adb的概念

adb(Android Debug Bridge)是一个针对Android的调试桥,是一个命令行工具,允许你与模拟器或者真机进行通信。方便开发者(测试人员)与设备进行交互。

2、adb的工作原理

启动一个adb客户端时,此客户端首先检查是否有已允许的adb服务器进程。如果没有,它会自动启动一个服务器进程。当服务器启动时,它默认与本地TCP端口5037绑定,并且侦听从adb客户端(Dos窗口或者脚本)发送的命令。所有adb客户端均使用端口5037与adb服务器进行通信。

打开Dos窗口,第一次输入如下命令:

adb devices

观察控制台输出,如下:

C:\Users\duzil>adb devices
* daemon not running; starting now at tcp:5037
* daemon started successfully
List of devices attached

翻译:
第一行,守护进程没有运行,将在5037端口启动
第二行,守护进程启动成功
第三行,附件设备清单
第四行,如果有设备的话,会列出设备信息。(我们明明已经开启了mumu模拟器,为什么找不到呢?后面解释)

这几行信息也印证了上面的介绍——“当启动客户端时,此客户端首先检查是否有已允许的adb服务器进程。如果没有,它会自动启动一个服务器进程。当服务器启动时,它默认与本地TCP端口5037绑定”

好,我们再次输入“adb devices”命令,看下打印结果:

C:\Users\duzil>adb devices
List of devices attachedC:\Users\duzil>

你可以看到,因为adb已经启动并绑定5037端口,因此这里没有再次启动,也就没有再次打印这些信息:

* daemon not running; starting now at tcp:5037
* daemon started successfully

3、adb常用命令

接下来,咱们开始学习adb的常用命令:
adb是一个非常强大的命令,你可以直接在Dos中执行一个adb命令,它会显示adb所有的命令。
这里我粘贴一部分命令,供大家了解:

C:\Users\duzil>adb
Android Debug Bridge version 1.0.41
Version 30.0.4-6686687
Installed as C:\Users\duzil\AppData\Local\Android\Sdk\platform-tools\adb.exeglobal options:-a         listen on all network interfaces, not just localhost-d         use USB device (error if multiple devices connected)-e         use TCP/IP device (error if multiple TCP/IP devices available)-s SERIAL  use device with given serial (overrides $ANDROID_SERIAL)-t ID      use device with given transport id-H         name of adb server host [default=localhost]-P         port of adb server [default=5037]-L SOCKET  listen on given socket for adb server [default=tcp:localhost:5037]general commands:devices [-l]             list connected devices (-l for long output)help                     show this help messageversion                  show version numnetworking:connect HOST[:PORT]      connect to a device via TCP/IP [default port=5555]disconnect [HOST[:PORT]]disconnect from given TCP/IP device [default port=5555], or allpair HOST[:PORT] [PAIRING CODE]pair with a device for secure TCP/IP communicationforward --list           list all forward socket connectionsforward [--no-rebind] LOCAL REMOTEforward socket connection using:

好,来开始常用命令的学习

(1)adb connect IP:端口

前面我们讲过,adb启动默认监听5037端口。在第一节课,我们说过mumu模拟器默认启动端口为7555。所以,adb devices是无法找到模拟器的。因此我们先来学第一个命令:adb connect IP:端口,这个命令的作用是将设定adb监听的IP地址及对应的端口。
命令如下:

C:\Users\duzil>adb connect 127.0.0.1:7555
connected to 127.0.0.1:7555C:\Users\duzil>

可以看到端口监听成功

(2)adb devices

adb devices,用来打印监听端口的设备信息。
命令如下:

C:\Users\duzil>adb devices
List of devices attached
127.0.0.1:7555  deviceC:\Users\duzil>

可以看到已经能监测到mumu模拟器了。简单解释一下:
127.0.0.1:7555——是IP地址和端口号
device——是设备名称,如果你使用真机的话,会显示具体设备名。

(3)adb shell

Android是基于Linux内核开发的。Linux系统的字符交互界面是shell。所以Android也可以使用shell命令。
我们通过adb shell就可以进入Android的设备底层系统。命令

C:\Users\duzil>adb shell
root@x86_64:/ # pwd
/
root@x86_64:/

可以看到,我们输入adb shell后,进入了Linux窗口命令行,#代表root权限。然后我们执行了一条Linux命令pwd,用来打印当前所在目录,回显是个“/”,代表根目录。

如果你的PC同时连接了多台设备,你想进入特定设备的shell,请使用下面的命令:

adb -s 127.0.0.1:7555 shell

使用-s参数,加上IP+端口,就可以进入指定设备。

如果想退出shell,可以使用exit命令,如下所示:

root@x86_64:/ # exitC:\Users\duzil>a

(4)adb install xxx.apk

我们可以使用adb install安装Android应用(apk文件)

APK(全称:Android application package,Android应用程序包)是Android操作系统使用的一种应用程序包文件格式,用于分发和安装移动应用及中间件。一个Android应用程序的代码想要在Android设备上运行,必须先进行编译,然后被打包成为一个被Android系统所能识别的文件才可以被运行,而这种能被Android系统识别并运行的文件格式便是“APK”。 一个APK文件内包含被编译的代码文件(.dex 文件),文件资源(resources), 原生资源文件(assets),证书(certificates),和清单文件(manifest file)

这里我准备了一个应用宝的apk,放到了C盘AAA目录下面,接下来,使用命令安装一下:

c:\AAA>adb install yingyongbao.apk
Performing Push Install
yingyongbao.apk: 1 file pushed, 0 ski... 0.4 MB/s (11333794 bytes in 30.532s)pkg: /data/local/tmp/yingyongbao.apk
Successc:\AAA>

安装成功后,就可以在mumu模拟器看到该应用。

注意:如果想覆盖安装的话,需要增加-r参数,请参考:

c:\AAA>adb install -r yingyongbao.apk
Performing Push Install
yingyongbao.apk: 1 file pushed, 0 ski... 0.5 MB/s (11333794 bytes in 23.512s)pkg: /data/local/tmp/yingyongbao.apk
Successc:\AAA>

否则就会报错,提示应用已安装,如下:

c:\AAA>adb install c:\AAA\yingyongbao.apk
Performing Push Install
c:\AAA\yingyongbao.apk: 1 file pushed... 0.9 MB/s (11333794 bytes in 11.701s)pkg: /data/local/tmp/yingyongbao.apk
Failure [INSTALL_FAILED_ALREADY_EXISTS]c:\AAA>

(5)adb uninstall

学习完安装应用,再来看下卸载应用。安装应用的时候直接使用apk的名称就可以了。但是卸载有所不同,需要使用“包名”。
那如何查看包名呢?
方法一:

c:\AAA>adb shell
root@x86_64:/ # cd /data/app
app-asec/    app-lib/     app-private/ app/
root@x86_64:/ # cd /data/app/
root@x86_64:/data/app # ls
com.ddnapalon.calculator.gp-1
com.mumu.acc-1
com.mumu.launcher-1
com.mumu.store-1
com.tencent.android.qqdownloader-2
io.appium.settings-1
io.appium.uiautomator2.server-1
io.appium.uiautomator2.server.test-1
root@x86_64:/data/app # cd /data/local/tmp/
root@x86_64:/data/local/tmp # ls
appium_cache
root@x86_64:
  • 先使用adb shell命令进入shell
  • 在通过cd命令切换到“/data/app/”目录下;固定目录
  • 然后通过“ls”命令查看当前目录有哪些报名;
    从文件名可以看到“com.tencent.android.qqdownloader-2”就是包名。

接下来,我们使用exit命令退出shell。然后再使用adb uninstall卸载包
这里需要提醒的是,卸载的时候需要去掉每个报名末尾的“-2”,这些-数字是Android给加的标识符,具体意义不用关心。

c:\AAA>adb uninstall com.tencent.android.qqdownloader
Successc:\AAA>

再去看看mumu模拟器,是不是已经卸载成功了。

(6)adb push

将本地文件推送到设备(模拟器)。
adb push 本地文件地址 远端目录
示例:

C:\Users\duzil>adb push c:\AAA\yingyongbao.apk /sdcard
c:\AAA\yingyongbao.apk: 1 file.../s (11333794 bytes in 22.985s)C:\Users\duzil>

然后,可以进入到bash,进入到sdcard目录查看

C:\Users\duzil>adb shell
root@x86_64:/ # cd sdcard/
root@x86_64:/sdcard # ls
……此处省略部分内容……
yingyongbao.apk
root@x86_64:/sdcard #

(7)adb pull

将远端(模拟器)文件拉取到本地。
首先,我再sdcard目录,通过touch命令创建一个文本文件“a.txt”。(空文件,下载速度快,方便演示),命令如下:

root@x86_64:/sdcard # touch a.txt
root@x86_64:/sdcard # ls
……此处省略……
a.txt

然后使用pull命令,将该文件拉取到本地

C:\Users\duzil>adb pull /sdcard/a.txt  c:\AAA\
/sdcard/a.txt: 1 file pulled, 0 skipped.C:\Users\duzil>

(8)adb shell pm list packages

查看设备所有包名,用法示例:

C:\Users\duzil>adb shell pm list packages
package:com.android.providers.telephony
此处有省略……
package:com.tencent.android.qqdownloader
此处有省略……C:\Users\duzil>adb shell pm list packages

用该方法同样可查看到包名。

另外,我们还可以加“-3”参数,只获取第三方应用。(非系统本身应用),演示如下:

C:\Users\duzil>adb shell pm list packages -3
package:io.appium.settings
package:com.ddnapalon.calculator.gp
package:io.appium.uiautomator2.server
package:com.tencent.android.qqdownloader
package:io.appium.uiautomator2.server.testC:\Users\duzil>

(9)adb shell dumpsys window|findstr mCurrentFocus

查看包名和activity。包名我们前面讲过,不再多说,什么是activity呢?你可以简单理解为处于当前活跃状态的APP(没有切换到后台)。
演示示例:

C:\Users\duzil>adb shell dumpsys window|findstr mCurrentFocusmCurrentFocus=Window{9e45e96 u0 com.tencent.android.qqdownloader/com.tencent.assistantv2.activity.MainActivity}

上面结果中

  • “com.tencent.android.qqdownloader”,这部分是包名。
  • “com.tencent.assistantv2.activity.MainActivity”,这部分是activity的值

(10)adb kill-server 或 adb start-server

启动、关闭adb服务

C:\Users\duzil>adb start-serverC:\Users\duzil>adb kill-serverC:\Users\duzil>adb start-server
* daemon not running; starting now at tcp:5037
* daemon started successfullyC:\Users\duzil>

4、知识点补充

查看端口,结束端口的占用进程。
比如7555端口被占用了。再尝试用7555去启动应用必然报错,你可以通过如下命令查看那个程序占用了7555端口。

C:\Users\duzil>netstat -ano|findstr 7555TCP    127.0.0.1:5097         127.0.0.1:7555         ESTABLISHED     29716TCP    127.0.0.1:7555         0.0.0.0:0              LISTENING       19348TCP    127.0.0.1:7555         127.0.0.1:5097         ESTABLISHED     19348

第一行中,第三列,7555端口被占用,本行最后一列,29716位PID,进程id(process ID)

然后使用下面的命令结束进程

C:\Users\duzil>taskkill -f -pid 29716
成功: 已终止 PID 为 29716 的进程。C:\Users\duzil>

好,本节课先到这里。谢谢观看。

2-appium之adb介绍相关推荐

  1. appium之adb常用命令

    appium之adb常用命令 一.真机远程调试步骤: (非数据线操作要求需要手机和pc端在同一个路由器下) 1.将手机连接到pc端 2.adb devices  检测设备 3.adb tcpip 55 ...

  2. Appium、adb控制Android手机和实战项目

    Appium.adb控制Android手机和实战项目 adb常用命令 Appium中API 元素定位操作API 滑动和拖拽事件(appium<2.0版本) 高级手势TouchAction 手机操 ...

  3. adb介绍、下载安装、使用

    adb下载安装及使用 adb介绍: Android Debug Bridge(安卓调试桥) tools.它就是一个命令行窗口,用于通过电脑端与模拟器或者是设备之间的交互. ADB是一个C/S架构的应用 ...

  4. 自动化工具之Appium工具简单介绍

    背景 自动化,性能测试,接口测试,开发平台等工作,到底测试的价值在哪里,其实价值来源不断充实与为大众服务,今天简单介绍ui小工具appium攻击. 简单介绍 Appium 是一个自动化测试开源工具,支 ...

  5. appium: adb server is out of date.killing

    开始学习appium+python,环境搭建通了,但是连接虚拟设备报错adb server is out of date.killing... 通过度娘,找到如下文章,解决. 前提: 1,搭建好环境 ...

  6. Appium python adb命令

    获取当前界面 adb shell dumpsys activity activities | findstr mFocusedActivity Android 7.0 现象: Android 8.0 ...

  7. android的adb介绍,Android开发基础不牢

    ok 后,模拟器有如下反应: (3)    sms测试 sms send 13522543026 hello ok 则, 在模拟器的messaging中,就会看到有一条短信了. 如图: 13    d ...

  8. Appium基础 — adb shell 命令

    使用adb命令的前提是保证手机或者模拟器和电脑是连接状态. 使用adb connect 127.0.0.1:+端口号命令,进行链接. 1.启动和关闭adb服务 在某些情况下,可能需要终止然后再启动服务 ...

  9. 如何获得Android设备名称(ADB命令详细介绍)

    豌豆荚.360手机管家等软件可以获取android设备名称,显示在界面上,如下图: 我们自己如何来获取设备名称呢?答案如下: 在命令行中输入"adb shell" 进入shell之 ...

最新文章

  1. 疑惑即新知——记一次reverse模板实现过程
  2. 复习笔记(一)——C++基础
  3. english writing sample for professional
  4. 12行代码AC-Leecode 598. 范围求和 II——Leecode每日一题系列
  5. [luoguP2331] [SCOI2005]最大子矩阵(DP)
  6. 企业资源计划软件 业务知识点汇编整理
  7. php activerecord,Yii2 优雅的 Active Record
  8. 相机模型与标定(六)--单应性求解
  9. C语言:求圆的面积和周长
  10. 团队文化中的害群之马
  11. 一如此前的回应,王劲将景驰科技总部搬到了广州
  12. odoo 14 手册 客户 报价单 销售订单
  13. 计算机硬盘如何安装系统,电脑主机硬盘如何安装系统 一键硬盘安装win7系统
  14. 西南科技大计算机实验室,西南科技大学|关于公布西南科技大学本科教学实验室建制的通知|...
  15. sketchb必备快捷键大全,sketch如何自定义快捷键
  16. 基于PHP的餐饮公司展示网站及点餐系统设计与实现
  17. NOIP 2015 D1 T2 信息传递
  18. python二级准备一个月能行吗_计算机二级选哪个?一个多月的准备时间够吗?
  19. Ubuntu16.04+win10+Fabric
  20. 数据科学系列:plotly可视化入门介绍

热门文章

  1. 小程序 unicode_程序员工具集锦
  2. 一个700万人口的国家系统遭黑客入侵,超500万人身份信息泄露...
  3. MACD金叉死叉能不能提前预警?2020上半年MACD金叉死叉的效果如何?
  4. win下禁用光标闪烁 记录
  5. 【CV】收藏!YOLOv4全文解读与翻译总结!(附思维导图和论文译文)
  6. 用计算机名添加网络打印机,当IP地址经常变动时,使用计算机名连接共享打印机-自动交易...
  7. 【计算机组成原理】门阵列译码器
  8. 【学习笔记】DeepCrossing
  9. 浅析国有企业外部董事如何履职
  10. 2015 电子科大校园招聘名单(更新中)