☰
adb 1.0.41版本详解:安装、无线调试与常见报错避坑指南
2026/10/11 2:26:07 网站建设 项目流程

简介:adb 1.0.41 是 Android Debug Bridge(安卓调试桥)工具链中的特定发行版本,面向安卓开发者与有技术基础的高级用户,用于在命令行环境下完成应用安装调试、设备 Shell 访问、文件复制及硬件信息查询等操作。该压缩包即 platform-tools 组件,共 15 个文件、5.93MB,以 9 个 exe 可执行程序为核心,辅以 3 个 dll 运行库、txt 说明文档、conf 与 properties 配置文件;解压后无需额外安装,可直接调用 adb、fastboot 等常用调试命令。当前已有 1400 人学习下载,反映出这一版本在实际设备调试中的广泛适用性。对开发者而言,这套工具链可用于抓取 logcat 日志、管理应用进程、传输测试 APK,并结合 fastboot 处理系统分区与固件相关操作;高级用户也能借此完成设备兼容性排查、恢复出厂设置或更新系统分区等底层维护。掌握该版本的工具特性,有助于在实际开发中快速定位问题,减少因环境差异带来的调试阻碍。

1. 这个 adb 版本卡住了多少人的第一步:先看清 1.0.41 是什么

很多人在 Android 开发和自动化测试里遇到的第一个玄学问题,不是代码报错,而是“adb devices 能看到设备,但接下来每条命令都在等设备响应”。排查到最后,原因往往只有一个:本机装着两套不同年代的 platform-tools,而其中一套的 adb 版本和 Android 系统要求的特性不匹配。这里说的 adb 1.0.41 版本,是 Android 11 前后那一代 platform-tools 里最常被提到的版本号,它决定了你能不能顺畅使用无线调试、配对码连接、以及新版系统对 adb 命令的响应方式。

这篇笔记把 adb 1.0.41 从“这个版本号到底指什么”一直讲到“装好之后怎么用、踩过哪些坑”。适合刚入门的安卓开发者、做设备自动化的测试工程师,以及手上有老旧 platform-tools 一直没敢升级的人。读完你能确认自己该不该用这个版本、怎么装、怎么调通无线调试,以及遇到常见的连接报错时从哪里下手。

2. 识别与安装:确认当前 adb 版本并装到 1.0.41

2.1 用 adb version 确认本地版本:输出字段怎么读

动手之前,先确认手里到底是什么版本。这个动作看似多余,但在多人协作或一台机器同时装了 Android Studio、独立 platform-tools、以及某个 IDE 内置 adb 的情况下,版本混乱是常态。我一般会在干净的终端窗口里先跑这条命令:

adb version

正常输出长这样:

Android Debug Bridge version 1.0.41 Version 30.0.0-xxx Installed as /usr/local/bin/adb

逻辑说明:第一行是 adb 协议版本号,也就是标题里的 1.0.41;第二行是 platform-tools 的构建版本,带有具体构建号;第三行是当前 adb 二进制所在路径,用来判断你实际调用的是哪一套。

参数说明:如果你的终端里输出的是 1.0.39、1.0.36 或者其他三位数,说明本机存在旧版 adb。比较常见的坑是 Android Studio 自带的 adb 路径排在 PATH 前面,导致你在终端里敲 adb 时,实际执行的是 IDE 内置的旧版本,而不是你刚下载的新版本。此时可以用which adb或where adb查看路径,确认调用来源。如果输出里提示 adb server 启动失败或端口占用,先adb kill-server再重新执行。

2.2 在 Windows / macOS / Linux 安装 platform-tools 1.0.41

adb 不是独立安装的软件,而是 Android SDK platform-tools 包里的一个可执行文件。1.0.41 这个版本对应 Android 11 时代的 platform-tools 发布周期,常见做法是直接去 Android 开发者官网的 platform-tools 下载页拿官方压缩包。我在 Windows 上通常这样处理:

# 解压到固定目录,比如 C:\platform-tools # 打开 PowerShell,进入解压目录后验证 cd C:\platform-tools .\adb.exe version

逻辑说明:Windows 版 platform-tools 是 zip 压缩包,解压后包含 adb.exe、AdbWinApi.dll、AdbWinUsbApi.dll 这几个关键文件。很多人把 adb.exe 单独拷出来用,结果缺少两个 dll,导致双击没反应或提示“找不到 AdbWinApi.dll”。正确做法是保留整个解压目录,再把目录加入 PATH。

macOS 上我一般用包管理器装,命令更短:

brew install --cask android-platform-tools

逻辑说明:cask 安装会把 adb 软链到 /usr/local/bin 或 /opt/homebrew/bin,省去手动配 PATH 的步骤。安装完成后同样用adb version验证。注意:brew cask 版本更新有延迟,如果装完发现版本不是 1.0.41,可能是你本地 brew 的索引太旧,先brew update && brew upgrade --cask android-platform-tools。

Linux 发行版的官方源里通常也有 adb,但版本分布很乱。Ubuntu 上常见的包名是 google-android-platform-tools-installer,但源里的版本可能落后。我自己的习惯是:如果发行版源里版本足够新,直接用;如果版本低于 1.0.41,就手动下载官方压缩包放到 /opt/android-platform-tools,再写个 PATH 环境变量。

2.3 验证安装路径与 PATH:让 adb 命令在任何目录生效

装完之后必须做一件事:确认终端里敲的 adb 是刚装的这个。我见过太多开发者装完新版本,跑起来还是旧逻辑,最后用adb version一看,路径指向了别处。验证方法分两步走:

# 第一步:定位实际执行的 adb which adb # 第二步:检查 PATH 中相关目录的排序 echo $PATH | tr ':' '\n' | grep -i android

逻辑说明:which adb返回第一个被找到的 adb 路径,echo 命令把 PATH 目录按行输出,方便你查看 Android 相关目录是否靠前。如果 which 结果指向 /usr/bin/adb 或 IDE 自带的目录,说明系统自带 adb 的优先级高于你新装的 platform-tools。

参数说明:调整优先级有两条路。一是修改 shell 配置文件,把 platform-tools 目录加到最前面,比如在 ~/.zshrc 里加export PATH="/opt/android-platform-tools:$PATH";二是直接删除或改名旧版 adb。不建议禁用 Android Studio 自带的 adb,因为 IDE 在某些场景下会用它做设备监听,你只需要保证命令行里调用的是正确版本。验证 PATH 之后,再跑一次adb version,确认输出第一行是 1.0.41。

3. 1.0.41 的设备连接能力:从 USB 到无线调试

3.1 版本差异背后的协议变化:为什么 Android 11 开始依赖 1.0.41 的特征

adb 1.0.41 最值得关注的不是界面或命令数量变化,而是它对 Android 11 无线调试协议的支持。Android 11 之前,无线 adb 依赖设备开启网络调试端口,容易暴露在局域网里;Android 11 之后新增了配对机制:设备屏幕上显示六位配对码和临时端口,电脑端用adb pair建立可信连接,之后才能进入真正的 adb 连接阶段。

旧版 adb 没有实现adb pair这条子命令。如果你拿着 1.0.39 或更早的版本,去连 Android 11 以上设备的无线调试,adb devices 里永远看不到设备。这个版本不是单纯的功能增强,而是协议层面的分水岭。以 adb 1.0.41 为分界线,往上走,配对和连接是两个分离的步骤;往下走,只能靠旧的网络调试方式碰运气。

另一个和版本相关的细节是 mdns 服务发现。新版 adb 启动时会主动在局域网里广播和发现 adb 服务,设备开启无线调试后,电脑端执行adb mdns services能看到设备信息。1.0.41 对这个功能的支持已经稳定,再早的版本则经常出现“能看到设备但连不上”的尴尬。

3.2 开启开发者模式与 USB 调试:首次授权的关键步骤

无论是 USB 还是无线,第一步永远是打开设备上的开发者选项。不同系统版本入口不同,但路径基本类似:设置 → 关于手机 → 连点版本号七次,然后在设置里找到开发者选项,打开 USB 调试。这一步本身不复杂,复杂的是首次授权那一下。设备弹出“允许 USB 调试吗”对话框时,大多数人会顺手勾选“始终允许”,但如果不小心点了拒绝,那就要在设备端撤销授权记录再重试。

# 设备端撤销授权后,建议重启 adb server 再重新连接 adb kill-server adb start-server adb devices

逻辑说明:设备端撤销 USB 调试授权会清除本机的 RSA 密钥信任记录,重启 adb server 可以确保新连接走完整的授权流程。第一次连接时,电脑生成 RSA 密钥对,公钥写入设备,后续连接不再弹窗。

参数说明:adb kill-server和adb start-server是成对使用的,单独执行 kill 后不 start,后续 adb 命令会自动拉起 server,但你最好显式 start 一次,以便观察端口启动是否有异常。adb devices输出里,设备状态为device表示正常,unauthorized表示授权还没过,offline表示连接不稳定。

3.3 无线调试的两个入口:配对码方式与旧式网络调试方式

Android 11 之后的设备,开发者选项里有一个“无线调试”开关,点开后能看到“使用配对码配对设备”。电脑端先执行配对,再执行连接,整个过程不需要 USB 线。标准流程是:

# 第一步:配对,IP:PORT 和配对码都来自设备无线调试界面 adb pair 192.168.1.100:39467 # 输入设备屏幕上显示的六位配对码 # 第二步:连接,注意端口可能和配对端口不同 adb connect 192.168.1.100:39821

逻辑说明:adb pair是 1.0.41 版本标志性的能力,它建立的是信任关系,配对成功后设备会记住这台电脑的签名信息。adb connect才是真正的数据传输通道,端口号是动态的,每次开启无线调试都可能变化。

参数说明:如果设备使用的是 Android 11 之前的系统,或者你手里的 adb 版本过旧不支持 pair,就只能用旧式网络调试方式:设备开 5555 端口,执行adb connect ip:5555。这种方式不校验电脑身份,任何一台在同一局域网的机器都能连上,适合实验室机或模拟器,但不建议在公共网络环境用。我一般优先用配对码方式,因为安全性高一个量级。

3.4 多设备同时连接的设备列表与序列号管理

手头设备一多,adb 命令的默认行为就会造成混乱。adb devices会把所有连接过的设备列出来,包括 offline 和 unauthorized 状态的。这时候如果不指定序列号,adb install、adb shell都会默认往唯一在线设备上跑;一旦有第二台设备上线,命令直接报 “more than one device/emulator”。

# 查看所有设备及详细信息,-l 会显示设备型号 adb devices -l # 指定序列号执行 shell 命令 adb -s R58M1234567 shell getprop ro.product.model

逻辑说明:adb devices -l输出的第一列是设备序列号,USB 连接时序列号通常是设备 ID,无线连接时序列号通常是 IP:PORT 格式。指定序列号操作是自动化脚本的基础,因为脚本里你不知道哪台设备会在什么时候掉线。

参数说明:-s后面跟的序列号必须完全匹配adb devices输出里的第一列。多台设备同时工作时,推荐先写一个变量来保存目标序列号,再把它套进所有 adb 命令里。如果是模拟器场景,序列号形如emulator-5554,用-s emulator-5554同样有效。很多人在这里翻车,是因为复制序列号时把末尾空格也带上了。

4. 常用命令组合与脚本化:把 1.0.41 用出效率

4.1 连接后先跑一遍的设备信息采集命令组

拿到一台新设备后,我习惯先采集完整信息,再决定后续操作。这能避免很多“设备型号不匹配”“系统版本不支持”带来的返工。采集命令不复杂,关键是组合起来一次跑完:

# 采集硬件与系统信息 adb shell getprop ro.product.model adb shell getprop ro.product.manufacturer adb shell getprop ro.build.version.release adb shell getprop ro.product.cpu.abi # 采集屏幕分辨率与密度 adb shell wm size adb shell wm density # 采集电量与充电状态 adb shell dumpsys battery | grep -E "level|status"

逻辑说明:getprop读取的是设备系统属性表,字段名固定,适合脚本解析。wm size输出物理分辨率,wm density输出逻辑密度,这两项决定了 UI 自动化测试里的坐标换算基准。dumpsys battery输出内容很多,用 grep 过滤掉无关字段,只需要电量百分比和充电状态。

参数说明:grep -E "level|status"里的 -E 表示扩展正则,匹配 level 或 status 两个关键词,避免把 dumpsys 里的其他噪音行带进来。如果设备是 ABI 为 armeabi-v7a 的老机器,后面安装 APK 时就得避开只支持 arm64-v8a 的包。这些命令不需要 root 权限,但部分厂商定制系统会阉割 dumpsys 的某些字段,输出为空时不代表命令失败,换cat /sys/class/power_supply/battery/capacity试试。

4.2 安装、卸载、覆盖安装的版本差异与参数

adb install 在 1.0.41 里的行为稳定,但参数你必须记清楚。最常见的是-r,它代表覆盖安装并保留数据;-d允许降级安装;-g安装后自动授予所有运行时权限。这三个参数单独用或组合用,效果差别明显:

# 普通安装 adb install app-release.apk # 覆盖安装,保留应用数据 adb install -r app-release.apk # 允许降级安装 adb install -d app-v1.apk # 安装时授予所有运行时权限 adb install -g app-release.apk # 组合:覆盖安装 + 降级 + 授予运行时权限 adb install -rdg app-release.apk

逻辑说明:-r只在签名一致时有效,如果新旧 APK 的签名key不同,即使加了 -r 也会报 INSTALL_FAILED_UPDATE_INCOMPATIBLE。-d用于把应用从高版本降到低版本,普通安装会提示“安装失败:已安装了更高版本”。-g在 Android 6.0 及以上系统有效,适合测试场景里不想手动点权限弹窗的情况。

参数说明:-rdg三个字母可以合并书写,但顺序不敏感。实际使用中我一般只用-r和-g,-d用得非常克制,因为降级安装可能导致应用数据错乱。卸载命令adb uninstall <packageName>不需要 APK 路径,只认包名,可以用adb shell pm list packages | grep 关键字先查出包名再卸载。

4.3 文件传输与反向端口转发的实用组合

调试过程中经常要把测试数据推送到设备,或者把设备上的日志拉到电脑。adb push和adb pull是基础,但很多人忽略了权限问题。设备上的 /sdcard 目录一般可写,/data 目录则需要 root。反向端口转发adb reverse是我在调试 App 与本地 Web 服务联调时最依赖的功能,它把设备上的端口请求转发到电脑本地的端口:

# 推送文件到设备存储 adb push test-data.json /sdcard/Download/ # 从设备拉取日志文件 adb pull /sdcard/Download/trace.log . # 反向端口转发:设备访问 localhost:8080 等价于访问电脑的 8080 端口 adb reverse tcp:8080 tcp:8080 # 清除反向转发规则 adb reverse --remove tcp:8080

逻辑说明:adb reverse解决的是“手机连不上电脑局域网 IP”的尴尬场景。手机和电脑在同一个局域网时,很多开发者用电脑 IP 加端口访问本地服务,但 NAT、防火墙、路由器隔离都会导致连不上。reverse 之后,设备直接访问自己的 127.0.0.1,数据通过 USB 或无线通道转发到电脑,稳定且不受网络环境影响。

参数说明:tcp:8080 tcp:8080左边的 8080 是设备上的监听端口,右边的 8080 是电脑上的服务端口,两侧端口可以不一样,比如adb reverse tcp:9090 tcp:8080表示设备访问 9090 时转发到电脑的 8080。转发规则在 adb server 重启后失效,脚本里建议先 remove 再 add,保证幂等。

4.4 用 shell 组合查询 CPU 架构、系统版本与电量状态

采集设备信息在自动化测试里经常要序列化输出,一条条命令跑太慢,我一般会把它包成一个函数或脚本。用 bash 写的话,可以这样组织:

#!/bin/bash # 设备信息采集脚本 SERIAL=$1 if [ -z "$SERIAL" ]; then echo "Usage: $0 <device-serial>" exit 1 fi MODEL=$(adb -s $SERIAL shell getprop ro.product.model | tr -d '\r') ANDROID=$(adb -s $SERIAL shell getprop ro.build.version.release | tr -d '\r') ABI=$(adb -s $SERIAL shell getprop ro.product.cpu.abi | tr -d '\r') BATTERY=$(adb -s $SERIAL shell dumpsys battery | grep "level:" | awk -F':' '{print $2}' | tr -d ' ') echo "SERIAL=$SERIAL" echo "MODEL=$MODEL" echo "ANDROID=$ANDROID" echo "ABI=$ABI" echo "BATTERY=$BATTERY%"

逻辑说明:脚本接收序列号作为唯一参数,用-s指定设备,避免多设备时误操作。每条 adb shell 命令的输出都带着\r回车符,用tr -d '\r'去掉,否则赋值给变量后在字符串比较时会出乱子。电量取的是 dumpsys 输出里的 level 字段。

参数说明:awk -F':' '{print $2}'以冒号为分隔符取第二列,然后用tr -d ' '清理空格。这个脚本在 Windows 上跑需要用 Git Bash 或 WSL,直接用 cmd 会因 tr 命令不存在而报错。如果你想在 PowerShell 里跑,改用adb -s $serial shell ...配合Trim()方法处理字符串。

5. adb 1.0.41 的常见报错与避坑记录

5.1 “adb server version” 不匹配:多个 adb 版本共存的冲突

现象:执行任何 adb 命令时,终端输出adb server version (xx) doesn't match this client (yy),紧接着报error: could not install *smartsocket* listener。

原因:本机同时存在两个版本的 adb,先启动的 adb server 占用 5037 端口,后调用的 adb 客户端发现版本不一致,拒绝继续执行。这种情况最常见于 Android Studio 自带 adb、系统包管理器安装的 adb、以及手动下载的 platform-tools 三套并存。

解决:先杀掉现有 server,再定位占用端口的进程,最后用统一版本重新启动。

# 杀掉占用默认端口的旧 server adb kill-server # 检查是谁占用了 5037 端口 netstat -ano | findstr 5037 # 强制结束占用进程(Windows 示例,PID 以实际输出为准) taskkill /PID 12345 /F # 重新启动当前版本 adb 的 server adb start-server

注意:kill-server 只能关闭版本匹配当前客户端的 server;如果 5037 端口被一个独立启动的旧 server 占用,需要先找到进程再强杀。macOS/Linux 上把 netstat 换成lsof -i :5037,kill 命令换成kill -9 <PID>。我在多台机器上踩过这个坑,最稳的办法是只保留一套 platform-tools,Android Studio 里单独指定使用外部 adb 路径,而不是各自维护一份。

5.2 “unauthorized” 授权弹窗不出现或反复要求授权

现象:adb devices能看到设备,但状态是unauthorized,设备上也没有弹出“允许 USB 调试”的对话框;或者弹窗出现了,点允许之后下次连接依然要求授权。

原因:一是电脑端生成的 RSA 密钥和设备端记录的不一致,通常是你换过电脑或复制过 adbkey 文件;二是设备上的“撤销 USB 调试授权”列表里残留了旧记录;三是数据线只支持充电不支持数据传输,授权流程通过数据通道传输时失败。

解决:按顺序处理密钥、授权记录和线材三个层面。

# 删除电脑端已有的 adb 密钥(先备份,删除后旧授权全部失效) mv ~/.android/adbkey ~/.android/adbkey.bak mv ~/.android/adbkey.pub ~/.android/adbkey.pub.bak # 重启 adb server adb kill-server adb start-server # 重新连接后设备会弹窗,点允许并勾选始终允许 adb devices

注意:删除 adbkey 后,电脑对所有设备的授权记录都会作废,需要重新在每台设备上点允许。如果删除密钥后设备还是不弹窗,去设备开发者选项里找到“撤销 USB 调试授权”,点确认后重连。换一根明确标注支持数据传输的数据线也值得试,很多所谓“充电线”真的是只通电源不通数据。

5.3 无线调试掉线与连接超时:防火墙与电量策略的干扰

现象:无线连接后一开始正常,但过几分钟或屏幕熄灭后,adb devices里的设备状态变成offline,或者执行命令直接超时。

原因:无线调试依赖设备端 adb 进程持续在后台运行,厂商定制系统为了省电,会在屏幕熄灭后冻结后台进程或关闭网络访问。另外,电脑端防火墙会把 adb server 监听的随机端口挡掉,导致设备无法回连。

解决:设备端调整电量策略,电脑端放行相关端口。

# 查看无线调试的连接方式 adb connect 192.168.1.100:39821 # 如果状态 offline,尝试断开重连 adb disconnect 192.168.1.100:39821 adb connect 192.168.1.100:39821

注意:设备厂商对无线调试的省电限制不一,常见做法是在开发者选项里开启“保持唤醒状态”,或者在系统设置里允许 adb 相关的系统应用不受电池优化限制。无线调试适合短时操作,长时间跑监控或自动化时,我还是建议用 USB 线,毕竟掉线重连的代价比插一根线高得多。防火墙方面,Windows 首次运行 adb 时会弹“允许访问网络”,如果点了取消,无线调试会一直超时,需要去防火墙高级设置里手动放行 adb.exe。

5.4 64 位系统下无法识别设备:驱动与 USB 端口选择

现象:设备插上电脑后,adb devices里什么都没有,Windows 设备管理器里出现带感叹号的未知设备。

原因:Windows 缺少设备对应的 USB 驱动,或者系统自动安装了错误的驱动版本。偶发情况是设备插在 USB 3.0 端口上但驱动只支持 USB 2.0,也会导致识别失败。

解决:手动指定驱动或更换端口。

# 在设备管理器里找到带感叹号的 ADB 接口设备 # 右键 → 更新驱动程序 → 浏览我的电脑以查找驱动程序 # 让我从计算机上的可用驱动程序列表中选取 # 选择 Android Composite ADB Interface 或对应厂商驱动

注意:设备管理器里手动安装驱动时,一定要看驱动列表里有没有厂商专有的 ADB 接口,比如某些国产设备的 ADB 驱动需要单独安装它的 PC 套件才自带。如果设备管理器里看到的是“Composite ADB Interface”,选择 Android Composite ADB Interface 通常能解决。USB 端口方面,我遇到过几次设备插在前面板 USB 3.0 口上不被识别,换到主板直出的 USB 2.0 口就正常,这属于主板端口供电和信号完整性问题,换端口是最快的排查手段。

5.5 覆盖安装出现 INSTALL_FAILED_UPDATE_INCOMPATIBLE 的处理

现象:用adb install -r覆盖安装应用时报错,终端显示INSTALL_FAILED_UPDATE_INCOMPATIBLE。

原因:设备上已经存在同包名的应用,但签名和当前 APK 不一致,Android 系统拒绝覆盖。常见场景是 debug 签名包覆盖 release 包,或者两台电脑签发的 debug 证书不同。

解决:先卸载再安装,但要注意卸载会清除应用数据。

# 查询现有应用的包名 adb shell pm list packages | grep com.your.app # 卸载现有应用 adb uninstall com.your.app # 重新安装 adb install app-release.apk

注意:adb uninstall会删除应用数据和缓存,如果有不能丢失的本地数据,先adb pull拉出来备份。另外,INSTALL_FAILED_UPDATE_INCOMPATIBLE 还有一个变种是应用是系统应用的一部分,卸载需要 root 权限。我在实际项目里遇到过被测试固件预置了同包名应用的情况,卸载时提示Failure [DELETE_FAILED_INTERNAL_ERROR],那就要看设备厂商是否允许卸载预置应用,不行就刷另一个固件,这不是 adb 能解决的边界。

6. 从 1.0.41 往上走的进阶技巧:无线调试脚本与多设备协作

1.0.41 不是终点,但它足够稳定,适合作为你自动化脚本的底座。我日常用得最顺手的是一套无线调试初始化脚本:把配对、连接、验证三件事串起来,避免每次手动敲命令还记错端口。

#!/bin/bash # 无线调试自动化配对与连接 PAIR_IP=$1 PAIR_PORT=$2 PAIR_CODE=$3 CONNECT_PORT=$4 # 配对 expect -c " spawn adb pair $PAIR_IP:$PAIR_PORT expect \"Enter pairing code:\" send \"$PAIR_CODE\r\" expect eof " # 等待配对生效 sleep 2 # 连接 adb connect $PAIR_IP:$CONNECT_PORT # 验证连接状态 adb -s $PAIR_IP:$CONNECT_PORT shell getprop ro.build.version.release

参数说明:脚本需要四个参数,前三个从设备无线调试界面读取,第四个是连接端口,每次开启无线调试都会变。expect 用来处理 adb pair 的交互式输入提示,如果你不想引入 expect 依赖,也可以手动执行 pair 后再跑连接部分。连接成功后,用getprop验证一次系统版本,确保命令真的能通。

再配合多设备循环安装,批量测试时能省一半时间:

# 对当前所有在线无线设备执行安装 for device in $(adb devices | grep "192.168." | awk '{print $1}') do echo "installing to $device" adb -s $device install -r test.apk done

这套脚本只是起点,你可以把adb shell am start启动指定 Activity、adb shell input模拟点击、adb exec-out screencap截图都串进去,做一个完整的冒烟测试链路。

说句心里话,我在 adb 版本问题上栽过最大的跟头,就是拿 1.0.39 去连 Android 11 设备,折腾了半小时以为是设备问题,最后换到 1.0.41 立刻就好了。版本号这种东西,平时不起眼,卡住你的时候才想起后悔药不存在。所以我的习惯是:新设备或者新系统版本到手,第一件事先确认adb version,不对就立刻换,不做无谓的试错。希望这篇笔记能让你少走一段弯路,也希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询