博客 / 詳情

返回

“答開發者問”之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. 單機遊戲是否例外?
      否。華為應用市場未對單機遊戲豁免版號要求,所有遊戲類應用均需遵守國家新聞出版署的版號管理規定。
    2. 未調用聯網功能是否影響?
      不影響。即使遊戲為純單機模式,仍需提供版號。

原鏈接:

無內購,沒有接入廣告,不聯網的小遊戲上架時是否需要版號?-華為開發者問答 | 華為開發者聯盟 (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測試、體驗測試和用户測試。

image.png

  • 單元測試:通過自動化測試保障代碼、函數邏輯實現正確,異常處理充分。

    • 測試工具:開發者可基於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期

注意:

開發者小夥伴們,規範提問,高效溝通!更快得到問題答案的秘訣來啦,點擊鏈接直達

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.