当前位置: 首页 > article >正文

鸿蒙ADB无线调试实战:从“积极拒绝”到稳定连接的避坑指南

1. 鸿蒙ADB无线调试的常见痛点第一次尝试鸿蒙系统的ADB无线调试时我遇到了那个经典的错误提示cannot connect to 192.168.1.101:5555: 由于目标计算机积极拒绝无法连接。(10061)。这个错误让我折腾了整整一个下午后来才发现问题出在一个非常简单的设置上——没有在仅充电模式下允许ADB调试。很多开发者都会犯这个错误因为大多数教程只告诉你要打开USB调试却很少提到这个关键选项。实际上鸿蒙系统为了安全考虑默认在非数据传输模式下会禁用ADB连接。这就是为什么当你拔掉数据线后ADB连接会立即断开的原因。无线调试相比有线调试有几个明显的优势首先你不再需要频繁插拔数据线这对手机接口的寿命有好处其次可以更自由地操作手机不受线缆长度限制最重要的是调试过程中可以同时给手机充电不用担心电量问题。但前提是你得先跨过这个积极拒绝的坎。2. 完整的环境准备与初始设置2.1 开发者选项的正确开启方式在鸿蒙系统中开启开发者选项有点小技巧。你需要进入关于手机连续点击版本号7次。这个操作和其他安卓手机类似但鸿蒙的界面设计更简洁有些用户可能会忽略这个入口。开启开发者选项后有两个关键设置必须勾选USB调试这是基础选项允许通过ADB连接设备仅充电模式下允许ADB调试这个选项经常被忽略但却是无线调试能否成功的关键我建议在设置完成后重启一次手机确保所有权限和设置完全生效。有时候系统需要重启才能应用这些底层调试权限的变更。2.2 电脑端的环境配置电脑端需要准备好ADB工具。如果你已经安装了Android Studio可以直接使用它自带的ADB。但更推荐单独配置ADB环境变量这样在任何终端窗口都能直接使用adb命令。在Windows上配置ADB环境变量的步骤下载Platform Tools包并解压右键此电脑→属性→高级系统设置→环境变量在系统变量的Path中添加Platform Tools的路径打开cmd输入adb version验证是否配置成功Mac和Linux用户可以通过brew或apt-get直接安装adb工具配置过程更简单。无论哪种方式确保adb版本不要太旧建议使用最新版本以避免兼容性问题。3. 从有线到无线的切换流程3.1 初始有线连接验证先用USB线连接手机和电脑这是无线调试的基础步骤。在终端输入adb devices你应该能看到类似如下的输出List of devices attached ABCDEFG device这个输出表明设备已经被正确识别。如果没有显示设备可能是驱动问题或者USB调试没有真正开启。这时候需要检查手机是否弹出允许USB调试的提示框必须点击允许电脑是否安装了正确的驱动程序USB线是否支持数据传输有些充电线只有充电功能3.2 切换到无线模式的关键命令确认有线连接正常后输入adb tcpip 5555。这个命令的作用是将ADB从USB模式切换到TCP/IP模式并使用5555端口监听。5555是ADB无线调试的默认端口你也可以选择其他未被占用的端口。执行成功后你会看到提示restarting in TCP mode port: 5555这时候就可以拔掉USB线了。但请注意如果之前没有勾选仅充电模式下允许ADB调试此时连接就会断开并出现目标计算机积极拒绝的错误。3.3 建立无线连接获取手机的IP地址在设置→关于手机→状态信息中可以找到然后执行adb connect 192.168.x.x:5555连接成功的提示应该是connected to 192.168.x.x:5555再次运行adb devices确认无线设备已经列出。现在你可以完全摆脱数据线进行调试了。为了测试连接是否真正稳定可以尝试执行一些adb命令比如adb shell进入手机终端。4. 常见问题排查与解决方案4.1 连接被拒绝的多种原因目标计算机积极拒绝这个错误可能有几个不同的原因手机和电脑不在同一局域网确保两者连接的是同一个Wi-Fi网络防火墙阻挡了5555端口需要在电脑防火墙中添加例外规则手机端的ADB服务没有正常运行可以尝试重启手机路由器设置了AP隔离这种设置会阻止局域网内设备互相通信我遇到过最棘手的情况是公司网络有特殊的安全策略自动阻断了ADB连接。这种情况下可以用手机开热点让电脑连接手机的热点网络形成一个简单的局域网。4.2 端口占用与冲突处理5555端口被占用是另一个常见问题。你可以通过以下命令检查端口使用情况在Windows上netstat -ano | findstr 5555在Mac/Linux上lsof -i :5555如果发现端口被占用可以尝试两个解决方案杀死占用端口的进程换用其他端口号比如5556在adb tcpip命令中指定新端口4.3 保持稳定连接的技巧无线调试最让人头疼的就是连接不稳定。以下是我总结的几个实用技巧在路由器设置中为手机分配静态IP避免IP变化导致连接断开使用adb reconnect命令在连接不稳定时快速恢复避免让手机进入深度睡眠模式可以在开发者选项中设置保持唤醒定期检查adb server状态必要时用adb kill-server和adb start-server重启服务对于长期使用无线调试的开发者可以考虑编写一个简单的脚本自动检测和恢复连接。比如这个bash脚本会每隔5分钟检查一次连接状态#!/bin/bash while true; do if ! adb devices | grep -q 192.168.x.x; then adb connect 192.168.x.x:5555 fi sleep 300 done5. 高级配置与优化建议5.1 无线调试的安全考量虽然无线调试很方便但安全性比有线调试低。建议采取以下防护措施只在可信的局域网中使用无线调试调试完成后及时断开连接adb disconnect可以考虑修改默认的5555端口不在公共网络上使用无线调试鸿蒙系统在这方面做得不错每次重启后无线调试功能会自动关闭需要重新通过USB连接激活。这是一个很好的安全特性。5.2 多设备同时调试的管理当需要同时调试多台鸿蒙设备时管理连接就变得复杂了。这里有几个实用技巧为每台设备设置不同的端口号adb -s 设备序列号 tcpip 5566使用alias简化常用命令alias adb-device1adb connect 192.168.1.101:5555 alias adb-device2adb connect 192.168.1.102:5556编写批处理脚本管理多个设备连接5.3 自动化脚本与效率提升对于经常使用无线调试的开发者自动化脚本可以节省大量时间。下面是一个Python脚本示例可以自动完成整个无线调试设置流程import os import subprocess def setup_wireless_debug(ip, port5555): # 检查USB连接 devices subprocess.check_output([adb, devices]).decode() if device not in devices: print(请先用USB线连接设备并启用USB调试) return False # 切换到无线模式 os.system(fadb tcpip {port}) # 建立无线连接 connect_result os.system(fadb connect {ip}:{port}) if connect_result 0: print(f无线调试已建立: {ip}:{port}) return True else: print(连接失败请检查网络和设置) return False # 使用示例 setup_wireless_debug(192.168.1.101)这个脚本可以进一步扩展比如添加错误处理、日志记录等功能使其更加健壮实用。

相关文章:

鸿蒙ADB无线调试实战:从“积极拒绝”到稳定连接的避坑指南

1. 鸿蒙ADB无线调试的常见痛点 第一次尝试鸿蒙系统的ADB无线调试时,我遇到了那个经典的错误提示:"cannot connect to 192.168.1.101:5555: 由于目标计算机积极拒绝,无法连接。(10061)"。这个错误让我折腾了整整一个下午&#xff0c…...

《计算机组成原理》从零设计 CPU:深度拆解现代 RISC 处理器的通用数据通路与控制逻辑

本文内容深度参考了计算机体系结构领域的经典著作——《计算机组成与设计:硬件/软件接口》(Computer Organization and Design,简称 COAD)。 在学习 CPU 设计的过程中,我发现书中对数据通路的刻画极为精妙,…...

解锁专业音效:ViPER4Windows在Windows 10/11的完美运行方案

解锁专业音效:ViPER4Windows在Windows 10/11的完美运行方案 【免费下载链接】ViPER4Windows-Patcher Patches for fix ViPER4Windows issues on Windows-10/11. 项目地址: https://gitcode.com/gh_mirrors/vi/ViPER4Windows-Patcher 厌倦了ViPER4Windows在最…...

基于 Java 和高德开放平台的 WebAPI 集成实践——以“搜索 POI 2.0”为例

在位置服务类应用里,“找点”(Point of Interest,POI)几乎是最常见能力:输入“咖啡”“地铁站”“医院”,返回可用地点列表。 高德开放平台的 WebAPI 在这类场景中非常成熟,而 POI 2.0 相比早期…...

Redis数据库基础

NoSQL(内存/缓存型数据库): 相比于其他的内存/缓存数据库,redis可以方便的实现持久化的功能(保存至磁盘中)一、关系数据库与非关系数据库概述1、关系型数据库关系型数据库是一个结构化的数据库,…...

人工智能之知识蒸馏 第一章 绪论:知识蒸馏的基础认知

人工智能之知识蒸馏 第一章 绪论:知识蒸馏的基础认知 文章目录人工智能之知识蒸馏前言1.1 知识蒸馏的背景与意义1.2 知识蒸馏的核心定义与核心目标1.3 核心框架与学习目标核心流程图解配套代码实现(PyTorch示例)资料前言 1.1 知识蒸馏的背景…...

Java 大厂一面模拟:从活动发奖到消息幂等的分布式一致性拷问

开场说明 这是一场面向 1-3 年 Java 后端候选人或校招高阶候选人的模拟大厂一面,时长约 30 分钟。面试围绕一个典型的电商活动发奖业务场景展开,串联缓存设计、消息可靠性、事务一致性及分布式协调等核心模块。问题设计兼顾广度与深度,重点考…...

机器学习概念及学习目标

机器学习是计算机科学和人工智能的一个子领域,它通过对大量数据进行 分析,自动构建数学模型,从而能够在未见过的数据上进行预测、分类、 决策或生成内容。该算法通过训练数据优化模型参数,使模型能够根据输 入数据生成合理的输出。…...

Jetson orin nano 中安装docker

检查当前系统是否已经安装了 Docker,以及当前安装的版本号。通常在安装前运行它是为了确认是否需要安装: docker --version使用 curl 工具从 Docker 官方网站下载“一键安装脚本”,-fsSL 是一些静默下载和处理重定向的参数,-o ge…...

微型循环氩气金属气雾化制粉设备性价比高服务商

在材料科学的星辰大海中,金属粉末制备是通往3D打印、粉末冶金等前沿领域的基石。然而,对于无数高校课题组和中小型研发企业而言,这块“基石”却重若千钧——动辄三层楼高、耗气如流水、价格动辄百万的传统高压气雾化设备,如同一道…...

新手必读:计算机视觉需要哪些数学基础?如何高效学习线性代数和概率论?

新手必读:计算机视觉需要哪些数学基础?如何高效学习线性代数和概率论? 标签:#计算机视觉、#线性代数、#人工智能、#深度学习、#自然语言处理、#神经网络、#机器学习### 一、痛点引入:为什么很多人怕CV数学?…...

续讲wireshark——ECU测试实践记录

作为高效的以太网报文捕捉,也是测试手里的几件神器之一,wireshark的主要功用就是捕获报文。但也不仅仅只是开始捕获,结束捕获,保存文件,上传钉钉。wireshark入门首先的就是熟悉它的语法。捕获那么多东西,你…...

React 19新特性实战:3种方案实现组件自动刷新优化

在前端应用迭代中,组件不必要的重复渲染一直是性能优化的核心痛点,尤其在数据密集型场景中,频繁刷新不仅会拖慢页面响应速度,还会增加用户设备的资源消耗。React 19针对这一问题推出了多项底层优化,同时提供了更精细化…...

从零构建pix2pix训练集:数据准备与预处理实战

1. 理解pix2pix的数据需求 pix2pix作为经典的图像到图像转换模型,对训练数据有着特殊的要求。我第一次接触这个模型时,最头疼的就是数据准备环节。与普通分类任务不同,pix2pix需要的是成对的图像数据——简单说就是每张输入图片都要有对应的目…...

Kuikly框架性能深度解析:原生级跨端体验如何实现?

Kuikly 是腾讯大前端Oteam基于 Kotlin Multiplatform 开发的跨端框架。其技术设计使其在包体积、渲染效率等核心性能指标上,展现出特定优势。 1. 包体积极致轻量Android平台:AOT模式下仅约300KB iOS平台:约1.2MB Web版本:仅463K…...

手眼标定实战:从千米误差到毫米精度的关键技巧

1. 手眼标定为什么会出现"千米误差"? 第一次做手眼标定的同学,看到结果时可能会吓一跳——明明相机就装在机械臂末端,计算结果却显示两者相距上千米。这种情况我遇到过不止一次,记得有次在汽车装配线上调试,…...

ConvNeXt 系列改进:ConvNeXt 用于视频行为识别:3D ConvNeXt 改进与 Kinetics 实验

引言:当 ConvNeXt 遇上视频 2022年,Facebook AI Research提出的ConvNeXt在计算机视觉领域投下了一颗重磅炸弹。它以纯卷积结构达到了87.8%的ImageNet Top-1精度,在COCO检测和ADE20K分割任务上甚至超越了当时风头正劲的Swin Transformer,证明了“卷积并未死去,只是需要被现…...

[具身智能-364]:LeRobot 不是通用机器人控制系统(如 ROS2 导航/规划栈),而是专注于“感知-决策-动作”端到端学习的 AI 框架。他们共同成为具身智能时代最重要的开源基础设施之一

LeRobot 与 ROS2 并非替代关系,而是“智能生成”与“可靠执行”的双轨架构。二者共同构成了下一代机器人从“实验室原型”走向“物理世界部署”的基石。以下从定位差异、架构协同、融合挑战、演进趋势四个维度进行系统阐述。🔍 一、核心定位与设计哲学&a…...

从SDR#到MATLAB:用RTL-SDR玩转无线信号分析,一份完整的软硬件环境搭建清单

从零构建无线信号分析实验室:RTL-SDR与MATLAB的深度整合指南 无线电波如同城市中看不见的暗流,承载着从广播到卫星通信的各种信息。RTL-SDR这款售价仅20美元左右的USB接收器,配合MATLAB强大的信号处理能力,可以成为探索这片无形领…...

ConvNeXt 系列改进:ConvNeXt 添加 MetaFormer 风格池化层,简化 Block 并保持性能

2026 年的计算机视觉领域呈现出一种有趣的“返璞归真”趋势——在 Vision Transformer 狂飙数年之后,卷积神经网络正以全新的姿态强势回归。根据 Meta AI 近年来发布的官方论文数据,ConvNeXt 已经证明了一个关键事实:不需要 Attention 机制,纯 CNN 依然可以达到甚至超越同级…...

OpenPose Unity插件:5分钟实现实时多人姿态估计

OpenPose Unity插件:5分钟实现实时多人姿态估计 【免费下载链接】openpose_unity_plugin OpenPoses Unity Plugin for Unity users 项目地址: https://gitcode.com/gh_mirrors/op/openpose_unity_plugin 你想为Unity项目添加智能动作识别功能吗?O…...

怎样排查Laravel中Scout全文搜索导致的数据同步报错_队列与底层状态

Scout同步失败主因是底层驱动非2xx响应被静默忽略:启用SCOUT_DEBUGtrue查日志,检查failed_jobs中Guzzle/MeiliSearch异常,精简toSearchableArray字段,避免413/409错误,并手动补同步批量操作数据。Scout 同步失败时队列…...

从LLM到可执行Agent:2026奇点大会指定框架的Tool Calling Pipeline全链路拆解,含4类超时熔断实战配置

第一章:2026奇点智能技术大会:AIAgent工具调用框架 2026奇点智能技术大会(https://ml-summit.org) AIAgent工具调用框架是本届大会发布的开源核心基础设施,旨在统一异构工具接入、语义化意图解析与可验证执行链路。该框架不依赖特定LLM后端&…...

终极Windows内存管理指南:Mem Reduct完整教程与实战配置

终极Windows内存管理指南:Mem Reduct完整教程与实战配置 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memreduct …...

[具身智能-363]:Hugging Face LeRobot 详解:像训练语言模型一样训练机器人

LeRobot 是 Hugging Face 于 2024 年 5 月 正式开源的机器人学习框架,专注于模仿学习(Imitation Learning)与视觉-语言-动作基础模型(VLA)。它的核心目标是:降低机器人 AI 的开发门槛,提供从数据…...

如何配置用户的资源使用上限_MAX_QUERIES_PER_HOUR查询频率限制

MySQL 8.0 仅支持通过 CREATE/ALTER USER ... WITH MAX_QUERIES_PER_HOUR 设置频率限流,按自然小时统计语句总数,不区分类型、不看耗时,不可自定义窗口;GRANT ... WITH 已废弃且逻辑危险,应禁用。MySQL 8.0 怎么给用户…...

【我的Android进阶之旅】Android 7.0报异常:java.lang.SecurityException: COLUMN_LOCAL_FILENAME is deprecated;

之前开发的一个和第三方合作的apk,在之前公司的 Android 5.1 系统的手表上运行正常,今天在公司新开发的 Android 7.1系统的手表上运行的时候,使用 DownloadManager 下载之后,查询下载状态的时候,报了异常 java.lang.SecurityException: COLUMN_LOCAL_FILENAME is depreca…...

【我的Android进阶之旅】快速创建和根据不同的版本类型(Dev、Beta、Release)发布Android 开发库到Maven私服

文章目录 前言 一、准备好要上传的Android 开发库 二、编写上传Maven私服的脚本 2.1 maven_upload.gradle文件 2.2 maven_user.properties配置文件 2.3 maven_pom.properties配置文件 三、执行上传maven的gradle脚本文件 3.1 上传成功 3.2 上传失败 四、使用maven私服中的库文件…...

【我的Android进阶之旅】解决MediaPlayer播放音乐的时候报错: Should have subtitle controller already set

文章目录 一、错误描述 二、错误解决 解决方法一 解决方法二 一、错误描述 刚用MediaPlayer播放Music的时候,看到Log打印台总是会打印一条错误日志,MediaPlayer: Should have subtitle controller already set,虽然程序运行不会出问题,但是看起来红色的日志很显眼,因此决…...

【词汇专栏】 预训练 vs 微调:AI 界最常被混淆的一对概念

预训练 vs 微调:AI 界最常被混淆的一对概念 “我们对模型进行了微调” “这是基于预训练模型的” “我要训练一个专属 AI”……这几句话你一定经常听到,但它们到底有什么区别?谁更厉害?什么时候该用哪个? 一句话定义 …...