1、adb概介

(1) 2024-05-10 12:23

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说1、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是什么?

1、adb概介_https://bianchenghao6.com/blog__第1张

  • 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三大组件

1、adb概介_https://bianchenghao6.com/blog__第2张

  • 客户端

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

  • 后台程序

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

  • 服务器

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

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

1、adb概介_https://bianchenghao6.com/blog__第2张

 

我们使用了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去连接

1、adb概介_https://bianchenghao6.com/blog__第4张

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

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

模拟器 端口
逍遥 21503
夜神 62001
海马玩 26944
雷电 5555
Genymotion 5555
  • step3:检测设备是否连接上

1、adb概介_https://bianchenghao6.com/blog__第5张

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

4.2、Android真机连接

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

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

1、adb概介_https://bianchenghao6.com/blog__第6张

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

1、adb概介_https://bianchenghao6.com/blog__第7张

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

1、adb概介_https://bianchenghao6.com/blog__第8张

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

1、adb概介_https://bianchenghao6.com/blog__第9张

特别注意!!!

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

1、adb概介_https://bianchenghao6.com/blog__第10张

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

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

1、adb概介_https://bianchenghao6.com/blog__第11张

 

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就说明安装成功了。

1、adb概介_https://bianchenghao6.com/blog__第12张

覆盖安装: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  命令,可以查看当前启动中的应用信息

1、adb概介_https://bianchenghao6.com/blog__第13张

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

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

adb logcat | grep -i displayed

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

1、adb概介_https://bianchenghao6.com/blog__第14张

将命令改写为

adb shell "logcat | grep -i displayed"

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

1、adb概介_https://bianchenghao6.com/blog__第15张

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

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

aapt dump badging <package> | grep launchable-activity

4、 adb shell am monitor

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

1、adb概介_https://bianchenghao6.com/blog__第16张

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目录:

1、adb概介_https://bianchenghao6.com/blog__第17张

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

1、adb概介_https://bianchenghao6.com/blog__第18张

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、adb概介_https://bianchenghao6.com/blog__第19张

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

1、adb概介_https://bianchenghao6.com/blog__第20张

 

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

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

1、adb概介_https://bianchenghao6.com/blog__第21张

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

1、adb概介_https://bianchenghao6.com/blog__第22张

 

解决方案:

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

1、adb概介_https://bianchenghao6.com/blog__第23张

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

1、adb概介_https://bianchenghao6.com/blog__第24张

 

解决方案:

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

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

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

1、adb概介_https://bianchenghao6.com/blog__第25张

 

模拟器安装后会自带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

尊重原创,如要转载,请注明出处:“转载自:1、adb概介”,作者保留著作权!谢谢!

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

 

 

 

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复