HarmonyOS7应用拼棋派对开发实战系列统一封面

《拼棋派对》把拼图、24点、象棋、记忆翻牌和文字闯关放在一个本地应用中。这个系列从已有项目展开:先在模拟器里把应用跑起来,再沿着具体玩法学习页面、状态、算法与多设备适配。

第一篇先解决一个实际问题:电脑里同时装着新旧开发环境时,怎样确认工程使用了正确的 SDK,并得到能够运行的包。完成本篇后,你应该能找到应用入口、完成一次构建,并在模拟器里进入单人24点。

本文目录

先确认环境与工程配置

本次实操使用的工具与项目配置如下。系统版本、API等级和编辑器版本分别承担不同作用,检查时要逐项确认。

项目本次使用值检查位置
DevEco Studio26.0.0.851编辑器安装目录的版本信息
编译 SDK26.0.0.105 ReleaseSDK组件版本信息与构建包元数据
target API26根目录 build-profile.json5
最低兼容 API20根目录 build-profile.json5
运行环境HarmonyOS 7.0.0 Beta2、API26模拟器设备管理器中的模拟器配置
应用版本1.0.19AppScope/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点

大厅→数字游戏→单人24点:进入玩法后检查题目与工具按钮是否完整显示。

选两张7做乘法,检查数字牌变成49;继续计算并提交,检查下一题和得分一起更新。这样就从“窗口打开”走到了一个有实际交互结果的启动检查。

处理初次运行的常见问题

现象优先检查判断依据
SDK同步失败SDK安装位置、目标版本、网络与许可状态工程目标需要与可用SDK对应
构建调用了旧编辑器Hvigor、JBR与SDK的绝对路径多个安装目录可能同时存在
hdc list targets 为空模拟器是否启动、HDC服务地址与工具版本系统窗口已打开也需要连接到对应服务
安装失败HAP是否有签名、版本与签名身份是否一致根据完整错误码判断原因
首页能打开,玩法显示异常页面Builder、状态与布局分支启动成功不能代替玩法操作检查

本机曾出现默认HDC连接列表为空,而指定已有服务地址后能够看到模拟器。处理这类问题时,先核对连接配置,再决定是否需要重启服务,避免打断其他已连接设备。

这一篇的结果与下一步

工程入口、产品配置与构建工具链确认以后,模拟器中的一次24点计算成为后续文章共同的运行基础。接下来进入大厅与导航:怎样组织15种玩法,又怎样让不同入口进入同一个实际游戏页面。

参考资料:华为HarmonyOS开发入门、ArkTS简介。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐