“答开发者问”之HarmonyOS技术问题解析 第18期

本文原创发布在华为开发者联盟社区,欢迎前往与更多开发者进行互动。
更多相关问题可点击原帖进行交流:“答开发者问”之HarmonyOS技术问题解析 第18期 。

本期问题如下:

1、如何比较方便的获取设备的UDID?

2、无内购无广告且不联网的游戏上架时是否需要版号?

3、怎么实现类似于练字的功能?

4、Arkweb如何正确加载web的当前title?

5、HarmonyOS NEXT应用测试都有哪些工具可以使用,它们的使用场景有哪些区别?

问题一:如何比较方便的获取设备的UDID?

使用命令符时出现:'hdc' 不是内部或外部命令,也不是可运行的程序或批处理文件。请问如何通过hdc命令获取设备的UDID?

解决方案:

可以使用hdc shell bm get --udid获取设备UDID。
关于'hdc' 不是内部或外部命令,也不是可运行的程序或批处理文件这个问题,需要将DevEcoStudio的安装目录DevEcoStudio\sdk\default\openharmony\toolchains配置到系统环境变量path里,详情可参考HDC配置

原链接:

如何比较方便的获取设备的UDID啊?-华为开发者问答 | 华为开发者联盟 (huawei.com)


问题二:无内购无广告且不联网的游戏上架时是否需要版号?

我是个人开发者,写了个小游戏,无内购,无广告,也不联网,上架时是否需要版号?

解决方案:
根据华为应用市场的审核要求,单机游戏需要版号。
以下是具体说明:游戏版权与版号规定

  • 华为应用市场明确要求,无论单机还是网络游戏,均需提供 《网络游戏出版物号(ISBN)》或《版号批文》 等合法资质文件。该规定适用于所有在中国大陆地区发布的游戏应用。
  • 资质审核流程:
    游戏上架前必须通过 资质审核,且版号是核心审核项之一。若未提交有效版号,应用将无法通过审核。
  • 常见误区澄清:
  1. 单机游戏是否例外?

否。华为应用市场未对单机游戏豁免版号要求,所有游戏类应用均需遵守国家新闻出版署的版号管理规定。

  1. 未调用联网功能是否影响?

不影响。即使游戏为纯单机模式,仍需提供版号。

原链接:

无内购,没有接入广告,不联网的小游戏上架时是否需要版号?-华为开发者问答 | 华为开发者联盟 (huawei.com)

问题三:怎么实现类似于练字的功能?

想要实现类似于练字的功能,有没有什么好的方法推荐?

解决方案:
可参考儿童练字板示例,通过Canvas展示了儿童练字板场景,为儿童提供了在移动设备上练习书法的机会。

  1. 通过ontouch事件,监听用户手指按下、滑动、抬起,获取触点坐标。
  2. 利用CanvasRenderingContext2D进行绘制。
  3. 利用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大核心质量维度在开发阶段和测试阶段需要关注的体验建议。

【解决方案】
如下图所示,这是应用在开发过程中典型的测试活动模型和测试活动质量目标,一般分为单元测试,集成测试、UI测试、体验测试和用户测试。

  • 单元测试:通过自动化测试保障代码、函数逻辑实现正确,异常处理充分。
    测试工具:开发者可基于DevEco Studio提供的单元测试框架JsUnit、UI测试框架UITest和白盒性能测试框架PerfTest进行用例编写和自测试,支持黑盒覆盖率统计Mock能力
  • 集成测试:组件实现符合设计,接口正确和组件完整。
    测试工具:同单元测试,集成测试检查更大子系统的行为,或者多个类和函数的组合。
  • UI测试:应用功能正确实现,用户场景目标可达成。
    测试工具:使用基于Python语言的DevEco Testing Hypium进行UI自动化测试,提升测试效率。
  • 体验测试:主要包括兼容性、稳定性、安全、性能、功耗、UX等,开发者可通过专项测试工具来保证应用基础体验良好,流畅、精致、安全等。同时开发者在应用上架前可以提前进行上架预检测试,提前发现问题,提高上架审核通过率。
    测试工具:
    • 如果您本地有HarmonyOS真机设备,可使用DevEco Testing进行专项测试服务。优点:以服务卡片的形式呈现,安装工具后,即插即用,一键执行测试任务。
    • 如果您本地无HarmonyOS真机设备,可使用云测试进行专项测试服务。优点:提供海量远程真机,无需开发者自备真机,可申请多台设备并行测试,解决应用开发、测试过程中面临的成本、技术和效率问题。
  • 用户测试:用户感知卓越、好用、爱用。
    测试工具:

原链接:

HarmonyOS NEXT应用测试都有哪些工具可以使用,它们的使用场景有哪些区别?-华为开发者问答 | 华为开发者联盟 (huawei.com)

答开发者问系列汇总:

“答开发者问”系列汇总(持续更新中...)

往期问题回顾:

“答开发者问”之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期”

注意:

开发者小伙伴们,规范提问,高效沟通!更快得到问题答案的秘诀来啦,点击链接直达

Logo

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

更多推荐