adb使用指南

发布于:2025-08-13 ⋅ 阅读:(14) ⋅ 点赞:(0)


提示:以下是本篇文章正文内容,,参考下面博客:
程序员–青青

一、介绍

  1. ADB(Android Debug Bridge)是Android官方提供的多功能命令行工具,主要用于连接计算机与Android设备(包括模拟器和真机),实现设备调试与管理。其核心功能包括:设备连接管理(通过USB或Wi-Fi建立通信并查看设备状态);应用调试(安装/卸载APK、启动Activity、捕获崩溃日志);文件传输(通过push/pull命令在设备与电脑间传输文件);日志分析(实时查看logcat日志或过滤特定错误);系统控制(重启设备、进入Recovery模式、模拟用户输入如点击或文本输入);以及高级功能如端口转发、屏幕录制、性能监控(CPU/内存数据)等。
  2. 连接:
    可以通过模拟器连接,也可以通过数据线连接,通过数据线连接时,手机进入“开发者选项”,打开“usb调试”。
    不同品牌安卓机型,首次打开“开发者选项”方式不一样,大多是双击手机版本号3~5次,会toast提醒“开发者模式已打开”,具体打开方式可根据手机品牌进行百度查询

二、连接

一、有线连接方式

  1. 基础准备

    • 确保电脑已安装ADB工具(包含在Android SDK的platform-tools中)并配置环境变量。
    • 使用原装或可靠的数据线连接手机与电脑。
  2. 手机端设置

    • 进入手机【设置】→【关于手机】,连续点击【版本号】7次激活开发者模式。
    • 返回设置,开启【开发者选项】→【USB调试】,并在连接时选择【MTP(多媒体传输)】模式。
  3. 验证连接

    • 电脑端执行命令:
      adb devices
      
      若显示设备序列号且状态为device,则连接成功;若为unauthorized,需在手机弹出的授权窗口中点击允许。

二、无线连接方式

Android 10及以下版本
  1. 初始有线配置

    • 先用USB线连接手机和电脑,执行:
      adb tcpip 5555  # 启用TCP/IP模式并指定端口(可自定义)
      
      成功后拔掉数据线。
  2. 获取设备IP

    • 在手机【WLAN设置】中查看IP地址,或执行:
      adb shell ip addr show wlan0  # 查看wlan0接口的IP。
      
  3. 无线连接

    • 电脑端运行:
      adb connect <设备IP>:5555  # 如:adb connect 192.168.1.100:5555
      
      使用adb devices确认连接状态。
Android 11及以上版本
  1. 直接无线配对
    • 手机端开启【开发者选项】→【无线调试】,选择【使用配对码配对】或扫描二维码。
    • 电脑端执行:
      adb pair <IP:配对端口>  # 输入手机显示的6位数配对码
      adb connect <IP:调试端口>  # 连接成功后端口可能与配对端口不同。
      

三、指令

1、设备连接管理

  • 查看adb版本
adb version
  • 查看已连接设备列表
adb devices
  • 无线连接设备
adb connect <IP:端口> 
  • 断开设备连接
adb disconnect
  • 启动服务
adb start_server
  • 终止服务
adb kill-server

2、应用调试

  • 安装apk
adb install <APK路径>
  • 覆盖安装(升级)
adb install -r  <APK路径>
  • 卸载应用
adb uninstall <包名>
  • 列出所有应用
adb shell pm list packages
  • 强制退出该应用
adb shell am force-stop <包名>

3、文件传输

  • 上传到设备
adb push <电脑路径> <设备路径>
  • 下载到电脑
adb pull <设备地址> <电脑路径>
  • 查看文件
adb shell ls /sdcard/

4、系统控制

  • 模拟事件
点击命令:adb shell input tap <x> <y>
长按命令:adb shell PressAndHold  <x> <y> <Duration_time_ms>
滑动命令:adb shell input swipe <x1> <y1> <x2> <y2> <Duration_time_ms>
物理按键:adb shell input keyevent <keycode>
		常用keycode列表:3:HOME键
						4:返回键
						24:音量+
						25:音量-
						26:电源键
						82:菜单键
						66:回车键
						67:删除键
文本输入:adb shell input text "要输入的文本"


## 5、高级功能
- 屏幕截图
```c
adb shell screencap -p /sdcard/myphoto.png
  • 录屏
adb shell screenrecord --time-limit 录屏时间s <存放路径/xxx.mp4>
  • 帮助
adb help
  • 管理员权限
adb root
  • shell命令(输入以下命令即可使用linux命令,退出使用exit)
adb shell 
  • 查看已连接设备列表
adb devices

6、日志分析

adb shell logcat -c:清理现有日志
adb shell logcat -v time :输出日志,信息输出在控制台
adb shell logcat -v time > <存放路径\log.txt>:输出日志并保存在本地文件
Ctrl+C:终止日志抓取
adb shell logcat -v time *:E > <存放路径\log.txt>:打印级别为Error的信息
日志的等级:
-v:Verbse(明细)
-d:Debug(调试)
-i:Info(信息)
-w:Warn(警告)
-e:Error(错误)
-f:Fatal(严重错误)
抓取日志的步骤先输入命令启动日志,然后操作 App,复现 bug,再 ctrl+c 停止日志,分析本地保存的文件。
:日志是记录手机系统在运行app时有什么异常的事件
EXCEPTION
也可以把更详细得Anr日志拉取出来:adb shell pull /data/anr/traces.txt <存放路径>


7、其他

  • 获取设备型号
adb shell getprop ro.product.model
  • 获取Android系统版本
adb shell getprop ro.build.version.release
  • 获取设备的序列号(设备号)
adb get-serialno
  • 获取设备屏幕分辨率
adb shell wm size
  • 获取手机内存信息
adb shell cat /proc/meminfo
  • 获取手机存储信息
adb shell df

速查表总结

分类 命令/操作 说明 注意事项
设备连接管理 adb devices 查看已连接设备列表,状态为device表示授权成功 若显示unauthorized,需在设备端点击授权弹窗
adb connect <IP:端口> 无线连接设备(默认端口5555) Android 11+需先通过adb pair配对
adb kill-server / adb start-server 重启ADB服务,解决连接异常 可能需管理员权限
应用调试 adb install -r <APK路径> 覆盖安装应用(升级) 若失败可尝试-d强制安装
adb shell pm list packages -3 仅列出用户安装的应用 需USB调试授权
adb shell am force-stop <包名> 强制停止应用 可能影响后台服务
文件传输 adb push <本地路径> <设备路径> 上传文件到设备(如/sdcard/ 部分系统路径需root权限
adb pull <设备路径> <本地路径> 下载文件到电脑 路径需存在且可读
系统控制 adb shell input tap <x> <y> 模拟点击屏幕坐标 坐标需根据设备分辨率调整
adb shell input keyevent 3 模拟物理按键(如3=HOME键) 键值表需参考官方文档
高级功能 adb shell screencap -p /sdcard/screen.png 截图并保存到设备 需设备存储权限
adb shell screenrecord --time-limit 10 /sdcard/demo.mp4 录屏(默认3分钟,可设时长) 部分设备不支持高比特率录制
日志分析 adb logcat -v time *:E > error.log 记录带时间戳的错误日志到文件 可结合grep过滤关键词
设备信息查询 adb shell getprop ro.product.model 获取设备型号 部分属性可能因厂商定制不同
adb shell dumpsys battery 查看电池状态(如电量、充电方式) 需设备支持

python脚本实例:

import os
import time

def click(x,y):
    os.system(f"adb shell input tap {x} {y}")

def swipe(x1,y1,x2,y2,duration):
    os.system(f"adb shell input swipe {x1} {y1} {x2} {y2} {duration}")

def screen_photo(name):
    os.system(f'adb shell screencap -p /sdcard/{name}.png')
    os.system(f'adb pull /sdcard/{name}.png')

if __name__=='__main__':
    while True:
        swipe(138,1272,668,0,100)
        time.sleep(0.01)
        click(678,1070)
        screen_photo('test')


声明:
本文为本人的学习笔记,旨在记录和分享个人在学习过程中的心得体会和原创代码。由于本人刚入门,对相关知识的理解可能还存在不足之处,文章中难免会有错误或不准确的地方。在此,我诚挚地欢迎各位读者在阅读过程中,如果发现任何问题或有其他建议,随时在评论区或通过其他方式与我交流。我将虚心听取大家的意见,及时修正和改进文章内容,以便更好地学习和成长。感谢大家的关注和支持!



网站公告

今日签到

点亮在社区的每一天
去签到