Android 调试桥

adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android设备进行通信。它可为各种设备操作提供便利,如安装和调试应用。

Tips: 在 android_sdk/platform-tools/ 中找到 adb 工具,然后根据其具体的路径配置好环境变量。然后启动cmd 输入adb即可查看是否配置成功。

adb 的工作原理

启动一个 adb 客户端时,此客户端首先检查是否有已运行的 adb 服务器进程。如果没有,它将启动服务器进程。当服务器启动时,它与本地 TCP 端口 5037 绑定,并侦听从 adb 客户端发送的命令—所有 adb 客户端均使用端口 5037adb 服务器通信。

启用 adb 调试

要在通过 USB 连接的设备上使用 adb,您必须在设备系统设置中启用 USB debugging(位于 Developer options 下)。
在运行 Android 4.2 及更高版本的设备上,Developer options 屏幕默认情况下处于隐藏状态。如需将其显示出来,请转到 Settings > About phone 并点按 Build number 七次。返回上一屏幕,在底部可以找到 Developer options

注:当您连接运行 Android 4.2.2 或更高版本的设备时,系统将显示一个对话框,询问您是否接受允许在这台计算机上调试的 RSA 密钥。这种安全机制可以保护用户设备,因为它可以确保只有在您能够解锁设备并确认对话框的情况下才能执行 USB 调试和其他 ADB 命令。

adb常用命令

查看adb版本

adb  version

连接夜神模拟器(此处分别演示模拟器和真机连接)

adb connect 127.0.0.1:62001

Tips:
夜神模拟器的端口是规律的,第一个模拟器端口是62001,第二个模拟器端口是62025,第三个是62025+1,依此类推
• 模拟器1:Android 4.4.2 地址:127.0.0.1:62001
• 模拟器2: Andriod 5.1.1 地址:127.0.0.1:62025
• 更多详情:夜神安卓模拟器adb命令详解

查看设备信息

adb devices

如果出现如下提示:

adb server version (31) doesn't match this client (36); killing...

• 原因: adb版本不对 ,Androd SDK的版本和模拟器的adb版本不一致
• 解决方案:将Android SDKadb替换掉模拟器的adb即可。模拟器adb路径 :{安装Path}Noxbin

adb shell

android 设备底层是 linux 系统。 shelllinux 系统的字符交互界面。

adb shell

#进入指定设备shell
adb  -s 127.0.0.1:62001 shell

#退出adb shell
exit

进入adb shell后有两种状态显示:#代表有root权限,$代表没有root权限

root知识小科普

"To err is human, but to really foul up everything, you need root password."
"人非圣贤孰能无过,但是拥有root密码就真的万劫不复了。"

root用户是系统中唯一的超级管理员,它具有等同于操作系统的权限。一些需要root权限的应用,譬如广告阻挡,卸载系统预装App是需要root权限的。可问题在于rootwindows的系统管理员的能力更大,足以把整个系统的大部分文件删掉,导致系统完全毁坏,不能再次使用。所以,用root进行不当的操作是相当危险的,轻微的可以死机,严重的甚至不能开机。所以,在Unix、LinuxAndroid中,除非确实需要,一般情况下都不推荐使用root

在设备安装apk

adb install | -r <apkName>  -r 覆盖原安装文件 -s 可以指定设备
eg:

#默认安装
adb install "C:\Users\Shuqing\Desktop\Appium 自动化测试教程\wandoujia.apk"

#覆盖安装
adb install -r  "C:\Users\Shuqing\Desktop\Appium 自动化测试教程\wandoujia.apk"

#指定设备安装
adb  -s 127.0.0.1:62001 install  C:\Users\Shuqing\Desktop\Appium\kaoyan3.1.0.apk 自动化测试教程\wandoujia.apk"

如遇到报错:Failure [INSTALL_FAILED_INVALID_URI]
解决方案: cmd命令行下执行以下命令:
• 第一步、adb remount
• 第二步、adb shell
• 第三步、cd /data
• 第四步、chmod 777 local
• 重新安装apk,ok了。

卸载apk

1.首先进入设备的/data/app目录找到app包名

adb shell
cd /data/app/

2.执行命令删除

adb uninstall  | -k  <apkName>  卸载软件

adb uninstall  com.wandoujia.phoenix2

Tips:安装后的包名系统会在末尾加上-1之类的数字,要去掉才可以成功卸载。 软件名称为包名,不要包含.apk
-k-k 参数,为卸载软件但是保留配置和缓存文件

查看设备上面安装的应用包名

#查看所有应用
adb shell pm list packages

#查看系统应用
adb shell pm list packages -s

#查看第三方应用
adb shell pm list packages -3

#包名包含某字符串的应用(比如要查看包名包含字符串 mazhuang 的应用列表)
adb shell pm list packages mazhuang

启动停止APP

启动APP

adb shell am start -W -n package/activity

停止APP

#返回桌面APP后台运行
adb shell input keyevent 3

#杀死APP进程
adb shell am force-stop package

获取当前app包名和activity

adb shell dumpsys window | findstr mCurrentFocus
adb shell dumpsys activity | grep "mFoc"

文件读取写入

将文件从PC写入到设备

adb push <local> <remote>
eg:
adb push C:\Users\Shuqing\Desktop\kyb.txt /sdcard
C:\Users\Shuqing\Desktop\kyb.txt: 1 file pushed. 0.1 MB/s (462 bytes in 0.005s)

将文件从设备读取到PC

adb pull <remote> <local>
eg:
adb pull /sdcard/server.log  C:\Users\Shuqing\Desktop
/sdcard/server.log: 1 file pulled. 0.0 MB/s (196 bytes in 0.004s)

注意:由于权限问题,不能直接pull到电脑磁盘根目录,否则会报错:

C:\Users\Shuqing>adb pull /sdcard/server.log  D:\\
adb: error: cannot create file/directory 'D:\\': No such file or directory

屏幕截图

$ adb shell screencap /sdcard/screen.png
adb pull /sdcard/screen.png  C:\Users\Shuqing\Desktop

adb服务启动和关闭

adb kill-server      #关闭adb服务
adb start-server     #开启adb服务

Tips:如果5037端口被占用可以使用如下命令释放端口

C:\Users\Shuqing> netstat -ano | findstr "5037"
  TCP    127.0.0.1:5037         0.0.0.0:0              LISTENING       11072
  TCP    127.0.0.1:5037         127.0.0.1:59519        TIME_WAIT       0

taskkill -f -pid XXX

小结

  1. adb是自动化非常重要的一个工具
  2. 目前很多PC客户端手机助手也是基于adb连接原理进行封装的。
  3. 可以将常用的adb命令封装成bat命令,随时可以运行。如:
    adbdevices.bat
adb devices
pause

AdbConnect.bat

adb connect 127.0.0.1:62025
adb devices
pause

参考文档

http://www.android-doc.com/tools/help/adb.html
https://developer.android.com/studio/command-line/adb.html (如打不开,很正常!因为有墙。。)
https://www.cnblogs.com/lxs1314/p/6214154.html

最后修改:2019 年 02 月 13 日 09 : 53 PM
如果觉得我的文章对你有用,请随意赞赏