adb工具软件

目录 1、ADB是什么? 2、adb三大组件 3、ADB环境搭建 4、adb连接Android设备 4.1、模拟器连接 4.2、Android真机连接 5、adb命令 5.1、ADB语法 5.2、adb常用命令 5.2.1 常用操作命令 5.2.2、应用相关 5.2.3、app包操作相关 5.2.4、日志相关 5.2.5、系统操作 5.2.6 文件操作 6、adb常见连接问题整理

目录

1、ADB是什么?

2、adb三大组件

3、ADB环境搭建

4、adb连接Android设备

4.1、模拟器连接

4.2、Android真机连接

5、adb命令

5.1、ADB语法

5.2、adb常用命令

5.2.1 常用操作命令

5.2.2、应用相关

5.2.3、app包操作相关

5.2.4、日志相关

5.2.5、系统操作

5.2.6 文件操作

6、adb常见连接问题整理


1ADB是什么?

  • adb(Android Debug Bridge)是android sdk的一个工具,即调试桥,方便调试设备或调试开发的Android APP;
  • adb是用来连接安卓手机和PC端的桥梁,要有adb作为二者之间的维系,才能让用户在电脑上对手机进行全面的操作;(用这个工具可以直接操作管理android模拟器或者真实的android设备)
  • Android的初衷是用adb这样的一个工具来协助开发人员在开发android应用的过程中更快更好的调试apk,因此adb具有安装卸载apk、拷贝推送文件、查看设备硬件信息、查看应用程序占用资源、在设备执行shell命令等功能。
  • 你可以在Android SDK/platform-tools中找到 adb 工具或下载ADB。

2、adb三大组件

  • 客户端

该组件发送命令,客户端在开发计算机上运行,可以通过发出 adb 命令从命令行终端调用客户端。

  • 后台程序

该组件在设备上运行命令,后台程序在每个模拟器或设备实例上作为后台进程运行。

  • 服务器

该组件管理客户端和后台程序之间的通信,服务器在开发计算机上作为后台进程运行。

adb工具位于SDK目录下的platform-tools目录,有跟adb相关的三个文件:

 

我们使用了adb install这一命令,本文将介绍更多常用的adb命令,这些命令都是霍格沃兹教学中常用的命令。

am: activity manager 命令,操作acitivity

pm: package manager命令,操作package

 

3、ADB环境搭建

1、搭建java环境

2、下载安装Android sdk

android 官网下载(https://develper.android.com)

android studio中文社区(http://www.android-studio.org/)

3、设置环境变量

4、验证环境 adb version

之前我们在搭建自动化的环境的时候其实就已经将adb配置好了(见上一篇文章),直接在windows的dos环境中就可以使用(通过在运行输入cmd即可进入),所以接下来我们就开始介绍adb使用方式。

4、adb连接Android设备

要去通过adb去控制/操作设备,必须要保证adb连接上设备

1、模拟器: 不需要手动设置,连接模拟器端口: adb connect 127.0.0.1:7555(7555为mumu的端口)

2、真机: 通过USB连接设备与电脑、安装Android手机驱动、设备启用USB调试,列出已连接的设备: adb devices

4.1、模拟器连接

模拟器的选择有非常多,比如夜神、逍遥、海马玩、网易mumu、Bluestacks、Genymotion等等,这里以夜神模拟器为例

  • step1:开启夜神模拟器
  • step2:通过adb connect 127.0.0.1:62001去连接

其中,127.0.0.1为夜神模拟器的工作主机地址(因为是在本机上),62001为夜神模拟器官方指定的端口号

以下列表为主流模拟器以及对应的端口

模拟器端口
逍遥21503
夜神62001
海马玩26944
雷电5555
Genymotion5555

  • step3:检测设备是否连接上

如上显示,就表示设备已经成功链接上。

4.2、Android真机连接

真机的连接步骤跟模拟器会有很大的差异,具体如下:

  • step1:通过USB线将真机连接到PC端
  • step2:打开开发者模式,操作步骤:打开设置->关于手机->连续点击五次版本号

注意:不同的真机打开此模式的操作步骤会有些不同,以小米手机为例:打开设置->我的设备->全部参数->连续点击"MIUI版本"

  • step3:打开USB调试模式,操作步骤:进入到设置->开发者选项->调试->勾选USB调试,小米手机入口是在设置->更多设置->开发者选项

跳出来如下提示框,点击确定

特别注意!!!

当上述窗口关闭了之后,会自动跳出来如下提示窗口,必须要保证这个提示窗口是出来的

勾选“一律允许使用这台计算机进行调试”->点击确定

  • step4:检测设备是否链接上

 

5、adb命令

5.1ADB语法

adb的语法也很简单,与常见的DOS命令一样

adb [-d|-e|-s <serial-number>] <command>

-d:指定当前唯一通过USB连接的Android设备为命令目标

-e:指定当前唯一运行的模拟器为命令目标

-s:指定相应serialNumber号的设备/模拟器为命令目标

其中的[-d|-e|-s <serial-number>] 是对多设备的操作,我们通常只用一个安卓设备,因此忽略即可,直接使用下面的格式:

adb <command>

am命令

am全称activity manager,你能使用am去模拟各种系统的行为,例如去启动一个activity,强制停止进程,发送广播进程,修改设备屏幕属性等等。am <command>

pm命令:

pm全称package manager,你能使用pm命令去模拟android行为或者查询设备上的应用等,当你在adb shell命令下执行pm命令:pm <command>

 

5.2、adb常用命令

5.2.1 常用操作命令

1、查看帮助手册 adb --help

2、查看adb版本信息:adb version

3、进入shell adb shell

登录设备shell(命令行的人机界面),在当前环境中就可以使用到很多linux相关命令了,如:cd、ls、cp等等,相当于在cmd窗口远程执行linux命令。                 

4、设备相关

查看连接到PC的android设备列表及设备状态 adb devices

设备有3种状态,device:正常连接,offline:设备连接异常,无响应,unknown:没有连接设备(无输出信息)

获取设备的状态 adb get-state

5、连接手机 adb connect/disconnect

对于模拟器,可以使用该命令进行连接/取消连接;连接模拟器端口:adb connect 127.0.0.1:7555(7555为mumu的端口)

对于真机,可以使用该命令通过WiFi进行远程调试,在进行设置之后我们就可以不需要通过USB线将手机连接到电脑了:

    • 确保手机和电脑处于同一网络中(连接的同一个路由器);
    • 将手机通过usb线连接到电脑;
    • 输入adb tcpip 5555来确定手机与电脑远程通讯的端口号;
    • 拔掉usb线;
    • 再通过adb connect 加上你自己手机的ip地址来进行连接,如果想要取消连接,直接使用adb disconnect命令即可。

6、指定adb server的网络端口:adb -P <port> start-server ADB的默认端口为 5037

7、启动/停止 adb:

以root权限运行adb:adb root

启用 adb start-server

一般无需手动执行此命令,在运行adb 命令时若发现adb server 没有启动会自动调起,启动adb服务

通常在adb出现问题时,结合kill-server一起来重启adb服务

停止 adb kill-server

模拟器在运行一段时间后,adb服务有可能(在Windows进程中可找到这个服务,该服务用来为模拟器或通过USB数据线连接的真机服务)会出现异常。这时需要重新对adb服务关闭和重启,因此启动adb和停止adb将成为完美的cp。

5.2.2、应用相关

1、安装、卸载应用

安装命令:adb install [-l] [-r] [-t] [-s] [-d] [-g] <apk-file>

adb install 后面可以跟一些可选参数来控制安装 APK 的行为,可用参数及含义如下:

参数

含义

-l

将应用安装到保护目录 /mnt/asec

-r

允许覆盖安装

-t

允许安装 AndroidManifest.xml 里 application 指定 android:testOnly=“true 的应用

-s

将应用安装到 sdcard

-d

允许降级覆盖安装

-g

授予所有运行时权限

实际上,adb install分三步完成:

  • push apk文件到/data/local/tmp
  • 调用pm install安装
  • 删除/data/local/tmp下对应的apk文件

 

普通安装:adb install <apk路径>

adb install *.apk

为了获取apk的安装包所在地址,可以直接用鼠标把apk文件拖到cmd窗口获取,返回success就说明安装成功了。

覆盖安装:adb install -r <apk路径>

adb install -r *.apk

保留数据和缓存文件,重新安装apk

完全卸载:adb uninstall <包名> 卸载某个应用,后面就需要加上对应的包名

保留配置文件:adb uninstall -k <包名> 卸载应用但保留数据和缓存文件

 

2、启动应用: adb shell am start -n <包名>/<Activity名>

3、清除应用数据与缓存: adb shell pm clear <包名>

4、强制停止应用: adb shell am force-stop <包名>

5、查看应用列表

adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]

adb shell pm list packages 后面可以跟一些可选参数进行过滤查看不同的列表,可用参数及含义如下 

参数

显示列表

-f

显示应用关联的 apk 文件

-d

只显示 disabled 的应用

-e

只显示 enabled 的应用

-s

只显示系统应用

-3

只显示第三方应用

-i

显示应用的 installer

-u

包含已卸载应用

<filter>

包名包含 <filter> 字符串

adb shell pm list packages 显示所有应用

adb shell pm list packages -s 只显示系统应用

adb shell pm list packages -3 只显示第三方应用

可输入部分包名进行筛选

例:adb shell pm list packages com.tencent.

 

查看应用详细信息

命令:adb shell dumpsys package <package-name>

注:<package-name> 表示应用包名,非app名称,如:com.tencent.mobileqq

查看应用安装路径

命令:adb shell pm path <package-name>

adb shell pm path com.tencent.mobileqq

启动应用/ 调起 Activity

命令:adb shell am start -W package_name/.MainActivity

强制停止应用

命令:adb shell am force-stop <packagename>

5.2.3、app包操作相关

1、获取前台包名和activity名

查看前台应用包名和类名(包名:android系统给到应用的标识,类名:一个页面的标识)adb shell dumpsys activity | find "mFocusedActivity"

windows 下命令:adb shell dumpsys activity | findstr mFocusedActivity

  • .启动手机的app
  • 使用adb shell dumpsys window | findstr mCurrentFocus  命令,可以查看当前启动中的应用信息

linux下命令:adb shell dumpsys activity | grep mFocusedActivity

2、通过日志获取app包名 adb shell "logcat | grep -i displayed"

adb logcat | grep -i displayed

这条命令在windows下可能出现问题:

将命令改写为

adb shell "logcat | grep -i displayed"

通常来说,出现的第一个displayed就是程序入口。

3、本命令是从app安装包中获取包名

有些app的包名无法通过logcat找到,还可以使用下面的命令:

aapt dump badging <package> | grep launchable-activity

4、 adb shell am monitor

  • 先连接上手机,使用命令    adb shell am monitor
  • 打开想要获取包名的APP即可,以微信为例,如下就是我们想要的包名

5、列出当前系统里面所有的包名

adb shell pm list packages

-s 列出系统apk路径及包名

-3 列出用户apk及包名

5.2.4、日志相关

命令:adb logcat [option] [filter-specs]     或 adb shell logcat

获取日志adb logcat

抓取android日志,这个也是对我们非常有用的命令,通过logcat日志,在app发生异常时,如crash/无响应这种,都可以在logcat里面定位到相应的信息

帮助信息:adb logcat --help

清除旧日志信息:adb logcat -c

开始抓取日志:adb logcat -v time > .\logcat.log 日志带有时间戳,日志写入当前目录的logcat.log文件

adb shell logcat -v time >E:\123.txt # 将日志写入123.txt文件内,并存入E盘根目录

暂停录制:CTRL + C

5.2.5、系统操作

查看系统资源:adb shell top | grep 包名

查看 CPU 信息:adb shell dumpsys cpuinfo

查看内存信息:adb shell dumpsys meminfo

查看进程状态 adb shell ps

查看Android设备系统信息

生产厂商:adb shell getprop ro.product.brand

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

设备型号:adb shell getprop ro.product.model

电池状况:adb shell dumpsys battery

设备分辨率:adb shell wm size

屏幕密度:adb shell wm density

设备IMEI:adb shell dumpsys iphonesubinfo

Android id:adb shell settings get secure android_id

CPU 信息:adb shell cat /proc/cpuinfo

内存信息:adb shell cat /proc/meminfo

生产厂商:adb shell getprop ro.product.brand

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

设备型号:adb shell getprop ro.product.model

电池状况:adb shell dumpsys battery

设备分辨率:adb shell wm size

屏幕密度:adb shell wm density

设备IMEI:adb shell dumpsys iphonesubinfo

Android id:adb shell settings get secure android_id

CPU 信息:adb shell cat /proc/cpuinfo

内存信息:adb shell cat /proc/meminfo

 

5.2.6 文件操作

1、从手机拉取信息放到本地电脑:adb pull <手机路径> <电脑路径>

从手机中拉取信息放到本地电脑上,手机路径可以通过adb shell进入到shell环境中,通过cd、ls这些命令找到对应的文件,如将QQ这个apk安装包拉取放到D盘下的test目录:

2、从本地推送信息到手机上去 adb push <本机路径> <手机路径>

3、截图

将模拟器当前显示截图:adb shell screencap <设备路径>

将截图文件下载至电脑:adb pull <截图所在的设备路径> <电脑路径>

 

4、切换文件目录

命令:adb shell cd <directory>

1、使用adb shell 进入shell

2、使用cd  <directory>进入指定目录,如:cd sdcard

5、列出指定目录的内容

命令:adb shell ls [options] <directory>

1、使用adb shell 进入shell

2、使用cd  <directory>进入指定目录,如:cd sdcard

3、使用ls 查看该目录的内容

参数:

无:列出当前目录下的所有内容,包含文件和子目录

-a:列出当前目录下的所有内容,包含隐藏文件和隐藏文件夹

-i:列出当前目录下的所有文件和索引编号

-s:列出当前目录下的所有文件和文件大小

-n:列出当前目录下的所有文件及其 UID和 GID

-R:列出当前目录下的所有子目录中的文件

6、删除文件或目录

命令:adb shell rm [options] <files or directory>

参数

无:删除文件

-f:强制删除文件,系统不提示

-r:强制删除指定目录中的所有文件和子目录

-d:删除指定目录,即使它是一个非空目录

-i:交互式删除,删除前提示

7、创建目录

命令:adb shell mkdir [options] <directory-name>

参数

无:创建指定目录

-m:创建指定目录并赋予读写权限

-p:创建指定目录及其父目录

8、查看当前路径

adb shell pwd

6adb常见连接问题整理

  1. 如果使用adb devices进行检测,发现没有任何设备信息,我们就需要检查是否有手机/模拟器连接上

  1. 如果是手机进行连接,windows右下角有出来如下提示的话,需要检查你的手机驱动是否有安装好

 

如果实在是解决不了(安装驱动精灵也不行),建议大家安装91手机助手/豌豆荚,能够保证正常连接到助手就可以,但是有一点要注意:连接好之后就需要把助手软件卸载,不然后面在cmd里面使用 adb命令会出现端口问题

  1. 使用命令的时候有出来下面的提示,表示是有两台或者多台设备连接到了电脑,这边我们就需要保留一台设备即可,其他设备拔掉

  1. 下面表示你的设备没有认证:

 

解决方案:

手机在连接USB线会出来如下提示,需要勾选

  1. 如果有出来下面类似的信息,那么应该是你的adb端口被占用了:

 

解决方案:

使用netstat -ano | findstr 5037查看5037端口对应的进程号(因为5037是adb的默认端口号)

taskkill -f -pid 进程号即可杀死

  1. 连接模拟器进行操作时,发现会出现如下的提示信息:

 

模拟器安装后会自带adb,而我们之前装好的Android SDK也有adb,两者冲突导致出现了这个问题。其中模拟器自带的adb版本为36,SDK自带的adb版本为40。

解决方案:

将Android SDK中的adb复制出来,替换模拟器中的adb即可。

以夜神模拟器为例:将Android SDK中的adb复制一份,重命名为nox_adb.exe文件,进入到夜神模拟器的安装目录,替换原来的nox_adb文件即可。

部分内容转载自:https://www.cnblogs.com/yyoba

尊重原创,如要转载,请注明出处:“转载自:https://blog.csdn.net/weixin_54280625”,作者保留著作权!谢谢!

软件测试开发交流群   458609378   免费领取测试资料 互助学习

 

 

 

知秋君
上一篇 2024-08-05 21:48
下一篇 2024-08-05 21:12

相关推荐