
网罗开发 (小红书、快手、视频号同名)
大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。
图书作者:《ESP32-C3 物联网工程开发实战》
图书作者:《SwiftUI 入门,进阶与实战》
超级个体:COC上海社区主理人
特约讲师:大学讲师,谷歌亚马逊分享嘉宾
科技博主:华为HDE/HDG
我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验 。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告,同时也会提供产品优缺点分析、横向对比,并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。
展菲:您的前沿技术领航员
👋 大家好,我是展菲!
📱 全网搜索"展菲",即可纵览我在各大平台的知识足迹。
📣 公众号"Swift社区",每周定时推送干货满满的技术长文,从新兴框架的剖析到运维实战的复盘,助您技术进阶之路畅通无阻。
💬 微信端添加好友"fzhanfei",与我直接交流,不管是项目瓶颈的求助,还是行业趋势的探讨,随时畅所欲言。
📅 最新动态:2025 年 3 月 17 日
快来加入技术社区,一起挖掘技术的无限潜能,携手迈向数字化新征程!
文章目录
-
- 前言
- 问题背景
- 模拟器启动黑屏无响应
-
- 最简单的解决方案:重启和清理缓存
- [检查模拟器版本和 API 版本匹配](#检查模拟器版本和 API 版本匹配)
- 检查设备类型匹配
- 检查硬件加速设置
- 检查电脑配置
- 重新安装模拟器组件
- 真机调试提示"设备未授权"
-
- [开启开发者模式和 USB 调试](#开启开发者模式和 USB 调试)
- 连接电脑并授权
- [检查 ADB 连接状态](#检查 ADB 连接状态)
- [重置 USB 调试授权](#重置 USB 调试授权)
- [检查 USB 驱动](#检查 USB 驱动)
- 检查端口占用
- 使用无线调试(可选)
- 实际应用场景
- 调试技巧和最佳实践
- 总结
前言
最近在开发鸿蒙应用的时候,遇到了两个让人头疼的问题:一个是模拟器启动后黑屏,怎么点都没反应;另一个是真机调试时提示"设备未授权",连不上设备。刚开始以为是代码问题,后来才发现是开发环境配置的问题。
相信很多鸿蒙开发者都遇到过类似的问题:模拟器启动不了,或者真机调试连不上。这些问题虽然看起来简单,但如果不熟悉,可能会折腾很久。今天我们就来聊聊这些常见问题的解决方案,以及如何在实际开发中避免这些问题。
问题背景
在开发鸿蒙应用时,我们通常需要用到两种调试方式:模拟器调试和真机调试。模拟器调试适合快速开发和测试,真机调试适合验证实际设备上的表现。但不管是哪种方式,都可能遇到各种问题。
最常见的问题有两个:
- 模拟器启动后黑屏无响应:模拟器能启动,但屏幕是黑的,点击没反应,应用也跑不起来
- 真机调试提示"设备未授权":手机连上电脑后,DevEco Studio 提示设备未授权,无法调试
这些问题虽然不影响代码编写,但会严重影响开发效率。让我们一个个来看这些问题和解决方案。
模拟器启动黑屏无响应
模拟器启动后黑屏是一个很常见的问题,可能的原因有很多。让我们从最简单的开始排查。
最简单的解决方案:重启和清理缓存
很多时候,模拟器黑屏只是因为临时卡住了,或者 DevEco Studio 的缓存出了问题。这时候最简单的解决方法就是:
第一步:关闭模拟器和 DevEco Studio
先把模拟器完全关闭,然后退出 DevEco Studio。不要只是最小化窗口,要完全退出程序。
第二步:重新打开 DevEco Studio
重新打开 DevEco Studio,等待它完全加载完成。
第三步:清理缓存并重启
在 DevEco Studio 中,点击菜单栏的 File → Invalidate Caches / Restart,选择 Invalidate and Restart。这会清理所有的缓存文件,并重启 IDE。
这个过程可能需要几分钟,但很多时候能解决配置乱掉导致的问题。重启后,再试试启动模拟器,看看是否正常。
检查模拟器版本和 API 版本匹配
如果重启后还是黑屏,那可能是版本不匹配的问题。这是最常见的原因之一。
问题原因:
DevEco Studio 中的模拟器版本必须和你的项目使用的 API 版本一致。比如你的项目使用的是 API 10,那模拟器也必须是 API 10 的版本。如果版本不匹配,模拟器可能能启动,但会出现黑屏或者无法正常运行应用。
检查方法:
-
检查项目 API 版本:
- 打开项目的
build-profile.json5文件 - 查看
apiCompatibility字段,比如"apiCompatibility": 10
- 打开项目的
-
检查模拟器 API 版本:
- 在 DevEco Studio 中,点击
Tools→Device Manager - 查看已安装的模拟器列表,每个模拟器都会显示对应的 API 版本
- 在 DevEco Studio 中,点击
解决方法:
如果版本不匹配,有两种解决方案:
-
安装匹配的模拟器:
- 在
Device Manager中,点击New Emulator - 选择与项目 API 版本匹配的模拟器镜像
- 下载并安装
- 在
-
修改项目 API 版本(不推荐):
- 修改
build-profile.json5中的apiCompatibility字段 - 但这样可能会导致代码不兼容,所以不推荐
- 修改
检查设备类型匹配
除了 API 版本,设备类型也要匹配。
问题原因:
如果你的项目配置的是手机应用,但启动的是平板模拟器,可能会导致黑屏或者布局错乱。虽然不一定黑屏,但可能会出现其他问题。
检查方法:
-
检查项目设备类型:
- 打开
module.json5文件 - 查看
deviceTypes字段,比如"deviceTypes": ["phone"]
- 打开
-
检查模拟器设备类型:
- 在
Device Manager中查看模拟器的设备类型(Phone、Tablet、TV 等)
- 在
解决方法:
确保模拟器的设备类型和项目配置的设备类型一致。如果项目是手机应用,就启动手机模拟器;如果是平板应用,就启动平板模拟器。
检查硬件加速设置
模拟器需要硬件加速才能正常运行,如果硬件加速没开启,模拟器可能会启动失败或者黑屏。
检查 BIOS 设置:
-
重启电脑,进入 BIOS:
- 不同品牌的电脑进入 BIOS 的方式不同,通常是开机时按
F2、F10、Del等键 - 具体按键可以在电脑启动时看到提示
- 不同品牌的电脑进入 BIOS 的方式不同,通常是开机时按
-
开启虚拟化技术:
- Intel 处理器:找到
Intel Virtualization Technology或VT-x,设置为Enabled - AMD 处理器:找到
AMD-V或SVM Mode,设置为Enabled
- Intel 处理器:找到
-
保存并退出 BIOS
检查 Windows 功能:
在 Windows 系统中,还需要确保 Hyper-V 或 Windows Hypervisor Platform 已启用:
- 打开"控制面板" → "程序" → "启用或关闭 Windows 功能"
- 找到"Hyper-V"或"Windows Hypervisor Platform"
- 勾选并确定,重启电脑
调整模拟器内存设置:
模拟器的内存设置也很重要,如果内存太小,可能会导致黑屏:
- 在
Device Manager中,选择你的模拟器 - 点击
Edit按钮 - 调整
RAM设置,建议至少 2GB,如果电脑配置好可以设置更大 - 保存设置
检查电脑配置
如果电脑配置太低,可能无法正常运行模拟器。
最低配置要求:
- CPU:支持虚拟化的多核处理器
- 内存:至少 8GB(推荐 16GB)
- 硬盘:至少 20GB 可用空间
- 显卡:支持硬件加速
优化建议:
- 关闭不必要的程序:运行模拟器时,关闭其他占用资源的程序
- 只启动一个模拟器:不要同时启动多个模拟器
- 降低模拟器分辨率:如果电脑配置较低,可以降低模拟器的分辨率
- 使用真机调试:如果电脑配置实在不够,可以考虑使用真机调试
重新安装模拟器组件
如果以上方法都试过了,还是黑屏,那可能是模拟器组件损坏了。
解决方法:
-
删除模拟器组件:
- 在 DevEco Studio 中,点击
File→Settings(Windows)或Preferences(Mac) - 找到
HarmonyOS SDK设置 - 找到模拟器相关的组件,点击删除
- 在 DevEco Studio 中,点击
-
重新下载安装:
- 在
Device Manager中,点击New Emulator - 选择需要的模拟器镜像
- 重新下载并安装
- 在
这个过程可能需要一些时间,但通常能解决组件损坏导致的问题。
真机调试提示"设备未授权"
真机调试时提示"设备未授权"也是一个很常见的问题。这个问题的核心是让手机"认识"你的电脑,允许电脑通过 ADB 连接手机。
开启开发者模式和 USB 调试
这是最基础也是最重要的一步。
第一步:开启开发者模式
- 打开手机的"设置"
- 找到"关于手机"(可能在"系统"或"系统与更新"下)
- 找到"版本号"或"HarmonyOS 版本"
- 连续点击版本号 5-7 次,直到提示"您已处于开发者模式"
第二步:开启 USB 调试
- 返回"设置"主界面
- 找到"系统和更新" → "开发人员选项"(开启开发者模式后会出现)
- 找到"USB 调试"选项,打开它
- 找到"仅充电模式下允许 ADB 调试"选项,也打开它
这两个选项都很重要:
- USB 调试:允许电脑通过 ADB 连接手机
- 仅充电模式下允许 ADB 调试:即使手机只充电不传数据,也允许 ADB 连接
连接电脑并授权
开启 USB 调试后,就可以连接电脑了。
第一步:连接电脑
- 用数据线连接手机和电脑
- 手机可能会弹出 USB 连接方式选择,选择"传输文件"或"仅充电"都可以(因为我们已经开启了"仅充电模式下允许 ADB 调试")
第二步:授权电脑
- 连接后,手机会弹出一个授权对话框,询问"是否允许 USB 调试?"
- 勾选"始终允许这台计算机进行调试"(这个很重要,下次连接就不需要再授权了)
- 点击"确定"
如果授权成功,DevEco Studio 应该就能识别到设备了。
检查 ADB 连接状态
如果授权后还是提示未授权,可以检查一下 ADB 的连接状态。
使用 DevEco Studio 终端检查:
- 在 DevEco Studio 中,打开底部的
Terminal标签 - 输入命令:
adb devices - 查看输出结果
正常的输出应该是:
List of devices attached
ABC123456789 device
其中 ABC123456789 是设备的序列号,device 表示设备已授权并可以调试。
如果显示 unauthorized:
List of devices attached
ABC123456789 unauthorized
这表示设备未授权,需要重新授权。
解决方法:
-
重启 ADB 服务:
bashadb kill-server adb start-server -
重新连接设备:
- 拔掉数据线
- 等待几秒
- 重新插入数据线
- 手机上重新授权
-
再次检查:
bashadb devices
如果还是 unauthorized,继续看下面的解决方案。
重置 USB 调试授权
如果重启 ADB 后还是不行,可以尝试重置授权。
在手机上重置授权:
- 打开"设置" → "系统和更新" → "开发人员选项"
- 找到"撤销 USB 调试授权"选项
- 点击撤销所有授权
重新连接并授权:
- 拔掉数据线
- 重新插入数据线
- 手机上会再次弹出授权对话框
- 勾选"始终允许这台计算机进行调试"
- 点击"确定"
这样应该就能解决问题了。
检查 USB 驱动
如果手机连接电脑后,电脑无法识别设备,可能是 USB 驱动的问题。
Windows 系统:
-
检查设备管理器:
- 右键"此电脑" → "管理" → "设备管理器"
- 查看是否有"未知设备"或带黄色感叹号的设备
-
安装驱动:
- 去华为/荣耀官网下载对应手机的 USB 驱动
- 或者使用华为手机助手,它会自动安装驱动
Mac 系统:
Mac 系统通常不需要额外安装驱动,但如果连接不上,可以尝试:
- 使用原装数据线
- 尝试不同的 USB 接口
- 重启电脑
检查端口占用
ADB 默认使用 5037 端口,如果这个端口被占用,可能会导致连接问题。
检查端口占用(Windows):
bash
netstat -ano | findstr :5037
如果端口被占用,会显示占用该端口的进程 ID。
解决方法:
-
关闭占用端口的程序:
- 任务管理器中找到对应的进程
- 结束进程
-
检查杀毒软件:
- 有些杀毒软件可能会占用 5037 端口
- 临时关闭杀毒软件试试
-
重启 ADB:
bashadb kill-server adb start-server
使用无线调试(可选)
如果 USB 连接一直有问题,可以尝试使用无线调试。
前提条件:
- 手机和电脑在同一个 Wi-Fi 网络下
- 手机已开启 USB 调试(至少第一次需要通过 USB 连接)
步骤:
-
通过 USB 连接并授权(第一次必须)
-
开启无线调试 :
bashadb tcpip 5555 -
查看手机 IP 地址 :
- 设置 → WLAN → 点击当前连接的 Wi-Fi
- 查看 IP 地址
-
通过 Wi-Fi 连接 :
bashadb connect 手机IP:5555 -
断开 USB 连接,现在可以通过 Wi-Fi 调试了
实际应用场景
让我们看看几个实际应用场景,了解如何在实际开发中应用这些解决方案。
场景一:新项目首次调试
当你创建一个新的鸿蒙项目,第一次调试时:
可能遇到的问题:
- 模拟器版本不匹配
- 模拟器黑屏
- 真机未授权
解决流程:
-
检查项目配置:
- 查看
build-profile.json5中的 API 版本 - 查看
module.json5中的设备类型
- 查看
-
准备调试环境:
- 如果使用模拟器:确保安装了匹配版本的模拟器
- 如果使用真机:开启开发者模式和 USB 调试
-
启动调试:
- 选择正确的设备
- 点击运行按钮
-
排查问题:
- 如果模拟器黑屏:按照上面的步骤排查
- 如果真机未授权:按照授权流程操作
场景二:团队协作中的环境问题
在团队协作中,不同成员的开发环境可能不一样:
可能遇到的问题:
- 有些成员能正常调试,有些不能
- 同样的代码在不同电脑上表现不同
解决方案:
-
统一开发环境:
- 统一 DevEco Studio 版本
- 统一 HarmonyOS SDK 版本
- 统一模拟器版本
-
文档化配置:
- 在项目 README 中记录开发环境要求
- 记录常见问题和解决方案
-
提供检查脚本:
- 提供脚本检查开发环境是否正确配置
- 自动检查 API 版本、设备类型等
场景三:持续集成中的调试问题
在 CI/CD 流程中,可能需要自动化测试:
可能遇到的问题:
- CI 环境中无法启动模拟器
- 真机连接不稳定
解决方案:
-
使用云测试平台:
- 使用华为云测试服务
- 或者第三方云测试平台
-
配置 CI 环境:
- 确保 CI 环境支持虚拟化
- 配置好 ADB 和驱动
-
添加重试机制:
- 如果连接失败,自动重试
- 记录详细的错误日志
调试技巧和最佳实践
除了解决这些问题,还有一些调试技巧和最佳实践:
使用日志调试
在代码中添加日志,可以帮助定位问题:
typescript
// 在代码中添加日志
hilog.info(0x0000, 'MyTag', '应用启动成功');
hilog.error(0x0000, 'MyTag', '发生错误: %{public}s', errorMessage);
在 DevEco Studio 的 Log 窗口中可以查看日志输出。
使用断点调试
设置断点可以逐步执行代码,查看变量值:
- 在代码行号左侧点击,设置断点
- 以 Debug 模式运行应用
- 应用会在断点处暂停
- 可以查看变量值、调用栈等
检查网络连接
如果应用需要网络连接,确保:
- 模拟器可以访问网络(检查网络设置)
- 真机可以访问网络(检查 Wi-Fi 或移动数据)
- 防火墙没有阻止连接
清理构建缓存
如果遇到奇怪的构建问题,可以尝试清理缓存:
- 点击
Build→Clean Project - 点击
Build→Rebuild Project
检查依赖版本
确保所有依赖的版本都是兼容的:
- 检查
oh-package.json5中的依赖版本 - 确保依赖版本与 HarmonyOS SDK 版本兼容
总结
调试鸿蒙应用时遇到的问题,大多数都是环境配置的问题。总结一下:
模拟器黑屏问题:
- 先尝试重启和清理缓存
- 检查模拟器版本和 API 版本是否匹配
- 检查设备类型是否匹配
- 确保硬件加速已开启
- 检查电脑配置是否足够
- 如果都不行,重新安装模拟器组件
真机未授权问题:
- 开启开发者模式和 USB 调试
- 连接电脑并授权
- 检查 ADB 连接状态
- 如果不行,重置授权
- 检查 USB 驱动和端口占用
关键点总结:
- 版本匹配很重要:模拟器版本、API 版本、设备类型都要匹配
- 硬件加速必须开启:模拟器需要硬件加速才能正常运行
- 授权流程要完整:真机调试需要完整的授权流程
- 按顺序排查:从简单到复杂,按顺序排查问题
- 文档化问题:记录遇到的问题和解决方案,方便以后参考