2. HMI开发环境搭建:Qt/QML环境配置、Android Studio配置、模拟器与真机调试

说实话,座舱HMI开发的第一步,往往就把不少人卡住了。环境配不好,后面全是白搭。我自己带团队这些年,见过太多人因为环境问题浪费一两天时间。今天咱们就把这事彻底理清楚。

2.1 整体环境概览

先看一张图,你就明白整个开发环境长什么样了。

HMI开发环境整体架构 开发机(Windows/Linux) Qt Creator / Android Studio Qt 6.5 + QML 工具链 Android SDK / NDK / Gradle 模拟器层 QEMU / Android Emulator 单屏模拟器 多屏模拟器(扩展屏) 真机调试层 ADB / 串口 / 网络 单块开发板 多屏联调(3屏+) 目标:多屏互动座舱HMI 仪表屏 + 中控屏 + 副驾屏 + 后排屏

这张图里,开发机是核心。左边是工具链,右边是调试目标。我个人习惯把开发机装成双系统——Windows做日常办公,Ubuntu做编译环境。当然,你只用Windows也行,但有些底层库在Linux下更好折腾。

2.2 Qt/QML环境配置

2.2.1 选版本

版本选择这事,我踩过坑。以前用Qt 5.12做项目,结果客户要求支持Wayland,折腾了两周才搞定。现在座舱项目我建议直接用Qt 6.5 LTS或更高版本。

版本 适用场景 我的建议
Qt 5.15 LTS 老项目维护、低配硬件 能不碰就别碰,除非客户指定
Qt 6.2 LTS 稳定过渡版 可以,但QML模块不够全
Qt 6.5 LTS 新项目首选 我目前主力版本
Qt 6.6+ 尝鲜、实验 等第一个补丁再上

2.2.2 安装步骤

别去官网一个个点,直接用Qt在线安装器。我一般这么操作:

  1. 下载qt-unified-linux-x64-online.run(或Windows版)
  2. 运行安装器,登录Qt账号(没有就注册一个)
  3. 选择组件时,勾这几项就够了:
Qt 6.5.3
├── Desktop (必选)
│   ├── Qt 6.5.3 GCC 64-bit
│   └── Qt 6.5.3 Qt WebEngine
├── Android (必选)
│   ├── Qt 6.5.3 Android x86_64
│   └── Qt 6.5.3 Android arm64-v8a
├── Developer and Designer Tools
│   ├── Qt Creator 12.x
│   └── CMake 3.27+
└── Additional Libraries
    ├── Qt Quick 3D (座舱3D效果用)
    ├── Qt Multimedia (音视频)
    └── Qt Serial Bus (CAN通信)
小技巧:安装路径不要有中文和空格。我见过有人装在"C:\Program Files (x86)\Qt",结果编译时路径解析出问题,排查了半天。

2.2.3 验证安装

装完后,打开Qt Creator,新建一个Qt Quick Application项目。跑一下默认模板,能看到一个空白窗口就对了。如果报错,八成是编译器没配好。

// 一个简单的QML验证文件
import QtQuick 2.15
import QtQuick.Controls 2.15

ApplicationWindow {
    visible: true
    width: 800
    height: 480
    title: "座舱HMI - 环境验证"

    Text {
        anchors.centerIn: parent
        text: "环境搭建成功!"
        font.pixelSize: 24
        color: "#2c3e50"
    }
}

2.3 Android Studio配置

座舱HMI现在很多跑在Android系统上,所以Android Studio也得配好。嗯,这里要注意——不是装个IDE就完事了,SDK版本、NDK版本、Gradle版本,一个不对就编译不过。

2.3.1 安装Android Studio

去官网下载最新版,安装时注意:

  • SDK路径:建议单独放一个目录,比如D:\Android\Sdk,别跟IDE混在一起
  • SDK版本:座舱项目一般用Android 12(API 31)或Android 13(API 33)
  • NDK版本:Qt for Android需要NDK r25c或r26,别用最新的r27,我试过有兼容问题

2.3.2 配置Qt与Android的桥梁

这一步很多人会忘。Qt Creator需要知道Android SDK和NDK在哪。

  1. 打开Qt Creator → 工具 → 选项 → 设备 → Android
  2. 设置SDK路径:/home/yourname/Android/Sdk
  3. 设置NDK路径:/home/yourname/Android/Sdk/ndk/25.2.9519653
  4. 设置Java路径:JDK 17(别用JDK 11,Qt 6.5要求JDK 17+)
  5. 点击"Apply",等它自动检测
避坑:我曾经因为JDK版本不对,折腾了一整天。Qt 6.5强制要求JDK 17,你用JDK 11的话,编译时会出现"Unsupported class file major version"错误。别问我怎么知道的。

2.3.3 Gradle配置

Qt for Android项目会生成Gradle构建文件。默认配置可能不够,我一般手动改一下:

// android/gradle.properties
android.useAndroidX=true
android.enableJetifier=true
org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=512m

// android/build.gradle
buildscript {
    ext.kotlin_version = '1.9.0'
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:8.1.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

2.4 模拟器与真机调试

2.4.1 模拟器方案对比

方案 优点 缺点 适用阶段
Qt Quick模拟器(QML Scene) 启动快、轻量 不支持多屏、性能不准 UI原型验证
Android Emulator 接近真机、支持多屏 启动慢、吃内存 功能联调
QEMU(ARM模拟) 可模拟特定硬件 配置复杂、速度慢 底层驱动调试
真机 最准确、性能真实 硬件成本高 最终验证

2.4.2 多屏模拟器配置

座舱HMI最头疼的就是多屏调试。我分享一个实用方法——用Android Emulator的扩展屏功能:

  1. 启动Android Emulator,打开"Extended Controls"
  2. 选择"Displays"选项卡
  3. 添加第二个屏幕:设置分辨率为1920x720(中控屏常用尺寸)
  4. 添加第三个屏幕:设置分辨率为1920x480(仪表屏常用尺寸)
  5. 点击"Apply",模拟器会重启并显示多屏
关键点:多屏模拟器下,你的QML应用需要监听不同屏幕的窗口。用Screen对象获取每个屏幕的几何信息,然后分别创建Window并指定screen属性。

2.4.3 真机调试流程

真机调试才是最终归宿。我一般这么操作:

  • USB连接:用ADB连接开发板或手机,执行adb devices确认连接
  • 网络调试:座舱开发板通常没有USB口,用adb connect 192.168.1.100:5555
  • 串口调试:有些老平台用串口,波特率115200,用PuTTY或screen连接
  • 日志查看:adb logcat -s QtQml:* 只看QML相关日志,别被海量系统日志淹了
# 常用ADB命令
adb devices                          # 查看设备列表
adb connect 192.168.1.100:5555       # 网络连接
adb install -r app-debug.apk         # 安装APK
adb logcat -s QtQml:*                # 只看QML日志
adb shell dumpsys window displays    # 查看屏幕信息
注意:真机调试时,一定要确认屏幕分辨率。我遇到过开发板是1280x800,但代码里写死了1920x720,结果UI全跑偏了。用adb shell wm size查看真实分辨率,再调整QML布局。

2.5 环境验证清单

最后,我列一个自检清单。每次搭建完环境,按这个过一遍,基本不会漏:

检查项 验证方法 预期结果
Qt Creator编译 新建QML项目,点击运行 弹出空白窗口
Android编译 选择Android Kit,编译APK 生成app-debug.apk
模拟器启动 启动Android Emulator 系统桌面正常显示
多屏模拟 添加扩展屏 两个屏幕都亮
ADB连接 执行adb devices 显示设备序列号
APK安装 adb install app-debug.apk 安装成功

环境搭建这事,说白了就是一次配好,后面省心。我建议你花半天时间,把上面这些步骤走一遍,别急着写代码。环境稳了,后面开发才顺。嗯,今天就到这,动手试试吧。