91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

觸覺(jué)智能RK3568使用體驗(yàn):NAPI 類(lèi)對(duì)象導(dǎo)出及其生命周期管理(上)

電子發(fā)燒友開(kāi)源社區(qū) ? 來(lái)源:未知 ? 2023-02-17 09:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

寫(xiě)在開(kāi)頭:

OpenHarmony 中的 N-API組件定義了由ArkTS (JS/ETS)語(yǔ)言編寫(xiě)的代碼和 native 代碼(使用 C/C++ 編寫(xiě))交互的方式,由 Node.js Node-API 框架擴(kuò)展而來(lái)。

什么是Node.js Node-API 框架


Node.js Node-API為開(kāi)發(fā)者提供了一套C/C++ API用于開(kāi)發(fā)Node.js的Native擴(kuò)展模塊。從Node.js 8.0.0開(kāi)始,Node-API以實(shí)驗(yàn)性特性作為Node.js本身的一部分被引入,并且從Node.js 10.0.0開(kāi)始正式全面支持Node-API。

本文以O(shè)penHarmony 3.2beta3源碼中的node.js三方庫(kù)為例,從third_party/node/README.OpenSource中可得知3.2beta3移植的node版本為14.19.1,因此可參考的Node.js N-API鏈接為14.19.1版本,如下:https://nodejs.org/docs/latest-v14.x/api/n-api.html

  • 接口名方面,OpenHarmony 中的 N-API 組件提供的接口名與三方庫(kù)Node.js一致,目前支持部分接口,詳情見(jiàn)libnapi.ndk.json文件。

本篇是該系列文章的第5篇上半部分。有離北況歸的地方就一定會(huì)有樣例源碼,本文提供了一個(gè)IDE開(kāi)發(fā)的NAPI工程用來(lái)學(xué)習(xí)本篇知識(shí)點(diǎn),下半部分將對(duì)源碼進(jìn)行解析。通過(guò)本文您將熟悉:

  • NAPI 導(dǎo)出類(lèi)對(duì)象

  • NAPI 對(duì)象生命周期管理

1.NAPI 類(lèi)對(duì)象導(dǎo)出

  • OpenHarmony NAPI提供了一種“包裝”C ++類(lèi)和實(shí)例的方法,以便JS應(yīng)用可以調(diào)用類(lèi)的構(gòu)造函數(shù)和方法。

  • Node.js Node-API中關(guān)于導(dǎo)出類(lèi)對(duì)象的內(nèi)容,參考鏈接 : https://nodejs.org/docs/latest-v14.x/api/n-api.html#n_api_object_wrap

1.1. NAPI導(dǎo)出類(lèi)對(duì)象流程

  • 通過(guò)napi_define_class定義一個(gè)JS類(lèi)

    • 它包含了與 C++ 類(lèi)對(duì)應(yīng)的構(gòu)造函數(shù)、靜態(tài)屬性、方法、實(shí)例屬性和方法。

  • 通過(guò)napi_wrap將 C++ 實(shí)例綁定在 JS對(duì)象中

    • 當(dāng) JS代碼調(diào)用構(gòu)造函數(shù)時(shí),構(gòu)造函數(shù)回調(diào)會(huì)使用napi_wrap將一個(gè)新的 C++ 實(shí)例綁定在 JS對(duì)象中,然后返回綁定的C++ 實(shí)例。

  • 通過(guò)napi_unwrap獲取作為調(diào)用目標(biāo)的C++ 實(shí)例

    • 當(dāng) JS調(diào)用C++ 類(lèi) 的方法或?qū)傩詴r(shí),會(huì)調(diào)用相應(yīng)的napi_callback C++ 函數(shù)。對(duì)于實(shí)例回調(diào),napi_unwrap獲取作為調(diào)用目標(biāo)的 C++ 實(shí)例 。

這里的napi_callback C++ 函數(shù)是指被 Node.js Node-API調(diào)用的C++ 函數(shù)

348998de-ae5f-11ed-bfe3-dac502259ad0.png

2. NAPI 對(duì)象生命周期

34a90ed0-ae5f-11ed-bfe3-dac502259ad0.png

以下是Node-API 中關(guān)于對(duì)象生命周期的解釋?zhuān)?/span>

  • 程序的生命周期是指程序從啟動(dòng),運(yùn)行到結(jié)束的整個(gè)過(guò)程。

  • NAPI 對(duì)象的生命周期代表著從對(duì)象創(chuàng)建到釋放的整個(gè)過(guò)程,如下圖所示:

    • 在ArkTS應(yīng)用啟動(dòng)時(shí)會(huì)加載NAPI模塊,而在NAPI模塊加載過(guò)程中會(huì)創(chuàng)建一個(gè)對(duì)象A提供給應(yīng)用使用,在應(yīng)用退出或者主動(dòng)釋放A對(duì)象前,A對(duì)象必須一直保持"活躍"狀態(tài)。從A對(duì)象創(chuàng)建到釋放的整個(gè)過(guò)程也代表著A對(duì)象的生命周期。

    • 當(dāng)調(diào)用Node-API時(shí),底層虛擬機(jī)在堆中對(duì)象的句柄可能以napi_values的形式返回。這些句柄必須保持對(duì)象“活動(dòng)”,直到本地代碼不再需要它們。參考鏈接//nodejs.org/docs/latest-v14.x/api/n-api.html#n_api_object_lifetime_management

句柄是一個(gè)標(biāo)識(shí)符,是用來(lái)標(biāo)識(shí)對(duì)象的。

NAPI 環(huán)境生命周期API的內(nèi)容參考鏈接如下:https://nodejs.org/docs/latest-v14.x/api/n-api.html#n_api_environment_life_cycle_apis

3. 關(guān)于本文提供的樣例工程

本文提供了一個(gè)IDE開(kāi)發(fā)的NAPI工程用來(lái)學(xué)習(xí)NAPI 類(lèi)對(duì)象導(dǎo)出對(duì)象生命周期管理

  • 筆者運(yùn)行環(huán)境:

    • 觸覺(jué)智能 IDO-EVB3568-V1 開(kāi)發(fā)板

    • OpenHarmony 3.2Beta2

    • DevEco Studio 3.1.0.100

3.1 觸覺(jué)智能 IDO-EVB3568-V1 開(kāi)發(fā)板

觸覺(jué)智能的這個(gè)rk3568開(kāi)發(fā)板是筆者去年8月份網(wǎng)上沖浪購(gòu)買(mǎi)的,4GB+32GB開(kāi)發(fā)板 + 一塊10.1英寸的MIPI屏幕 + 電源適配器+usb調(diào)試器(搞開(kāi)源鴻蒙用不上) 一共 739米 。筆者認(rèn)為是性?xún)r(jià)比無(wú)敵的開(kāi)源鴻蒙標(biāo)準(zhǔn)系統(tǒng)開(kāi)發(fā)板。

34c20d4a-ae5f-11ed-bfe3-dac502259ad0.png

觸覺(jué)智能一直在給 IDO-EVB3568-V1 開(kāi)發(fā)板適配最新的OpenHarmony版本。例如2月1號(hào)發(fā)布Beta5,作為消費(fèi)者的筆者立馬收到了適配了IDO-EVB3568-V1的Beta5鏡像包,有MIPI版本的和HDMI版本。購(gòu)買(mǎi)后的體驗(yàn)是非常不錯(cuò)的。

35053228-ae5f-11ed-bfe3-dac502259ad0.jpg
351a2afc-ae5f-11ed-bfe3-dac502259ad0.jpg

3.2. 樣例工程運(yùn)行

1、樣例安裝運(yùn)行后,觸覺(jué)智能 IDO-EVB3568-V1開(kāi)發(fā)板顯示如下

354436a8-ae5f-11ed-bfe3-dac502259ad0.png

以下圖片通過(guò)OpenHarmony預(yù)置的屏幕截圖功能獲取。截圖文件放在下面這四個(gè)文件夾下
/data/service/el2/100/hmdfs/account/files/Pictures/Screenshots/
/storage/media/100/local/files/Pictures/Screenshots/
/mnt/hmdfs/100/account/device_view/local/files/Pictures/Screenshots/
/mnt/hmdfs/100/account/merge_view/files/Pictures/Screenshots/
然后通過(guò)hdc工具導(dǎo)出到PC端。

2、再點(diǎn)擊中間的"導(dǎo)出對(duì)象"后,PC端DevEco Studio工具的Log窗口查看到對(duì)應(yīng)的調(diào)試信息。

系統(tǒng)的調(diào)試信息也在Hilog窗口顯示,且信息量大,不方便查看自己的調(diào)試信息,可以在log窗口設(shè)置過(guò)濾信息,讓窗口只顯示我們過(guò)濾關(guān)鍵字NapiTest的信息。

356c5cfa-ae5f-11ed-bfe3-dac502259ad0.jpg

(左右移動(dòng)查看全部?jī)?nèi)容)

調(diào)試信息如下:

08-05 11:09:03.413 1802-1802/com.example.objectwraptest I A0fefe/JsApp: [NapiTest] Test NAPI 2 + 3 = 5
08-05 11:09:03.414 1802-1802/com.example.objectwraptest I A0fefe/JsApp: [NapiTest] Test NAPI add(2, 3) 1
08-05 1103.414 1802-1802/com.example.objectwraptest I A0fefe/JsApp: [NapiTest] Test NAPI add(2, 3) 2
08-05 1103.415 1802-1802/com.example.objectwraptest I A0fefe/JsApp: [NapiTest] Test NAPI add(2, 3) 3
08-05 1103.415 1802-1802/com.example.objectwraptest I A0fefe/JsApp: [NapiTest]Test NAPI 2+3 = 5
08-05 11:09:52.123 1802-1802/com.example.objectwraptest I A0fefe/JsApp: [NapiTest] Test NAPI 2 + 3 = 5
08-05 11:09:52.123 1802-1802/com.example.objectwraptest I A0fefe/JsApp: [NapiTest] Test NAPI add(0, 0) 1
08-05 1152.123 1802-1802/com.example.objectwraptest I A0fefe/JsApp: [NapiTest] Test NAPI add(0, 0) 2
08-05 1152.124 1802-1802/com.example.objectwraptest I A0fefe/JsApp: [NapiTest] Test NAPI add(0, 0) 3
08-05 1152.124 1802-1802/com.example.objectwraptest I A0fefe/JsApp: [NapiTest]Test NAPI 4+5 = 0

	

3、再在index.ets中取消下面這四行代碼的注釋。

35952a54-ae5f-11ed-bfe3-dac502259ad0.jpg

Hilog窗口打印調(diào)試信息如下:

35bc42c4-ae5f-11ed-bfe3-dac502259ad0.png

08-05 09:03:38.156 1911-1911/com.example.objectwraptest I A0fefe/JsApp: [NapiTest] Test NAPI 2 + 3 = 5
08-05 09:03:38.157 1911-1911/com.example.objectwraptest I A0fefe/JsApp: [NapiTest]Test NAPI error{}
08-05 09:03:38.157 1911-1911/com.example.objectwraptest I A0fefe/JsApp: [NapiTest]Test NAPI hello NapiTest = undefined

(左右移動(dòng)查看全部?jī)?nèi)容)

以上HiLog窗口打印信息中的com.example.objectwraptest是樣例工程的包名,在樣例應(yīng)用工程AppScopeapp.json5文件中定義。AppScopeapp.json5中還可以定義樣例應(yīng)用hap的其他屬性。

entrysrcmainmodule.json5中startWindowBackground字段可以查看應(yīng)用開(kāi)啟時(shí)過(guò)渡動(dòng)畫(huà)的顏色,但是在指向的同級(jí)目錄下具體的文件中設(shè)置


35e9e10c-ae5f-11ed-bfe3-dac502259ad0.jpg

    • 在樣例應(yīng)用工程entrysrcmain esourcesaseelementstring.json中可以查看 應(yīng)用名稱(chēng)

    • 樣例圖標(biāo)修改entrysrcmain esourcesasemediaicon.png,大小是114*114像素

知識(shí)點(diǎn)附送

OpenHarmony截屏命令:

# 進(jìn)入sdk版本號(hào)	oolchain輸入cmd打開(kāi)命令行
hdc_std shell
snapshot_display
# 截圖默認(rèn)保存在/data/目錄下
exit
hdc_std file recv OpenHarmony設(shè)備端截圖文件路徑 PC端路徑

(左右移動(dòng)查看全部?jī)?nèi)容)

36056c9c-ae5f-11ed-bfe3-dac502259ad0.png


更多熱點(diǎn)文章閱讀
  • 重磅官宣,OpenHarmony技術(shù)峰會(huì)來(lái)啦
  • 基于小凌派RK2206的智能垃圾桶設(shè)計(jì)
  • 開(kāi)源硬件系列05期:HDLgen—IC設(shè)計(jì)自動(dòng)化利器
  • ArkUI新能力,助力應(yīng)用開(kāi)發(fā)更便捷
  • 30張開(kāi)放原子開(kāi)源基金會(huì)OpenHarmony技術(shù)峰會(huì)門(mén)票免費(fèi)送!

提示:本文由電子發(fā)燒友論壇發(fā)布,轉(zhuǎn)載請(qǐng)注明來(lái)源。如需社區(qū)合作及入群交流,請(qǐng)?zhí)砑游⑿臙EFans0806,或者發(fā)郵箱liuyong@huaqiu.com。


原文標(biāo)題:觸覺(jué)智能RK3568使用體驗(yàn):NAPI 類(lèi)對(duì)象導(dǎo)出及其生命周期管理(上)

文章出處:【微信公眾號(hào):電子發(fā)燒友開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:觸覺(jué)智能RK3568使用體驗(yàn):NAPI 類(lèi)對(duì)象導(dǎo)出及其生命周期管理(上)

文章出處:【微信號(hào):HarmonyOS_Community,微信公眾號(hào):電子發(fā)燒友開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    RK3568 Android11編譯環(huán)境搭建及報(bào)錯(cuò)解決指南

    在嵌入式開(kāi)發(fā)領(lǐng)域,RK3568 芯片憑借其出色的性能被廣泛應(yīng)用?;?RK3568 進(jìn)行 Android11 系統(tǒng)的開(kāi)發(fā),首先要搭建好編譯環(huán)境。本文將詳細(xì)介紹在 Ubuntu20.04 系統(tǒng)搭建
    的頭像 發(fā)表于 02-04 17:37 ?1737次閱讀
    <b class='flag-5'>RK3568</b> Android11編譯環(huán)境搭建及報(bào)錯(cuò)解決指南

    迅為RK3576對(duì)比RK3568:AI算力與接口的全面躍遷

    迅為RK3576對(duì)比RK3568:AI算力與接口的全面躍遷
    的頭像 發(fā)表于 12-22 15:24 ?1721次閱讀
    迅為<b class='flag-5'>RK</b>3576對(duì)比<b class='flag-5'>RK3568</b>:AI算力與接口的全面躍遷

    【迅為工業(yè)RK3568穩(wěn)定可靠】itop-3568開(kāi)發(fā)板Linux驅(qū)動(dòng)開(kāi)發(fā)實(shí)戰(zhàn):RK3568內(nèi)核模塊符號(hào)導(dǎo)出詳解

    【迅為工業(yè)RK3568穩(wěn)定可靠】itop-3568開(kāi)發(fā)板Linux驅(qū)動(dòng)開(kāi)發(fā)實(shí)戰(zhàn):RK3568內(nèi)核模塊符號(hào)導(dǎo)出詳解
    的頭像 發(fā)表于 11-21 13:25 ?1243次閱讀
    【迅為工業(yè)<b class='flag-5'>RK3568</b>穩(wěn)定可靠】itop-<b class='flag-5'>3568</b>開(kāi)發(fā)板Linux驅(qū)動(dòng)開(kāi)發(fā)實(shí)戰(zhàn):<b class='flag-5'>RK3568</b>內(nèi)核模塊符號(hào)<b class='flag-5'>導(dǎo)出</b>詳解

    【HZ-RK3568開(kāi)發(fā)板免費(fèi)體驗(yàn)】HZ-RK3568開(kāi)發(fā)板操作系統(tǒng)編譯

    開(kāi)發(fā)環(huán)境搭建好了后,接下來(lái)就是HZ-RK3568開(kāi)發(fā)板操作系統(tǒng)編譯工作。 一、menuconfig 先確保虛擬機(jī)的開(kāi)發(fā)環(huán)境OK。 sudo apt install build-essential
    發(fā)表于 08-17 09:15

    rk3568快速開(kāi)機(jī) 快速啟動(dòng)實(shí)現(xiàn)

    想了解下rk官方目前對(duì)rk3568快速開(kāi)機(jī)的實(shí)現(xiàn)有哪些,是否有成熟的方案。在官方文檔看到rv1126方案,不知道可否應(yīng)用在rk3568
    發(fā)表于 08-07 08:37

    迅為RK3568?重制版RK3568驅(qū)動(dòng)指南全面升級(jí)

    迅為RK3568 重制版RK3568驅(qū)動(dòng)指南全面升級(jí)
    的頭像 發(fā)表于 07-28 15:25 ?2659次閱讀
    迅為<b class='flag-5'>RK3568</b>?重制版<b class='flag-5'>RK3568</b>驅(qū)動(dòng)指南全面升級(jí)

    Linux修改uboot啟動(dòng)延時(shí)方法詳細(xì)攻略,觸覺(jué)智能RK3568開(kāi)發(fā)板演示

    本文介紹Linux系統(tǒng)修改uboot啟動(dòng)延時(shí)方法,使用觸覺(jué)智能EVB3568鴻蒙開(kāi)發(fā)板演示,搭載瑞芯微RK3568,四核A55處理器,主頻2.0Ghz,1T算力NPU;支持開(kāi)源鴻蒙
    的頭像 發(fā)表于 06-06 18:07 ?958次閱讀
    Linux修改uboot啟動(dòng)延時(shí)方法詳細(xì)攻略,<b class='flag-5'>觸覺(jué)</b><b class='flag-5'>智能</b><b class='flag-5'>RK3568</b>開(kāi)發(fā)板演示

    Ubuntu系統(tǒng)安裝Docker詳細(xì)攻略,觸覺(jué)智能RK3568開(kāi)發(fā)板演示

    本文介紹Ubuntu系統(tǒng)安裝Docker方法,使用觸覺(jué)智能EVB3568鴻蒙開(kāi)發(fā)板演示,搭載瑞芯微RK3568,四核A55處理器,主頻2.0Ghz,1T算力NPU;支持開(kāi)源鴻蒙
    的頭像 發(fā)表于 06-06 18:05 ?968次閱讀
    Ubuntu系統(tǒng)安裝Docker詳細(xì)攻略,<b class='flag-5'>觸覺(jué)</b><b class='flag-5'>智能</b><b class='flag-5'>RK3568</b>開(kāi)發(fā)板演示

    ArkUI-X中Plugin生命周期開(kāi)發(fā)指南

    ArkUI-X插件用于拓展ArkUI應(yīng)用的能力,提供管理插件生命周期的能力。本文主要介紹Android平臺(tái)的ArkUI-X插件生命周期的使用。 Android平臺(tái)創(chuàng)建ArkUI-X插件生命周期
    發(fā)表于 06-04 22:36

    ServiceAbility的生命周期介紹

    ServiceAbility的生命周期 開(kāi)發(fā)者可以根據(jù)業(yè)務(wù)場(chǎng)景重寫(xiě)生命周期相關(guān)接口。ServiceAbility生命周期接口說(shuō)明見(jiàn)下表。 表1 ServiceAbility生命周期
    發(fā)表于 05-28 08:22

    Rockchip RK3568技術(shù)參考手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《Rockchip RK3568技術(shù)參考手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 05-17 17:24 ?53次下載

    UIAbility組件生命周期介紹

    UIAbility組件生命周期 概述 當(dāng)用戶(hù)打開(kāi)、切換和返回到對(duì)應(yīng)應(yīng)用時(shí),應(yīng)用中的UIAbility實(shí)例會(huì)在其生命周期的不同狀態(tài)之間轉(zhuǎn)換。UIAbility類(lèi)提供了一系列回調(diào),通過(guò)這些回調(diào)可以
    發(fā)表于 05-16 08:28

    HZ-EVM-RK3568-技術(shù)規(guī)格書(shū)

    電子發(fā)燒友網(wǎng)站提供《HZ-EVM-RK3568-技術(shù)規(guī)格書(shū).pdf》資料免費(fèi)下載
    發(fā)表于 04-17 15:47 ?2次下載

    rk3568開(kāi)發(fā)工具

    rk3568開(kāi)發(fā)工具
    發(fā)表于 04-16 17:03 ?7次下載

    Linux開(kāi)發(fā)板CAN總線測(cè)試方法,觸覺(jué)智能RK3568開(kāi)發(fā)板演示

    本文介紹Linux開(kāi)發(fā)板CAN總線測(cè)試方法,使用觸覺(jué)智能EVB3568鴻蒙開(kāi)發(fā)板演示,搭載瑞芯微RK3568,四核A55處理器,主頻2.0Ghz,1T算力NPU;支持OpenHarmo
    的頭像 發(fā)表于 04-11 19:14 ?1226次閱讀
    Linux開(kāi)發(fā)板CAN總線測(cè)試方法,<b class='flag-5'>觸覺(jué)</b><b class='flag-5'>智能</b><b class='flag-5'>RK3568</b>開(kāi)發(fā)板演示