Android ADB原理及常用命令

Android调试桥(ADB, Android Debug Bridge)是一个Android命令行工具,包含在SDK 平台工具包中,adb可以用于连接Android设备,或者模拟器,实现对设备的控制,比如安装和调试应用。和Appium一样,adb也是基于C/S架构实现的。

一、ADB运行原理

adb分为三个部分:PC上的adb client,adb server和手机(也可能是PC上的模拟器)上的adb daemon。这是一个多多连接的设计。即一台PC可以连接多个手机,一台手机也可以连接多个PC。

  1. Client本质上就是Shell,用来发送命令给Server。发送命令时,首先检测PC上有没有启动Server,如果没有Server,则自动启动一个Server,绑定 TCP 的 5037 端口,然后将命令发送到Server,并不关心命令发送过去以后会怎样。
  2. ADB Server:运行在PC上的后台程序,目的是检测USB接口何时连接或者移除设备。ADB Server维护着一个“已连接的设备的链表”,并且为每一个设备标记了一个状态:offline,bootloader,recovery或者online;Server一直在做一些循环和等待,,监听从 clients 发来的命令,协调client和Server还有daemon之间的通信。
  3. ADB Daemon:程序“adbd”作为一个后台进程在Android设备或模拟器系统中运行。它的作用是连接ADB服务器,并且为运行在主机上的客户端提供一些服务;

Client和Server之间通过TCP/IP通信,Server侦听本机的5037端口,Client试图去连接这个端口。基于ADB的工具有 DDMS 、monkey 测试等

netstat -nao | findstr 5037

二、ADB安装

adb 包含在 Android SDK 平台工具软件包中,有两种方法安装adb工具:

  1. 使用SDK Manager安装,会安装到 platform-tools 目录下。具体安装方法可参考Appium 介绍及环境安装中的安装Android SDK部分。
  2. 单独下载平台工具,下载地址:https://developer.android.com/studio/releases/platform-tools。下载完成后解压,添加到环境变量即可。

查看是否安装成功:

$ adb --version
Android Debug Bridge version 1.0.40
Version 4986621
Installed as D:\android-sdk-windows\platform-tools\adb.exe

三、ADB常用命令

1. adb server启动和连接

  • 启动 adb server
    adb start-server 
    
  • 停止 adb server
    adb kill-server
    
  • 指定 adb server 的网络端口<adb默认端口为5037>
    adb -P <port> start-server 
    

在发送adb命令时,如果没有pc没有启动Server,则会自动启动一个Server,然后将命令发送到Server。

  • 通过adb usb打开设备上的tcpip服务并绑定一个端口
    adb tcpip 5555
    adb -s 611DKBQC22SH2 tcpip 5555  # 设备在 5555 端口监听 TCP/IP 连接
    

无线连接要将 Android 设备与将运行 adb 的电脑连接到同一个局域网

  • ADB Client通过命令adb connect ip连接远程的终端

    adb connect 127.0.0.1:62001 #夜游神模拟器
    adb connect 127.0.0.1:7555 #网易mumu模拟器
    adb disconnect <device-ip-address> # 断开连接
    

USB连接
开启Android 设备的开发者选项和 USB 调试模式

2. adb常用命令

以 root 权限运行 adbd

adb root 
adb -s 611DKBQC22SH2 root

查看 adb 版本

adb version

查看设备名称

adb devices

重启手机

adb reboot

安装卸载apk包
模拟器可以直接把安装包拖入模拟器进行安装

adb安装卸载方法:

# 卸载
adb uninstall 包名
# 安装
adb install app.apk
adb install -r app.apk # 强制安装

打印手机日志

adb logcat | findstr -i displayed # 打印手机日志

3. 查看appPackage和appActivity

测试某个APP时,通常是先拉起这个APP,需要知道APP包名appPackage,appium启动APP时还需要知道APP某个页面的activity名称appActivity,可以通过adb命令来获取。

获取所有活动

adb shell dumpsys activity | grep tencent # linux
adb shell dumpsys activity | findstr tencent # windows

或者先进入shell环境:

$ adb shell
root@shamu:/ # dumpsys activity | grep tencent

获取当前APP的Package和Activity名:

adb shell dumpsys activity activities | findstr mResumedActivity

例如,打开微信(android 10):

$ adb shell dumpsys activity activities | findstr mResumedActivity
    mResumedActivity: ActivityRecord{
   3a7bec6 u0 com.tencent.mm/.ui.LauncherUI t50558}

获取最顶层的activity,也可用来获取当前打开应用的Package和Activity名。

adb shell dumpsys activity top 

上面的命令会打印大量日志信息,需要过滤一下:

adb shell dumpsys activity | findstr mFocusedActivity
adb shell dumpsys window windows|findstr "mCurrentFocus"

如果是Android 8.0及以上的版本,上面的命令可能不能获取到任何信息,因为没有 mFocusedActivity

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值