网罗开发 (小红书、快手、视频号同名)

  大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。

图书作者:《ESP32-C3 物联网工程开发实战》
图书作者:《SwiftUI 入门,进阶与实战》
超级个体:COC上海社区主理人
特约讲师:大学讲师,谷歌亚马逊分享嘉宾
科技博主:华为HDE/HDG

我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告,同时也会提供产品优缺点分析、横向对比,并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。

展菲:您的前沿技术领航员
👋 大家好,我是展菲!
📱 全网搜索“展菲”,即可纵览我在各大平台的知识足迹。
📣 公众号“Swift社区”,每周定时推送干货满满的技术长文,从新兴框架的剖析到运维实战的复盘,助您技术进阶之路畅通无阻。
💬 微信端添加好友“fzhanfei”,与我直接交流,不管是项目瓶颈的求助,还是行业趋势的探讨,随时畅所欲言。
📅 最新动态:2025 年 3 月 17 日
快来加入技术社区,一起挖掘技术的无限潜能,携手迈向数字化新征程!


前言

最近在开发鸿蒙应用的时候,遇到了两个让人头疼的问题:一个是模拟器启动后黑屏,怎么点都没反应;另一个是真机调试时提示"设备未授权",连不上设备。刚开始以为是代码问题,后来才发现是开发环境配置的问题。

相信很多鸿蒙开发者都遇到过类似的问题:模拟器启动不了,或者真机调试连不上。这些问题虽然看起来简单,但如果不熟悉,可能会折腾很久。今天我们就来聊聊这些常见问题的解决方案,以及如何在实际开发中避免这些问题。

问题背景

在开发鸿蒙应用时,我们通常需要用到两种调试方式:模拟器调试和真机调试。模拟器调试适合快速开发和测试,真机调试适合验证实际设备上的表现。但不管是哪种方式,都可能遇到各种问题。

最常见的问题有两个:

  1. 模拟器启动后黑屏无响应:模拟器能启动,但屏幕是黑的,点击没反应,应用也跑不起来
  2. 真机调试提示"设备未授权":手机连上电脑后,DevEco Studio 提示设备未授权,无法调试

这些问题虽然不影响代码编写,但会严重影响开发效率。让我们一个个来看这些问题和解决方案。

模拟器启动黑屏无响应

模拟器启动后黑屏是一个很常见的问题,可能的原因有很多。让我们从最简单的开始排查。

最简单的解决方案:重启和清理缓存

很多时候,模拟器黑屏只是因为临时卡住了,或者 DevEco Studio 的缓存出了问题。这时候最简单的解决方法就是:

第一步:关闭模拟器和 DevEco Studio

先把模拟器完全关闭,然后退出 DevEco Studio。不要只是最小化窗口,要完全退出程序。

第二步:重新打开 DevEco Studio

重新打开 DevEco Studio,等待它完全加载完成。

第三步:清理缓存并重启

在 DevEco Studio 中,点击菜单栏的 FileInvalidate Caches / Restart,选择 Invalidate and Restart。这会清理所有的缓存文件,并重启 IDE。

这个过程可能需要几分钟,但很多时候能解决配置乱掉导致的问题。重启后,再试试启动模拟器,看看是否正常。

检查模拟器版本和 API 版本匹配

如果重启后还是黑屏,那可能是版本不匹配的问题。这是最常见的原因之一。

问题原因:

DevEco Studio 中的模拟器版本必须和你的项目使用的 API 版本一致。比如你的项目使用的是 API 10,那模拟器也必须是 API 10 的版本。如果版本不匹配,模拟器可能能启动,但会出现黑屏或者无法正常运行应用。

检查方法:

  1. 检查项目 API 版本

    • 打开项目的 build-profile.json5 文件
    • 查看 apiCompatibility 字段,比如 "apiCompatibility": 10
  2. 检查模拟器 API 版本

    • 在 DevEco Studio 中,点击 ToolsDevice Manager
    • 查看已安装的模拟器列表,每个模拟器都会显示对应的 API 版本

解决方法:

如果版本不匹配,有两种解决方案:

  1. 安装匹配的模拟器

    • Device Manager 中,点击 New Emulator
    • 选择与项目 API 版本匹配的模拟器镜像
    • 下载并安装
  2. 修改项目 API 版本(不推荐):

    • 修改 build-profile.json5 中的 apiCompatibility 字段
    • 但这样可能会导致代码不兼容,所以不推荐

检查设备类型匹配

除了 API 版本,设备类型也要匹配。

问题原因:

如果你的项目配置的是手机应用,但启动的是平板模拟器,可能会导致黑屏或者布局错乱。虽然不一定黑屏,但可能会出现其他问题。

检查方法:

  1. 检查项目设备类型

    • 打开 module.json5 文件
    • 查看 deviceTypes 字段,比如 "deviceTypes": ["phone"]
  2. 检查模拟器设备类型

    • Device Manager 中查看模拟器的设备类型(Phone、Tablet、TV 等)

解决方法:

确保模拟器的设备类型和项目配置的设备类型一致。如果项目是手机应用,就启动手机模拟器;如果是平板应用,就启动平板模拟器。

检查硬件加速设置

模拟器需要硬件加速才能正常运行,如果硬件加速没开启,模拟器可能会启动失败或者黑屏。

检查 BIOS 设置:

  1. 重启电脑,进入 BIOS

    • 不同品牌的电脑进入 BIOS 的方式不同,通常是开机时按 F2F10Del 等键
    • 具体按键可以在电脑启动时看到提示
  2. 开启虚拟化技术

    • Intel 处理器:找到 Intel Virtualization TechnologyVT-x,设置为 Enabled
    • AMD 处理器:找到 AMD-VSVM Mode,设置为 Enabled
  3. 保存并退出 BIOS

检查 Windows 功能:

在 Windows 系统中,还需要确保 Hyper-V 或 Windows Hypervisor Platform 已启用:

  1. 打开"控制面板" → “程序” → “启用或关闭 Windows 功能”
  2. 找到"Hyper-V"或"Windows Hypervisor Platform"
  3. 勾选并确定,重启电脑

调整模拟器内存设置:

模拟器的内存设置也很重要,如果内存太小,可能会导致黑屏:

  1. Device Manager 中,选择你的模拟器
  2. 点击 Edit 按钮
  3. 调整 RAM 设置,建议至少 2GB,如果电脑配置好可以设置更大
  4. 保存设置

检查电脑配置

如果电脑配置太低,可能无法正常运行模拟器。

最低配置要求:

  • CPU:支持虚拟化的多核处理器
  • 内存:至少 8GB(推荐 16GB)
  • 硬盘:至少 20GB 可用空间
  • 显卡:支持硬件加速

优化建议:

  1. 关闭不必要的程序:运行模拟器时,关闭其他占用资源的程序
  2. 只启动一个模拟器:不要同时启动多个模拟器
  3. 降低模拟器分辨率:如果电脑配置较低,可以降低模拟器的分辨率
  4. 使用真机调试:如果电脑配置实在不够,可以考虑使用真机调试

重新安装模拟器组件

如果以上方法都试过了,还是黑屏,那可能是模拟器组件损坏了。

解决方法:

  1. 删除模拟器组件

    • 在 DevEco Studio 中,点击 FileSettings(Windows)或 Preferences(Mac)
    • 找到 HarmonyOS SDK 设置
    • 找到模拟器相关的组件,点击删除
  2. 重新下载安装

    • Device Manager 中,点击 New Emulator
    • 选择需要的模拟器镜像
    • 重新下载并安装

这个过程可能需要一些时间,但通常能解决组件损坏导致的问题。

真机调试提示"设备未授权"

真机调试时提示"设备未授权"也是一个很常见的问题。这个问题的核心是让手机"认识"你的电脑,允许电脑通过 ADB 连接手机。

开启开发者模式和 USB 调试

这是最基础也是最重要的一步。

第一步:开启开发者模式

  1. 打开手机的"设置"
  2. 找到"关于手机"(可能在"系统"或"系统与更新"下)
  3. 找到"版本号"或"HarmonyOS 版本"
  4. 连续点击版本号 5-7 次,直到提示"您已处于开发者模式"

第二步:开启 USB 调试

  1. 返回"设置"主界面
  2. 找到"系统和更新" → “开发人员选项”(开启开发者模式后会出现)
  3. 找到"USB 调试"选项,打开它
  4. 找到"仅充电模式下允许 ADB 调试"选项,也打开它

这两个选项都很重要:

  • USB 调试:允许电脑通过 ADB 连接手机
  • 仅充电模式下允许 ADB 调试:即使手机只充电不传数据,也允许 ADB 连接

连接电脑并授权

开启 USB 调试后,就可以连接电脑了。

第一步:连接电脑

  1. 用数据线连接手机和电脑
  2. 手机可能会弹出 USB 连接方式选择,选择"传输文件"或"仅充电"都可以(因为我们已经开启了"仅充电模式下允许 ADB 调试")

第二步:授权电脑

  1. 连接后,手机会弹出一个授权对话框,询问"是否允许 USB 调试?"
  2. 勾选"始终允许这台计算机进行调试"(这个很重要,下次连接就不需要再授权了)
  3. 点击"确定"

如果授权成功,DevEco Studio 应该就能识别到设备了。

检查 ADB 连接状态

如果授权后还是提示未授权,可以检查一下 ADB 的连接状态。

使用 DevEco Studio 终端检查:

  1. 在 DevEco Studio 中,打开底部的 Terminal 标签
  2. 输入命令:adb devices
  3. 查看输出结果

正常的输出应该是:

List of devices attached
ABC123456789    device

其中 ABC123456789 是设备的序列号,device 表示设备已授权并可以调试。

如果显示 unauthorized

List of devices attached
ABC123456789    unauthorized

这表示设备未授权,需要重新授权。

解决方法:

  1. 重启 ADB 服务

    adb kill-server
    adb start-server
    
  2. 重新连接设备

    • 拔掉数据线
    • 等待几秒
    • 重新插入数据线
    • 手机上重新授权
  3. 再次检查

    adb devices
    

如果还是 unauthorized,继续看下面的解决方案。

重置 USB 调试授权

如果重启 ADB 后还是不行,可以尝试重置授权。

在手机上重置授权:

  1. 打开"设置" → “系统和更新” → “开发人员选项”
  2. 找到"撤销 USB 调试授权"选项
  3. 点击撤销所有授权

重新连接并授权:

  1. 拔掉数据线
  2. 重新插入数据线
  3. 手机上会再次弹出授权对话框
  4. 勾选"始终允许这台计算机进行调试"
  5. 点击"确定"

这样应该就能解决问题了。

检查 USB 驱动

如果手机连接电脑后,电脑无法识别设备,可能是 USB 驱动的问题。

Windows 系统:

  1. 检查设备管理器

    • 右键"此电脑" → “管理” → “设备管理器”
    • 查看是否有"未知设备"或带黄色感叹号的设备
  2. 安装驱动

    • 去华为/荣耀官网下载对应手机的 USB 驱动
    • 或者使用华为手机助手,它会自动安装驱动

Mac 系统:

Mac 系统通常不需要额外安装驱动,但如果连接不上,可以尝试:

  • 使用原装数据线
  • 尝试不同的 USB 接口
  • 重启电脑

检查端口占用

ADB 默认使用 5037 端口,如果这个端口被占用,可能会导致连接问题。

检查端口占用(Windows):

netstat -ano | findstr :5037

如果端口被占用,会显示占用该端口的进程 ID。

解决方法:

  1. 关闭占用端口的程序

    • 任务管理器中找到对应的进程
    • 结束进程
  2. 检查杀毒软件

    • 有些杀毒软件可能会占用 5037 端口
    • 临时关闭杀毒软件试试
  3. 重启 ADB

    adb kill-server
    adb start-server
    

使用无线调试(可选)

如果 USB 连接一直有问题,可以尝试使用无线调试。

前提条件:

  • 手机和电脑在同一个 Wi-Fi 网络下
  • 手机已开启 USB 调试(至少第一次需要通过 USB 连接)

步骤:

  1. 通过 USB 连接并授权(第一次必须)
  2. 开启无线调试
    adb tcpip 5555
    
  3. 查看手机 IP 地址
    • 设置 → WLAN → 点击当前连接的 Wi-Fi
    • 查看 IP 地址
  4. 通过 Wi-Fi 连接
    adb connect 手机IP:5555
    
  5. 断开 USB 连接,现在可以通过 Wi-Fi 调试了

实际应用场景

让我们看看几个实际应用场景,了解如何在实际开发中应用这些解决方案。

场景一:新项目首次调试

当你创建一个新的鸿蒙项目,第一次调试时:

可能遇到的问题:

  1. 模拟器版本不匹配
  2. 模拟器黑屏
  3. 真机未授权

解决流程:

  1. 检查项目配置

    • 查看 build-profile.json5 中的 API 版本
    • 查看 module.json5 中的设备类型
  2. 准备调试环境

    • 如果使用模拟器:确保安装了匹配版本的模拟器
    • 如果使用真机:开启开发者模式和 USB 调试
  3. 启动调试

    • 选择正确的设备
    • 点击运行按钮
  4. 排查问题

    • 如果模拟器黑屏:按照上面的步骤排查
    • 如果真机未授权:按照授权流程操作

场景二:团队协作中的环境问题

在团队协作中,不同成员的开发环境可能不一样:

可能遇到的问题:

  1. 有些成员能正常调试,有些不能
  2. 同样的代码在不同电脑上表现不同

解决方案:

  1. 统一开发环境

    • 统一 DevEco Studio 版本
    • 统一 HarmonyOS SDK 版本
    • 统一模拟器版本
  2. 文档化配置

    • 在项目 README 中记录开发环境要求
    • 记录常见问题和解决方案
  3. 提供检查脚本

    • 提供脚本检查开发环境是否正确配置
    • 自动检查 API 版本、设备类型等

场景三:持续集成中的调试问题

在 CI/CD 流程中,可能需要自动化测试:

可能遇到的问题:

  1. CI 环境中无法启动模拟器
  2. 真机连接不稳定

解决方案:

  1. 使用云测试平台

    • 使用华为云测试服务
    • 或者第三方云测试平台
  2. 配置 CI 环境

    • 确保 CI 环境支持虚拟化
    • 配置好 ADB 和驱动
  3. 添加重试机制

    • 如果连接失败,自动重试
    • 记录详细的错误日志

调试技巧和最佳实践

除了解决这些问题,还有一些调试技巧和最佳实践:

使用日志调试

在代码中添加日志,可以帮助定位问题:

// 在代码中添加日志
hilog.info(0x0000, 'MyTag', '应用启动成功');
hilog.error(0x0000, 'MyTag', '发生错误: %{public}s', errorMessage);

在 DevEco Studio 的 Log 窗口中可以查看日志输出。

使用断点调试

设置断点可以逐步执行代码,查看变量值:

  1. 在代码行号左侧点击,设置断点
  2. 以 Debug 模式运行应用
  3. 应用会在断点处暂停
  4. 可以查看变量值、调用栈等

检查网络连接

如果应用需要网络连接,确保:

  1. 模拟器可以访问网络(检查网络设置)
  2. 真机可以访问网络(检查 Wi-Fi 或移动数据)
  3. 防火墙没有阻止连接

清理构建缓存

如果遇到奇怪的构建问题,可以尝试清理缓存:

  1. 点击 BuildClean Project
  2. 点击 BuildRebuild Project

检查依赖版本

确保所有依赖的版本都是兼容的:

  1. 检查 oh-package.json5 中的依赖版本
  2. 确保依赖版本与 HarmonyOS SDK 版本兼容

总结

调试鸿蒙应用时遇到的问题,大多数都是环境配置的问题。总结一下:

模拟器黑屏问题:

  1. 先尝试重启和清理缓存
  2. 检查模拟器版本和 API 版本是否匹配
  3. 检查设备类型是否匹配
  4. 确保硬件加速已开启
  5. 检查电脑配置是否足够
  6. 如果都不行,重新安装模拟器组件

真机未授权问题:

  1. 开启开发者模式和 USB 调试
  2. 连接电脑并授权
  3. 检查 ADB 连接状态
  4. 如果不行,重置授权
  5. 检查 USB 驱动和端口占用

关键点总结:

  1. 版本匹配很重要:模拟器版本、API 版本、设备类型都要匹配
  2. 硬件加速必须开启:模拟器需要硬件加速才能正常运行
  3. 授权流程要完整:真机调试需要完整的授权流程
  4. 按顺序排查:从简单到复杂,按顺序排查问题
  5. 文档化问题:记录遇到的问题和解决方案,方便以后参考
Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐