
??想了解更多關于開源的內容,請訪問:???
??51CTO 開源基礎軟件社區??
??https://ost.51cto.com??
之前的章節我們是用fa模式編寫的hap,這次我們采用stage模式創建HAP。
注意:本章使用OpenHarmony screenshot的截屏功能,因為此截屏權限是系統權限,所以需要配置sdk里的權限以方便安裝hap。
簡介
仍然使用的是Dev-Eco Studio3.0 , 編寫的環境配置嘗試變為 SDK9,Model為Stage。

程序結構
MyApplication\entry\src\main
.
├─ets
│ ├─Application
│ ├─Component
│ ├─controller
│ ├─MainAbility
│ ├─model
│ ├─pages
│ │ ├─index.ets
│ │ ├─benchmarkTest.ets
│ │ └─subManualApiTest
│ ├─res
│ │ └─image
│ └─Utils
├─resources
│ ├─base
│ │ ├─element
│ │ ├─media
│ │ └─profile
│ └─rawfile
└─module.json5
補充
與SDK8相比,目錄結構發生了一些改變。如:新加了Application文件夾,改變了MainAbility的目錄層級,原本的config.json變成了module.json5,添加了AppScope文件夾 等 。
因此添加page的位置變為:
module.json5中的 "pages": "$profile:main_pages",
位置為:src/main/resources/base/profile/main_ pages.json 。
src/main/resources/base/profile/main_pages.json
{"src": ["pages/index","pages/benchmarkTest",
...
]}
修改bundleName的位置為:MyApplication23\AppScope\app.json5。
{"app": {
"bundleName": "ohos.samples.myapplication",
"vendor": "example",
"versionCode": 1000000,
"versionName": "1.0.0",
"icon": "$media:app_icon",
"label": "$string:app_name",
"distributedNotificationEnabled": true}}
性能測試
這里的性能測試主要為了在調用函數接口時,了解其在調用時的所花費的時間,可以傳輸的數據大小。因此編寫了相關的時間性能測試,穩定性能測試(避免時間出現偶然性)和帶寬測試。
時間性能測試:
function test(func) {
let start = new Date().getTime(); //起始時間
func(); //執行待測函數
let end = new Date().getTime(); //接受時間
console.log("開始:", Number(start), "ms")
console.log("結束:", Number(end), "ms")
console.log("花費:", Number(end - start), "ms")
let message = ""
message += "花費:" + Number(end - start) + "ms" + "\n"
message += "開始:" + Number(start) + "ms; " + "結束:" + Number(end) + "ms" + "\n"
return message //返回函數執行需要時間
}
添加截屏功能

本地d.ts 路徑:C:\Users\xxx\AppData\Local\OpenHarmony\Sdk\ets\3.2.7.5\api\
開源鴻蒙系統源碼文件所在位置: oh32/interface/sdk-js/api/@ohos.screenshot.d.ts ,將該文件拷至本地路徑下
MyApplication23\entry\src\main\module.json5
...
"requestPermissions": [
{
"name": "ohos.permission.CAPTURE_SCREEN"
},
{
"name": "ohos.permission.WRITE_MEDIA"
},
{
"name": "ohos.permission.READ_MEDIA"
}
]
- 這時因為權限問題,在安裝時會報錯:提示:Failed due to grant request permissions failed。從錯誤日志上看安裝失敗原因:由于授予請求權限失敗,安裝失敗。
- 知道是權限問題,現在要確認是那些權限導致,OpenHarmony中涉及的權限等級你可以參看:??查看申請權限的等級??,文檔中列舉出了目前OpenHarmony所有的權限和權限等級。
{
"name": "ohos.permission.CAPTURE_SCREEN",
"grantMode": "system_grant",
"availableLevel": "system_core",
"provisionEnable": true,
"distributedSceneEnable": false
},
{
"name": "ohos.permission.WRITE_MEDIA",
"grantMode": "user_grant",
"availableLevel": "normal",
"provisionEnable": true,
"distributedSceneEnable": true,
"label": "$string:ohos_lab_write_media",
"description": "$string:ohos_desc_write_media"
},
{
"name": "ohos.permission.READ_MEDIA",
"grantMode": "user_grant",
"availableLevel": "normal",
"provisionEnable": true,
"distributedSceneEnable": true,
"label": "$string:ohos_lab_read_media",
"description": "$string:ohos_desc_read_media"
},
- 如果權限的等級值為: availableLevel: “system_core”/“system_basic”,則需要在UnsgnedReleasedProfileTemplate.json 配置alcs字段,將需要的高等級權限放在acls中,具體做法如下:
- 配置簽名。
路徑為:
"C:\Users\xxx\AppData\Local\OpenHarmony\Sdk\toolchains\3.2.7.5\lib\UnsgnedReleasedProfileTemplate.json"

保存后更新自動簽名即可。

測試結果

hdc_std file send 本地文件 開發板目標路徑
hdc_std file recv 開發板文件 本地目標路徑
總結
OpenHarmony的藍牙功能通過測試速度還是很快的,希望此應用對社區朋友有幫助。
??想了解更多關于開源的內容,請訪問:???
??51CTO 開源基礎軟件社區??
??https://ost.51cto.com??。