HarmonyOS7应用《拼棋派对》实战:开发环境配置与项目运行
《拼棋派对》把拼图、24点、象棋、记忆翻牌和文字闯关放在一个本地应用中。这个系列从已有项目展开:先在模拟器里把应用跑起来,再沿着具体玩法学习页面、状态、算法与多设备适配。
第一篇先解决一个实际问题:电脑里同时装着新旧开发环境时,怎样确认工程使用了正确的 SDK,并得到能够运行的包。完成本篇后,你应该能找到应用入口、完成一次构建,并在模拟器里进入单人24点。
本文目录
先确认环境与工程配置
本次实操使用的工具与项目配置如下。系统版本、API等级和编辑器版本分别承担不同作用,检查时要逐项确认。
| 项目 | 本次使用值 | 检查位置 |
|---|---|---|
| DevEco Studio | 26.0.0.851 | 编辑器安装目录的版本信息 |
| 编译 SDK | 26.0.0.105 Release | SDK组件版本信息与构建包元数据 |
| target API | 26 | 根目录 build-profile.json5 |
| 最低兼容 API | 20 | 根目录 build-profile.json5 |
| 运行环境 | HarmonyOS 7.0.0 Beta2、API26模拟器 | 设备管理器中的模拟器配置 |
| 应用版本 | 1.0.19 | AppScope/app.json5 |
模拟器的系统镜像与编译SDK具有各自的版本号。本次使用Release SDK构建,运行在Beta2模拟器镜像上,记录时需要保留这两个信息。
在DevEco中打开项目根目录,等待工程同步完成,再检查产品配置。主包使用的 multidevice 产品中有以下字段:
"name": "multidevice",
"targetSdkVersion": "26.0.0",
"compatibleSdkVersion": "6.0.0(20)",
"runtimeOS": "HarmonyOS"
这是配置片段,需要放在已有产品对象中阅读。API26的目标版本采用 26.0.0 写法;项目早期迁移时使用 26.0.0(26) 曾触发格式检查错误。
最低兼容API20是工程声明。是否能在API20设备完成所有玩法,还需要对应环境验证。本系列先使用API26模拟器进行实操。
沿着应用入口找到页面
主包的设备类型为 phone、tablet、2in1。项目另有 watchentry,手表模块按独立产品处理,本文的主包构建不包含它。
初次读工程,可以按下面的顺序找文件:
| 文件 | 负责的事情 |
|---|---|
AppScope/app.json5 | 应用标识、版本与应用图标 |
entry/src/main/module.json5 | 主能力、设备类型、页面配置与权限 |
entry/src/main/ets/entryability/EntryAbility.ets | 创建窗口、加载页面与处理配置变化 |
entry/src/main/resources/base/profile/main_pages.json | 注册页面入口 |
entry/src/main/ets/pages/Index.ets | 大厅、导航、玩法页面与交互状态 |
entry/src/main/ets/common/GameLogic.ets | 多种玩法的运算和规则函数 |
entry/src/main/ets/services/GameRecordStore.ets | 本地设置、战绩与进度读写 |
EntryAbility 在窗口创建时调用:
windowStage.loadContent('pages/Index', (err) => {
if (err.code) {
hilog.error(DOMAIN, 'EntryAbility',
'Load content failed: %{public}s', JSON.stringify(err));
}
});
因此,应用启动后先进入 pages/Index。具体玩法由这个页面内部的状态选择,不能把全部玩法误认为已经注册成独立路由页面。
这套组织方式让共用计时、音效和本地记录比较直接,也让 Index.ets 承担了较多职责。阅读一个玩法时,先定位页面Builder,再找它的事件处理函数,最后进入公共算法,顺序会更清楚。
完成一次正式构建
在编辑器中确认依赖同步完成,并使用自己的签名配置。项目的证书、Profile与密钥信息属于本机配置,复制工程后需要关联自己的材料。
本次使用DevEco自带的Hvigor、Node与JBR构建。下面的PowerShell命令展示了工具链的连接方式,安装路径需要按本机修改:
$ideRoot = 'D:/Program File/Huawei/DevEco Studio'
$env:DEVECO_SDK_HOME = "$ideRoot/sdk"
$env:JAVA_HOME = "$ideRoot/jbr"
$env:Path = "$ideRoot/tools/node;$ideRoot/jbr/bin;" + $env:Path
& "$ideRoot/tools/hvigor/bin/hvigorw.bat" clean assembleApp `
-p product=multidevice -p buildMode=release --no-daemon
先执行 clean,让本次构建重新处理编译和打包;product=multidevice 选择手机、平板与电脑主包;buildMode=release 选择Release配置。
项目迁移时出现过 spawn java ENOENT。当时JBR已经安装,问题是构建进程找不到Java可执行文件。除了设置 JAVA_HOME,还需要让当前进程的PATH包含 jbr/bin。这个例子提醒我们,报错中的“找不到”可能描述进程搜索路径,排查时应先核对实际安装文件。
本次完整构建约28秒成功,生成正式签名APP与独立签名HAP,并通过官方签名工具检查。看到 BUILD SUCCESSFUL 后,还应检查包内版本、设备类型和SDK信息,确认构建的是预期产品。
在模拟器里打开一个玩法
在DevEco的设备管理器启动API26手机或三折叠模拟器,等系统桌面加载完成,再选择主模块运行。本次使用三折叠模拟器的单屏形态观察手机效果。
如果已经有构建好的HAP,也可以使用HDC安装。先列出目标设备,后续命令始终指定对应模拟器:
hdc list targets
hdc -t 127.0.0.1:5555 install -r entry-default-signed.hap
hdc -t 127.0.0.1:5555 shell aa start `
-a EntryAbility -b com.leson.pinqipartygame
地址是本次模拟器的示例值,需要以实际列表为准。-r 用于覆盖安装;保持相同应用标识、满足签名和版本要求,才能更新既有应用。
打开应用后,从数字游戏分类进入单人24点,观察题目、运算符和工具按钮是否完整显示。
大厅→数字游戏→单人24点:进入玩法后检查题目与工具按钮是否完整显示。
选两张7做乘法,检查数字牌变成49;继续计算并提交,检查下一题和得分一起更新。这样就从“窗口打开”走到了一个有实际交互结果的启动检查。
处理初次运行的常见问题
| 现象 | 优先检查 | 判断依据 |
|---|---|---|
| SDK同步失败 | SDK安装位置、目标版本、网络与许可状态 | 工程目标需要与可用SDK对应 |
| 构建调用了旧编辑器 | Hvigor、JBR与SDK的绝对路径 | 多个安装目录可能同时存在 |
hdc list targets 为空 | 模拟器是否启动、HDC服务地址与工具版本 | 系统窗口已打开也需要连接到对应服务 |
| 安装失败 | HAP是否有签名、版本与签名身份是否一致 | 根据完整错误码判断原因 |
| 首页能打开,玩法显示异常 | 页面Builder、状态与布局分支 | 启动成功不能代替玩法操作检查 |
本机曾出现默认HDC连接列表为空,而指定已有服务地址后能够看到模拟器。处理这类问题时,先核对连接配置,再决定是否需要重启服务,避免打断其他已连接设备。
这一篇的结果与下一步
工程入口、产品配置与构建工具链确认以后,模拟器中的一次24点计算成为后续文章共同的运行基础。接下来进入大厅与导航:怎样组织15种玩法,又怎样让不同入口进入同一个实际游戏页面。
参考资料:华为HarmonyOS开发入门、ArkTS简介。
更多推荐

所有评论(0)