news 2026/9/18 4:08:42

Android调试桥ADB完全指南:环境配置、高频命令与踩坑排查

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Android调试桥ADB完全指南:环境配置、高频命令与踩坑排查

有多少人第一次拿到Android设备,想装个调试工具,结果在驱动、环境变量、设备授权这一条龙上就卡了一整天?反正我当年折腾的时候,光是adb devices列表里那行unauthorized就差点让我把电脑砸了。后来搞久了才发现,adb这东西说白了就是个“Android设备的远程控制终端”,你电脑上的命令行,就是设备的遥控器。从装机到日常调试,从抓取崩溃日志到冻结系统应用,几乎每个玩机或开发场景都绕不开它。

这篇文章我打算把整个adb工具链从头到尾捋一遍。包括怎么下载、怎么配置环境变量、怎么处理驱动和设备授权,再到高频命令的真实用法(重点是logcat日志抓取、应用管理、文件传输这几个场景),最后附上一份我踩坑无数后整理出的问题排查手册。内容会很长,但保证每一句都是我实际敲过验证过的经验,不是那种抄来抄去的官方文档复读机。

1. 内容整体设计与思路拆解

先说一个很多人没想明白的问题:你装的“adb”,到底是个什么东西。

adb全称是Android Debug Bridge,中文叫“安卓调试桥”。它不是一个单一程序,而是一套客户端-服务端-守护进程的三层架构:你电脑上的adb命令是客户端,电脑后台自动启动的adb server是服务端,Android设备里的adbd守护进程负责接收指令。数据链路走的是USB线或Wi-Fi,默认端口是5037(这是本机里client和server通信用的端口,不少人误以为是连手机用的,其实不是)。

我为什么先讲这个架构?因为后面几乎所有疑难杂症,比如“adb devices有设备但offline”“端口被占用”“连接一会儿就断”,本质都是这三层里某一环出了问题。如果你脑子里有这张结构图,排查问题的思路会清晰得多。

另外一个常见的误区是“adb工具包就是驱动”。经常有人问:“我驱动都装了,怎么还是连不上?”其实adb的工具包是一套命令行程序,驱动是让Windows识别手机硬件用的,两者完全不搭边。很多安卓驱动包里会顺带把adb也集成进去,但反过来,安装了adb工具不等于装好了驱动。所以下载和安装这两个动作,实际要分开做。

还有设备侧的前提要求。Android 4.2.2之后的版本,开发者选项里的“USB调试”开关默认是关闭的,而且进入开发者选项的方式也比较隐蔽——需要在“设置-关于手机”里连续点击7次“版本号”才能解锁。这个门槛看似简单,但我在实际给同事、朋友远程指导时发现,至少有三分之一的人卡在这一步,所以别跳过。

2. 下载工具包与驱动安装实操

2.1 官方工具包下载路径与版本选择

获取adb工具包,首选是Android开发者官网的“platform-tools”压缩包,这是谷歌官方维护的命令行工具集合,里面包含adbfastbootsqlite3这些常用的调试命令。下载页面会自动识别你的操作系统,Windows对应的是ZIP压缩包,下载完解压就能用,不需要“安装”这个动作。

Windows用户下载得到的platform-tools_rXX.X.X-windows.zip,解压后你会看到一个platform-tools文件夹。我要提醒一句:建议解压到一个固定且路径不复杂的位置,比如D:\platform-tools。为什么?因为后面配置环境变量需要引用这个路径,如果随便丢在某个浏览器的下载目录里,找起来很痛苦,而且有些工具的路径解析对中文路径和空格支持不佳,会引出一堆奇怪的bug。

如果你想要更完整的功能(比如后续可能用到DDMS、模拟器管理这些),可以额外下载完整的Android Studio,里面自带SDK Manager,通过SDK Manager也能单独安装platform-tools。但对于只需要adb命令的读者,单独下载platform-tools这个轻量包就足够了,完全没必要为了个调试命令去装一个几个G的IDE。

2.2 通用驱动与厂商专用驱动的选择逻辑

驱动这块,是新手最容易乱的地方。先说结论:优先安装设备厂商官方提供的USB驱动,其次是通用的Google USB Driver。

为什么优先厂商驱动?因为不同厂商的设备PID(Product ID)和VID(Vendor ID)不同,通用的Google驱动虽然覆盖面广,但某些老设备、冷门机型或特殊模式(比如刷机模式)下,没有厂商驱动会直接识别失败。比如老款创维电视打开ADB后需要专门驱动,这种家用电器类的设备,厂商通常只在官方驱动包里才带对应配置,通用驱动直接没戏。

判断驱动是否正常,最简单的方法是打开“设备管理器”,找一个“便携设备”(Portable Devices)或“Android Device”分类。如果设备显示为带黄色感叹号的“未知设备(Unknown Device)”或“ADB Interface”带感叹号,那就是驱动没对。这时候不要瞎下载“驱动精灵”“驱动人生”这类第三方工具,尽量去设备制造商的官方支持页面,搜索你的设备型号加“USB驱动”关键词,下载对应的驱动包安装就行。

安装完成后,拔掉USB线重插一次,等系统重新识别设备。如果还是感叹号,右键选择“更新驱动程序”,手动指向驱动文件所在目录,而不是让系统“自动搜索”,手动指定的成功率更高——因为Windows的自动搜索经常在线寻找后给你装一个不兼容的版本。这个细节我试了很多次,手动指定基本一次成功。

2.3 环境变量配置的两种方法和验证

工具包和驱动都就绪后,为了让adb命令能在任意目录下直接执行,需要配置环境变量。如果不配置,每次使用都要先cd到platform-tools目录下,或者在命令前加上.\adb,这实在太痛苦了。配好环境变量,就像给命令设了个全局快捷键。

Windows的配置流程是:右键“此电脑”->“属性”->“高级系统设置”->“环境变量”。在下方的“系统变量”里找到Path,点击编辑,新建一条,把platform-tools的完整路径(例如D:\platform-tools)添加进去。注意,这里用的是文件夹路径,不是adb.exe文件的路径。确定保存后,务必关掉所有已经打开的终端窗口再重新打开,因为环境变量的读取发生在进程启动时,旧的终端不会拿到新配置。

配置完验证方法:在任意目录下打开cmd或PowerShell,输入adb version。如果能看到类似Android Debug Bridge version 1.0.41Version X.X.X这样的输出,说明环境变量配置成功。如果提示“不是内部或外部命令”,先检查是否在Path中正确添加了路径并重开了终端。我见过有人把路径加分号加错地方的,也见过复制路径时多了个空格导致失败的,这都算老生常谈,但确实容易翻车。

3. 设备连接、授权与权限管理

3.1 USB连接之前的手机端设置检查

连接设备这个环节,我建议你按下面的清单检查一遍,顺序不要乱,乱了你可能会排查半天才发现是最基础的开关没开。

第一,进入“开发者选项”,打开“USB调试”开关。这里有个细节:有些定制ROM(比如部分手机的游戏模式或省电模式)会自动关闭USB调试,所以如果之前连过没问题,突然连不上了,先回开发者选项看一眼开关是否还在开启状态。

第二,如果使用的是小米、vivo、OPPO等品牌的设备,除了USB调试,一般还需要开启“USB安装”这个选项。这是谷歌在Android 4.2后引入的安全机制,未开启状态下,即使adb已授权,设备上安装APK时也可能失败或提示无权限。部分新机型甚至还有“USB调试(安全设置)”之类的高阶选项,用于允许模拟点击和修改权限,按需打开即可。

第三,在插入USB线之前,设备上弹出的“是否允许USB调试?”对话框一定要选择“始终允许使用这台计算机进行调试”,再点击允许。如果不勾选“始终允许”,每次连接都会重复弹窗,且在自动化脚本场景下,一旦没有及时点确认,连接就中断了。这个细节在跑自动化测试时特别致命。

3.2 adb devices、unauthorized、offline状态解析

连接成功后,输入adb devices,命令行会显示一个设备列表。正常状态是device,异常状态主要有两个:unauthorizedoffline

unauthorized出现的原因很直接:设备端没有确认授权弹窗。解决办法是,查看手机屏幕,确认那个对话框并勾选“始终允许”。如果对话框没弹出来,先输入adb kill-server,再输入adb start-server重启adb服务,然后拔插USB线触发重新授权。如果设备已经弹过框但依然unauthorized,试试撤销所有USB调试授权(在开发者选项里):撤销后重新插线,它会再次弹出授权框,这次记得一定勾选“始终允许”。

offline的含义则是设备连接了但通信异常。常见原因有三个:一是USB线质量差或接口供电不足(尤其是前置USB接口),解决方法是换一根原装或至少是能传数据的数据线,直接插到机箱后置USB口试试;二是adb server版本和设备端的adbd版本不匹配,输入adb kill-server后重启server,它会重新尝试探测设备;三是电脑端驱动异常或存在多个adb进程冲突,检查任务管理器是否残留多个adb.exe,全部结束后重连。

还有一个冷门但实际遇到过的原因:如果电脑上安装过某些手机助手类软件(比如各种“XX助手”),它们自带的旧版adb服务会和官方platform-tools抢5037端口,导致设备显示offline或直接cannot connect to daemon。这时候要么彻底卸载这些助手,要么在环境变量里确保官方platform-tools的路径排在前列,让系统加载的是官方版本的adb。

3.3 无线调试连接配置与速查

USB线并不是adb的唯一连接方式。Android 11及以上系统正式支持了无线调试(Wireless Debugging)功能,Android 10及以下系统也可以通过TCP/IP方式连接。这对那些USB接口损坏的设备,或者需要远程调试的场景来说,是解放生产力的配置。

Android 11及以上的无线连接步骤:先在开发者选项里打开“无线调试”,然后进入“无线调试”设置页,记录下设备IP地址和配对端口。电脑上执行adb pair ip:port,输入设备屏幕上显示的6位配对码,配对成功后,再执行adb connect ip:port(这里的端口和配对端口不同,需要从设备界面读取)。整个过程不需要USB线,很方便。

Android 10及以下的老设备无线连接方式:先USB连接一次,执行adb tcpip 5555让设备开启5555端口的TCP监听模式,然后拔掉USB线,执行adb connect 设备IP:5555。这里需要注意,adb tcpip设置只在本次开机有效,设备重启后该设置会丢失,需要重新设置。此外,确保电脑和设备在同一个局域网内,如果路由器开启了AP隔离(Guest网络功能),也可能连不上。

无线连接唯一的坑是稳定性:USB线连接时,线断了会立刻反馈;而Wi-Fi连接时,网络波动可能导致命令卡住几秒甚至十几秒才报错。在批量传输大文件的场景,我更建议老老实实用USB线,无线真的容易传一半就断。

4. adb常用命令分类详解

4.1 设备信息查询与系统管理命令

把连接问题解决了,剩下的就是命令本身的使用。我习惯把常用命令按“查询类”“操作类”“调试类”分开记忆,这样使用的时候能快速定位。

查询设备信息是排查问题的基础,最常用的几个:

  • adb devices -l:带详细信息的设备列表,可以看到设备型号、设备名,多设备场景下比裸的adb devices好用得多。
  • adb shell getprop ro.product.model:查看设备型号名称,类似ro.product.*开头的属性还有很多,可以按需查询。
  • adb shell getprop ro.build.version.release:查看Android系统版本号。
  • adb shell cat /proc/cpuinfo:查看CPU信息,想要更友好的话用adb shell getprop ro.board.platform查看主芯片平台。
  • adb shell dumpsys battery:查看电池状态,电量、温度、电压都能看到。配合set usb 0参数,可以强制取消USB充电,这在测试充电逻辑时需要用到。

系统管理操作里,adb reboot是重启设备,adb reboot bootloader是进入Bootloader(刷机模式),adb reboot recovery是进入Recovery(恢复模式)。这三个命令别看简单,用错模式可是会误触刷机流程的,建议敲之前想清楚自己要干嘛。

4.2 应用安装、卸载与权限管理

应用管理是adb使用频率最高的场景之一,掌握这些命令可以彻底摆脱图形界面的限制。

安装APK的基础命令是adb install xxx.apk,常见参数有:

  • -r:覆盖安装,保留应用数据,适合安装同签名应用更新包时使用。
  • -d:允许降级安装,也就是安装版本号比当前版本低的应用。直接用-r遇到签名一致但版本更低时会报错,加上-d可强制通过。
  • -t:允许安装测试包(AndroidManifest里设置了testOnly为true的APK)。
  • -g:安装时直接授予所有运行时权限,调试时很好用。在Android 6.0以上,如果不加这个参数,安装后很多权限都是默认关闭的,自动化测试的APP可能直接崩掉。

批量安装多个APK可以用adb install-multiple xxx1.apk xxx2.apk xxx3.apk,但说实话这个命令的报错信息比较难读,真需要批量装东西,我更推荐写一个简单的for循环脚本。

卸载命令是adb uninstall 包名,后面跟的是com.xxx.xxx这样的完整包名,不是应用名称。不确定包名时,先执行adb shell pm list packages查看全量包名列表,配合findstr(Windows)或grep(Linux/macOS)过滤关键词。比如想找微信的包名,执行adb shell pm list packages | findstr tencent,很快就能定位。

pm命令在Android里属于PackageManager的管理入口,前面提过的那几个好友列表,都是这个命令的子集。另外还有几个进阶的:

  • adb shell pm clear 包名:清空应用数据和缓存,相当于恢复出厂设置里的某个应用。出现应用异常闪退时,先用这个命令测试是不是数据导致的,比卸载重装更快的验证方式。
  • adb shell pm disable-user 包名:禁用应用(Android 9及以上支持)。玩机圈常说的“冻结应用”就是这个操作,但要注意某些系统应用被禁用后,可能导致开机异常或系统功能缺失。
  • adb shell cmd appops set 包名 RUN_IN_BACKGROUND ignore:禁止应用后台运行。这个活动是借助AppOps机制限制权限,比直接冻结更加温和,发烧友之间经常用来控制后台驻留。

adb shell pm list packages后面加参数,可以实现不同的过滤维度:-s只查系统应用,-3只查第三方应用,-d只查已禁用应用,组合起来用可以做应用体检。这也是我在做设备安全评估时养成的习惯——先看列表,再逐个排查有没有来路不明的第三方应用。

4.3 文件传输与Shell操作命令

adb的文件传输,本质是走Android的MTP替代方案,速度稳定且不受Windows的“设备存储已满”逻辑干扰。

推文件到设备:adb push 本地路径 设备路径。比如把电脑上的test.apk推到设备的/sdcard/目录,执行adb push test.apk /sdcard/。需要注意设备路径权限问题,推送到/data/local/tmp/通常是可写的,但如果推送到某些受保护的目录(如根目录/)会报Permission denied,需要使用root权限或选择合规的目录。

从设备拉文件:adb pull 设备路径 本地路径。比如把/sdcard/Download/xxx.txt拉到当前目录,执行adb pull /sdcard/Download/xxx.txt ./。批量拉取的话,可以配合adb shell ls先查看目录内容再逐个拉取,但建议直接把整个目录拉下来,adb支持目录级递归传输。

adb shell进入设备内置终端后,你就可以像操作Linux一样管理设备文件系统。常用命令我不一一展开了,只说一个实用技巧:如果设备没有root,/data目录下面的内容你是无权访问的,这时候可以尝试adb shell run-as 包名,以某个可调试应用的身份进入沙箱目录。这个命令对分析自有应用的数据存储结构特别好使,是白盒测试场景下的必备技能。

4.4 日志抓取与logcat深度实践

adb logcat可能是最强大但也是用起来最容易懵的命令之一。很多人只知道执行adb logcat然后满屏滚日志,然后不知道如何处理。实际上logcat是一个参数极其丰富的日志系统,正确使用能帮你精准定位到每个崩溃点。

抓取持久日志到文件:adb logcat > crash.log。但直接这样抓的日志很杂,查看时非常痛苦。我建议先过滤优先级:adb logcat *:E只输出Error级别的日志,*:W是Warning,级别从低到高是V(Verbose)、D(Debug)、I(Info)、W(Warning)、E(Error)、F(Fatal)。加*:S则表示静默,即什么都不输出,经常作为过滤其他模块的“关闭开关”。

有一种很实用的组合:adb logcat *:S ActivityManager:I,意思是只显示ActivityManager模块的Info级别以上日志。这种“白名单+黑名单”的结构化过滤方式,比单纯的*:E要精准得多。同理,想看网络请求可以*:S OkHttp:D,想盯崩溃可以*:S AndroidRuntime:E

清空已有日志:adb logcat -c。在复现bug之前,先清空一次,然后再操作应用,这样抓到的日志就是完整的一手现场,不会混入历史噪声。这个操作逻辑,和排查问题时先adb logcat -c再复现,是一套标准打法。

抓取崩溃日志的另一个关键参数是-b,它用来切换不同的缓冲区。默认的是main缓冲区,但崩溃堆栈往往不在main里,而在crash缓冲区。完整抓取命令是:adb logcat -b crashadb logcat -b all > full.log-b all会同时输出main、system和crash三个缓冲区的内容,唯一缺点是信息量大、文件体积膨胀快,可能几十分钟就上百兆。平时抓bug,我推荐分开抓:先-b crash看堆栈,再-b main看上下文。

日志过滤还可以配合时间戳使用:adb logcat -v time在每行日志前加上时间,这个“带时间戳”特性对分析启动耗时特别有帮助。如果你需要分析性能,加上-v threadtime,它会显示线程ID和精确到微秒的时间,配合Systrace工具可以完成初级的性能诊断。

5. 常见问题与排查技巧实录

5.1 adb unauthorized的完整排查流程

unauthorized这个状态出现太频繁了,值得单独拉出来写一段。

遇到它,不要慌,按下面顺序排查:

  1. 看看手机屏幕是否有授权弹窗。有,勾选“始终允许”,点允许;没有,继续下一步。
  2. 执行adb kill-server然后adb start-server重启服务。此时如果设备没有弹出弹窗,进入手机“开发者选项”,找到“撤销USB调试授权”,点击后重新插线,弹窗会再次出现。
  3. 如果仍然无效,检查电脑上的adb版本是否为官方最新版。某些“手机助手”自带的adb版本过旧,兼容性差,会卡在授权环节,建议彻底卸载这些助手软件。
  4. 还有一种情况:如果设备开启了“仅充电”模式而非“文件传输(MTP)”模式,也可能导致授权对话不出现。把USB连接模式切换成“传输文件”,很多情况下就这么解决了。

最后说一个绕开弹窗授权的终极技巧:有些设备支持修改/data/misc/adb/adb_keys文件来预设公钥。但这需要root权限,而且不同厂商的文件锁策略不同,实际操作起来门槛较高。对普通用户来说,上面四步已经覆盖了99%的场景,没必要为了这个去折腾root。

5.2 日志抓取常见报错与处理速查表

整理一份我平时排查问题时对照查看的报错速查表,方便你直接“抄作业”。

报错信息原因解决办法
device unauthorized未授权或授权失效查看手机弹窗授权,或撤销授权后重新连接
device offline通信异常重启adb服务,换USB口/线,关闭手助类软件
cannot find device驱动未装或USB线不良检查设备管理器,重新安装厂商驱动
insufficient permissions for deviceLinux环境权限问题给adb添加udev规则,或用root身份运行adb start-server
closed连接被设备端中断解锁设备屏幕,部分设备锁屏状态下会断开adb连接
protocol fault (no status)USB通信不稳定换数据线,换USB接口,降低USB2.0速率试试
adb server version doesn't match this client多版本adb冲突卸载多余手机助手,确保系统加载的是官方adb
more than one device/emulator多设备连接但未指定-s 设备序列号参数指定目标设备

第8条多设备场景需要补充说明:执行adb devices拿到设备序列号列表后,操作单个设备必须在命令中加-s参数,例如adb -s 设备序列号 install xxx.apk。不加的话,adb会直接报错拒绝执行,而不是自动挑选设备,这是出于安全考虑的强制约束,习惯之后反而觉得挺靠谱。

5.3 在模拟器中配置adb的注意事项

很多游戏玩家和开发者会用到模拟器(如夜神、MuMu、蓝叠等)。模拟器本质上是一个运行在PC上的虚拟Android系统,而每个模拟器厂商对adb的接入方式都不完全一样。

主流的模拟器在安装完成后,通常自带一个内置的adb,也允许你连接外部adb。但外部adb连接时的端口是模拟器自定义的,比如夜神模拟器的adb端口一般是62001,MuMu可能是7555。连接方式为:adb connect 127.0.0.1:端口号。如果端口不对,执行netstat -ano | findstr 端口也查不到对应监听,连接就会失败。

有些模拟器在设置界面会有“ADB调试”选项,需要你先开启后,外部adb才能连上。另外,模拟器的架构不一定是ARM,很多是x86架构,这会导致安装某些原生ARM应用时出现兼容性问题,报错信息往往是INSTALL_FAILED_NO_MATCHING_ABIS。这种情况在adb层面无解,需要安装兼容包或改用ARM镜像的模拟器,是不少新手绕不过去的弯。

5.4 老设备/智能电视打开ADB的冷门经验

除了手机和平板,很多智能电视、电视盒子也支持adb调试。这一点在玩机圈很有市场,比如老款创维电视如何打开adb就是频繁被搜索的问题。但这类的打开方式五花八门,有的在“设置-关于-版本号”长按,有的在“工厂菜单”里,甚至有的需要用遥控器输特定代码。通用规律是:先尝试进入“设置-关于”,查看有没有“版本号”选项,连续点击7次;如果不行,去应用商店搜一个“ADB开关”类的应用,通过应用来开启调试模式。

智能电视连接adb后,常见的玩法是冻结系统自带广告应用、卸载无用预装软件、强制安装第三方应用。但在这里我必须提醒一句:电视的系统应用比手机更脆弱,很多电视的存储只有8GB,可用空间极小,一旦冻结了核心系统应用,可能导致开机卡Logo或遥控失灵,恢复时又没有方便的Recovery模式,救砖极其痛苦。操作前务必先搞清楚哪些包名是核心系统依赖,先pm disable-user而不是直接卸载,给自己留条退路。

6. 进阶玩法:adb键盘输入与自动化场景

之所以把“adb键盘”这个词条单独拿出来说,是因为它真的解决过我的燃眉之急。adb shell input text命令可以模拟输入文本,比如:

adb shell input text "hello"

这个命令会自动在设备当前聚焦的输入框里输出hello字符串。如果文本里带空格或特殊符号,需要用%s来转义空格(例如hello%sworld),特殊字符如&|>等需要相应的转义处理。这个方法在批量填写表单、自动化测试脚本里特别有用。

但注意,input text模拟的是键盘输入事件,它不会走IME的联想和分词逻辑,中文输入法下执行英文文本没有影响,但中文往往无法直接输入。要输入中文,得借助ADBKeyboard类的第三方输入法工具,通过剪贴板或广播消息注入中文文本,这就属于更底层的自动化方案了。

按键模拟也很常用:adb shell input keyevent 4相当于按一次返回键,adb shell input keyevent 3是回到桌面(Home键),adb shell input keyevent 24是音量加。配合adb shell input swipe x1 y1 x2 y2 duration(模拟滑动)和adb shell input tap x y(模拟点击),基本就可以脱离双手操作设备了。

这些命令组合起来,就是最原始的移动端自动化框架。很多现成的自动化工具底层做的工作,其实和这一套是共通的——只是把坐标执行、条件判断、控件识别包了一层更友好的壳。如果你想理解移动端自动化的原理,亲手用adb把一套操作“点”完,比直接学框架更能建立底层认知。

7. 命令失败时的通用排查思路

最后分享一套命令本身的排查思路。很多人执行adb命令报错后,习惯去搜索引擎复制整个报错信息,但报错信息里真正关键的往往是最后一行。

第一,看报错级别。如果错误是Error,那大概率是执行逻辑出了问题,比如目标位置没有权限、包名写错了、命令参数不合法。如果只是WarningFailure,那只是操作没生效,但adb本身没崩,根据提示调整参数即可。

第二,确认命令的执行环境。有些命令必须在adb shell内执行,有些必须在宿主机上执行。比如adb install是宿主机命令,执行环境是Windows/Linux/macOS;pm install是设备内命令,必须在adb shell里跑。混用会导致pm: not found之类的诡异错误。

第三,注意shell语法兼容性。Windows的cmd和PowerShell对单引号、双引号、转义符的处理不一致,同样的命令在cmd里能跑,在PowerShell里可能直接报语法错误。比如adb shell "echo 'hello world'",在cmd里没问题,在PowerShell里由于引号嵌套规则不同,可能解析失败。遇到这种问题,优先在cmd里复测一遍,或者用--%停止PowerShell的解析。

第四,确认是否有多个adb实例在运行。如果任务管理器里有多个adb.exe进程,一些命令会出现随机失败、卡死或连接到无关设备的情况。统一处理方式是adb kill-server,再逐个结束残留的adb.exe进程,最后重新执行命令。

第五,检查USB调试授权时效。部分系统更新或安全策略会在特定时间后撤销授权,导致unauthorized问题复发。这种情况没有一劳永逸的办法,只能重新授权,习惯就好。

这些思路虽然看起来基础,但我遇到过太多人卡在“不知道为什么失败”的环节,往往就是在执行环境和多实例这两点上没绕出来。我自己的习惯是,如果一条adb命令行为异常,先重启一次adb server,再检查执行环境,再考虑设备端问题——按照这个顺序排查,解决速度最快。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/18 4:06:08

【ComfyUI】Wan2.2 Animate 动作迁移重绘视频生成

今天为大家带来一个ComfyUI强大的 Wan2.2 Animate 全局动作迁移与视频重绘视频生成。该工作流融合了视频帧重建、动作迁移、图像重绘和音频合成等多种 AI 技术,打造了一个可以将参考视频与图像进行动作与风格融合,并生成高质量新视频的全流程解决方案。通过视觉特征提取、模型…

作者头像 李华
网站建设 2026/9/18 4:05:57

阶段性开发总结写作:从流水账到决策文档

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/18 4:05:50

用计算机视觉打造AI鱼缸:基于YOLO的鱼种识别与行为分析实战

1. 从“盯着鱼缸发呆”到立项:MiroFish 想解决的三个真实问题养鱼这件事,入门靠热情,坚持下来靠的是耐心。我养了三年观赏鱼,前两年还算从容,后面开始频繁出差,问题就来了:明明出门前换好了水、…

作者头像 李华
网站建设 2026/9/18 4:05:26

【ComfyUI】SD1.5 + ControlNet 线稿搭配瓷砖融合动漫转真人

今天给大家演示一个动漫人物转真人图像的 ComfyUI 工作流。这个流程不仅可以高度还原角色的外貌特征,还能提升皮肤纹理细节、融合二次元线条,并通过精调的ControlNet控制面板进行线稿引导,实现动画风格到写实风格的自然过渡。无论你是想做动漫头像的现实化,还是在AI绘图中复…

作者头像 李华