2. HMI开发环境搭建:Qt/QML环境配置、Android Studio配置、模拟器与真机调试
说实话,座舱HMI开发的第一步,往往就把不少人卡住了。环境配不好,后面全是白搭。我自己带团队这些年,见过太多人因为环境问题浪费一两天时间。今天咱们就把这事彻底理清楚。
2.1 整体环境概览
先看一张图,你就明白整个开发环境长什么样了。
这张图里,开发机是核心。左边是工具链,右边是调试目标。我个人习惯把开发机装成双系统——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在线安装器。我一般这么操作:
- 下载qt-unified-linux-x64-online.run(或Windows版)
- 运行安装器,登录Qt账号(没有就注册一个)
- 选择组件时,勾这几项就够了:
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通信)
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在哪。
- 打开Qt Creator → 工具 → 选项 → 设备 → Android
- 设置SDK路径:
/home/yourname/Android/Sdk - 设置NDK路径:
/home/yourname/Android/Sdk/ndk/25.2.9519653 - 设置Java路径:JDK 17(别用JDK 11,Qt 6.5要求JDK 17+)
- 点击"Apply",等它自动检测
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的扩展屏功能:
- 启动Android Emulator,打开"Extended Controls"
- 选择"Displays"选项卡
- 添加第二个屏幕:设置分辨率为1920x720(中控屏常用尺寸)
- 添加第三个屏幕:设置分辨率为1920x480(仪表屏常用尺寸)
- 点击"Apply",模拟器会重启并显示多屏
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 # 查看屏幕信息
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 | 安装成功 |
环境搭建这事,说白了就是一次配好,后面省心。我建议你花半天时间,把上面这些步骤走一遍,别急着写代码。环境稳了,后面开发才顺。嗯,今天就到这,动手试试吧。