Adb学习

前言

Android开发过程中需要对和真机做交互操作,ADB全程Android Debug Bridge就是专门用来处理开发机和测试手机之间的通信。在ADB中有主要分成三大部分,其中客户端和服务器端运行在开发电脑上,守护进程运行在测试手机上。守护进程和开发电脑上的服务端交换信息,开发电脑上的客户端则和服务端交换信息。

Adb命令

基本命令

命令解释
adb shell进入Android系统的shell
adb devices查看当前与系统连接的所有真实设备和模拟器
adb help查看adb相关的帮助文档
adb shell dumpsys查看各种Android系统状态,比如activity,meminfo等等

安装命令

命令解释
adb installadb install -r apkpath 强制安装apk到Android设备;-s 选项会将apk安装到sdcard上。实际上分成了两步:adb push apkpath /data/local/tmp/ ,再执行pm install /data/local/tmp/apkname
adb uninstalladb uninstall apkname 卸载Android设备上的apk应用(只能卸载用户安装的应用/data/app,无法卸载系统应用/system/app);-k选项可以在卸载应用时保存用户数据。

文件存储

命令解释
adb pushadb push pc_path android_path 将pc_path的文件推送到android手机的android_path目录下
adb pulladb pull android_path pc_path 将Android手机的android_path文件拉取到电脑pc_path目录下

日志查看

命令解释
adb logcat查看logcat输出的日志信息,在shell下可以加各种查询关键词比如adb logcat | grep [AndroidRuntime, ANR, Exception]等查看需要特别注意的日志消息
adb logcat -c清除以前打印的日志消息

截屏录制

命令解释
adb shell screenrecordadb shell screenrecord /sdcard/test.mp4 可以在执行后录制用户所有的操作,现在的Android Studio已经十分强大,集成了录制视屏的功能
adb shell screencapadb shell screencap -p /sdcard/screen.png 屏幕截图功能,Android Studio也集成这个功能,不需要使用命令行这么麻烦了

服务器命令

命令解释
start-server启动服务进程
kill-server杀死服务进程

ADB模块间通信

ADB Server通常在5037端口进行监听,客户端Client向该端口发起连接请求,二者通过上面的命令进行交互。对于Server端与Android手机端如果存在着USB连接,它们就通过USB驱动进行交互,没有USB连接的时候也可以通过局域网来进行连接。首先在命令行下输入命令:

netstat -ano | findstr "5037"

TCP    127.0.0.1:5037         0.0.0.0:0              LISTENING       377716
TCP    127.0.0.1:5037         127.0.0.1:49486        ESTABLISHED     377716
TCP    127.0.0.1:5037         127.0.0.1:63182        ESTABLISHED     377716
TCP    127.0.0.1:5037         127.0.0.1:63183        ESTABLISHED     377716
TCP    127.0.0.1:5037         127.0.0.1:63184        ESTABLISHED     377716
TCP    127.0.0.1:5037         127.0.0.1:63185        ESTABLISHED     377716
TCP    127.0.0.1:5037         127.0.0.1:63186        ESTABLISHED     377716
TCP    127.0.0.1:49486        127.0.0.1:5037         ESTABLISHED     337116
TCP    127.0.0.1:63182        127.0.0.1:5037         ESTABLISHED     337116
TCP    127.0.0.1:63183        127.0.0.1:5037         ESTABLISHED     337116
TCP    127.0.0.1:63184        127.0.0.1:5037         ESTABLISHED     337116
TCP    127.0.0.1:63185        127.0.0.1:5037         ESTABLISHED     337116
TCP    127.0.0.1:63186        127.0.0.1:5037         ESTABLISHED     337116

可以看到有不少客户端和服务端之间的连接存在。接下来再看服务端和守护进程之间的通信, server端找到了adbd守护程序,它将建立一个到该端口的连接。为了能够使用网络连接而不是用USB驱动连接,作如下的操作,当然Android必须要root过才行,因为需要停止adbd设置它的监听端口再重启。

// 使用USB进入Android手机的root模式
adb shell
su
// 设置adbd的监听端口为5555,并且停止之前的adbd
setprop service.adb.tcp.port 5555
stop adbd

执行完stop adbd之后adb shell就会退出,同时也无法再连接上手机Android,断开USB连接,重新插入USB连接线,再到开发者选项关闭USB调试在打开USB调试,再在命令航中输入adb shell这时候发现又能连接上Android手机了,输入下面的命令:

adb shell
su
getprop service.adb.tcp.port
// 输出5555

// 退出adb shell,在命令行执行
adb connect 172.18.43.219
// 输出connected to 172.18.43.219:5555

netstat -ano | findstr "5555"

TCP    172.18.43.109:49863    172.18.43.219:5555     ESTABLISHED     377716

可以看到172.18.43.219:5555正式Android手机IP地址:监听端口号,这时再断开USB连接,执行adb shell可以发现能够进入,并且可以执行命令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值