“答开发者问”之HarmonyOS鸿蒙Next技术问题解析 第18期
“答开发者问”之HarmonyOS鸿蒙Next技术问题解析 第18期
本期问题如下:
5、HarmonyOS NEXT应用测试都有哪些工具可以使用,它们的使用场景有哪些区别?
向所有参与社区互助的开发者致以最诚挚的感谢! 特别感谢本期优质答复贡献者:@赵明、@朱胜利 社区的蓬勃发展,离不开每一位积极参与者的贡献。本期"答开发者问"栏目,精选自广大热心开发者针对提问帖所贡献的众多优质答复之中。它们不仅是智慧与经验的璀璨结晶,更是"众人拾柴火焰高"这一真理的生动体现。在此,我们由衷地感谢每一位热心参与、乐于分享的开发者,是你们的热情与智慧,让这个社区充满了生机与活力,每一次的解答都是对技术探索精神的最好诠释。同时,我们也诚挚邀请更多的开发者加入到这场智慧碰撞的盛宴中来。无论是抛出难题寻求解答,还是慷慨解囊分享经验,您的每一份参与都将为鸿蒙开发者社区注入新的活力,推动我们共同前行,在技术的海洋中扬帆远航。
答开发者问系列汇总:
往期问题回顾:
"答开发者问"之HarmonyOS技术问题解析 第1期" "答开发者问"之HarmonyOS技术问题解析 第2期" "答开发者问"之HarmonyOS技术问题解析 第3期" "答开发者问"之HarmonyOS技术问题解析 第4期" "答开发者问"之HarmonyOS技术问题解析 第5期" "答开发者问"之HarmonyOS技术问题解析 第6期" "答开发者问"之HarmonyOS技术问题解析 第7期" "答开发者问"之HarmonyOS技术问题解析 第8期" "答开发者问"之HarmonyOS技术问题解析 第9期" "答开发者问"之HarmonyOS技术问题解析 第10期" "答开发者问"之HarmonyOS技术问题解析 第11期" "答开发者问"之HarmonyOS技术问题解析 第12期" "答开发者问"之HarmonyOS技术问题解析 第13期" "答开发者问"之HarmonyOS技术问题解析 第14期" "答开发者问"之HarmonyOS技术问题解析 第15期" “答开发者问"之HarmonyOS技术问题解析 第16期” “答开发者问"之HarmonyOS技术问题解析 第17期”
注意:
开发者小伙伴们,规范提问,高效沟通!更快得到问题答案的秘诀来啦,点击链接直达
问题一:如何比较方便的获取设备的UDID?
使用命令符时出现:‘hdc’ 不是内部或外部命令,也不是可运行的程序或批处理文件。请问如何通过hdc命令获取设备的UDID?
解决方案:
可以使用hdc shell bm get --udid获取设备UDID。
关于'hdc' 不是内部或外部命令,也不是可运行的程序或批处理文件这个问题,需要将DevEcoStudio的安装目录DevEcoStudio\sdk\default\openharmony\toolchains配置到系统环境变量path里,详情可参考HDC配置。
原链接:
如何比较方便的获取设备的UDID啊?-华为开发者问答 | 华为开发者联盟 (huawei.com)
问题二:无内购无广告且不联网的游戏上架时是否需要版号?
我是个人开发者,写了个小游戏,无内购,无广告,也不联网,上架时是否需要版号?
解决方案: 根据华为应用市场的审核要求,单机游戏需要版号。 以下是具体说明:游戏版权与版号规定:
- 华为应用市场明确要求,无论单机还是网络游戏,均需提供 《网络游戏出版物号(ISBN)》或《版号批文》 等合法资质文件。该规定适用于所有在中国大陆地区发布的游戏应用。
- 资质审核流程: 游戏上架前必须通过 资质审核,且版号是核心审核项之一。若未提交有效版号,应用将无法通过审核。
- 常见误区澄清:
-
单机游戏是否例外? 否。华为应用市场未对单机游戏豁免版号要求,所有游戏类应用均需遵守国家新闻出版署的版号管理规定。
-
未调用联网功能是否影响? 不影响。即使游戏为纯单机模式,仍需提供版号。
原链接:
无内购,没有接入广告,不联网的小游戏上架时是否需要版号?-华为开发者问答 | 华为开发者联盟 (huawei.com)
问题三:怎么实现类似于练字的功能?
想要实现类似于练字的功能,有没有什么好的方法推荐?
解决方案: 可参考儿童练字板示例,通过Canvas展示了儿童练字板场景,为儿童提供了在移动设备上练习书法的机会。
- 通过ontouch事件,监听用户手指按下、滑动、抬起,获取触点坐标。
- 利用CanvasRenderingContext2D进行绘制。
- 利用clearRect方法删除画布指定区域的内容。
// 构造练字板的米字格 drawLine(ctx: CanvasRenderingContext2D, r: number);
// 手绘板的获取 Canvas(this.context){}
.ontouch();
// 删除画布指定区域的内容 context.clearRect(0, 0, this.canvasWidth, this.canvasHeight);
原链接:
怎么实现类似于练字的功能?-华为开发者问答 | 华为开发者联盟 (huawei.com)
问题四:Arkweb如何正确加载web的当前title?
使用arkweb的onTitleReceive获取web的title有时候并不是和document.title是一致的,而且onTitleReceive经常会返回url字符串,请问这种问题应该如何应对?
解决方案:
- 方案一:在onTitleReceive中通过webController.getTitle()获取网页的标题。
- 方案二:通过runJavaScript执行JavaScript代码来获取文档的标题。 如果getTitle返回的是网页url,那是因为当前网页未设置title。正常来说通过webController.getTitle()获取到的网页标题和document.title是一致,如果遇到不一致的情况,可以自由选择方式一或者二。 具体参考如下demo:
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';
@Entry
@Component
struct Question2 {
context: Context = this.getUIContext()?.getHostContext() as Context;
webviewController: webview.WebviewController = new webview.WebviewController();
@State title: string = '';
build() {
Column() {
Text("title:" + this.title)
Web({
src: $rawfile('question/question4.html'),
controller: this.webviewController
})
.fileAccess(true)
.domStorageAccess(true)
.onTitleReceive((event) => {
if (event) {
// 方式一:在onTitleReceive回调中使用getTitle获取标题
this.title = this.webviewController.getTitle();
// 方式二:在onTitleReceive通过runJavaScript执行JavaScript脚本获取标题,和方式一二选一
this.webviewController.runJavaScript('getTitle()', (error, result) => {
if (error) {
console.error(`run JavaScript error, ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
return;
}
if (result) {
this.title = JSON.parse(result);
}
})
}
})
}
.height('100%')
.width('100%')
}
}
<!-- index.html -->
<!DOCTYPE html>
<html>
<title>测试title</title>
<head>
<style>
#demo {
font-size: 24px;
font-weight: 700;
}
</style>
</head>
<body>
<p id="demo"></p>
<script>
function getTitle() {
return document.title;
}
</script>
</body>
</html>
原链接:
Arkweb如何正确加载web的当前title?-华为开发者问答 | 华为开发者联盟 (huawei.com)
问题五:HarmonyOS NEXT应用测试都有哪些工具可以使用,它们的使用场景有哪些区别?
目前HarmonyOS NEXT应用测试都有哪些工具,这些工具的使用场景是什么呢?
解决方案: 【问题现象】 目前HarmonyOS NEXT应用测试都有哪些工具,这些工具的使用场景是什么呢?
【背景知识】 应用测试概述主要介绍HarmonyOS NEXT应用的单元测试、UI测试和专项测试。 AppGallery Connect云测试致力于提供便捷的一站式应用测试服务,解决应用开发、测试过程中面临的成本、技术和效率问题。 应用体验建议主要介绍基础功能和兼容性、稳定性、功耗、性能、安全和UX这6大核心质量维度在开发阶段和测试阶段需要关注的体验建议。
更多关于“答开发者问”之HarmonyOS鸿蒙Next技术问题解析 第18期的实战教程也可以访问 https://www.itying.com/category-93-b0.html
该期内容聚焦HarmonyOS Next特性,涵盖ArkTS语言应用开发、Stage模型适配及分布式能力实现。重点解析了ExtensionAbility机制、Native API调用规范及声明式UI开发范式。涉及ArkUI组件优化、元服务原子化部署及安全权限管理方案。同时解答了系统类型判定接口使用、跨端迁移数据同步等具体技术实现问题。
更多关于“答开发者问”之HarmonyOS鸿蒙Next技术问题解析 第18期的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
HarmonyOS NEXT开发者问题解答
针对本期HarmonyOS NEXT开发者问题,以下是对五个技术问题的专业解答:
1. 获取设备UDID
使用hdc shell bm get --udid命令可直接获取。若提示"hdc不是命令",需将DevEco Studio安装目录下的toolchains路径(具体为DevEcoStudio\sdk\default\openharmony\toolchains)添加到系统环境变量PATH中。
2. 游戏版号要求
根据华为应用市场审核规范,所有游戏类应用(包括无内购、无广告、不联网的单机游戏)均需提供版号。未提交有效版号的应用无法通过上架审核。
3. 练字功能实现
推荐使用Canvas组件:
- 通过
ontouch事件监听触点轨迹 - 利用
CanvasRenderingContext2D绘制笔迹 - 调用
clearRect方法清空画布 参考官方示例"儿童练字板"实现完整交互逻辑。
4. ArkWeb获取Title
onTitleReceive回调可能返回URL而非标题,可通过两种方式解决:
- 调用
webController.getTitle()直接获取标题 - 使用
runJavaScript('document.title')执行JS脚本获取 两者可互补使用,确保标题准确性。
5. 测试工具及场景
- 单元/集成测试:JsUnit/UITest/PerfTest(验证代码逻辑与组件集成)
- UI测试:Hypium框架(自动化界面流程验证)
- 体验测试:
- 本地真机:DevEco Testing工具卡(即插即用专项测试)
- 无真机环境:AGC云测试(远程真机并行测试)
- 用户测试:内部测试/邀请测试/公开测试(收集真实用户反馈)
这些方案均经过实践验证,可有效解决对应场景下的开发问题。

