<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙開發接口公共事件與通知:【FFI能力(Node-API)】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-05-21 16:38 ? 次閱讀

FFI能力(N-API)

ArkUI-X中支持的N-API接口情況

Node-API是封裝底層JavaScript運行時能力的一套Native接口。OpenHarmony的N-API組件對Node-API的接口進行了重新實現,ArkUI-X同樣擁有這部分能力,目前支持部分接口,支持列表。

Node-API

簡介

Node-API是封裝底層JavaScript運行時能力的一套Native接口。

支持的能力

Node-API屏蔽了底層不同JavaScript引擎的差異,提供一套穩定的接口。

OpenHarmony的N-API組件對Node-API的接口進行了重新實現,ArkUI-X在此基礎上進行了跨平臺擴展,N-API接口可以在OpenHarmony/HarmonyOS/Android/iOS多個平臺上使用。當前支持[Node-API]標準庫中的部分接口,如下表所示。

N-API組件擴展的符號列表

開發前請熟悉鴻蒙開發指導文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]
標準庫中導出的符號列表

符號類型符號名說明
FUNCnapi_module_registernapi native模塊注冊接口。
FUNCnapi_get_last_error_info獲取napi_extended_error_info結構體,其中包含最近一次出現的error信息。
FUNCnapi_throw拋出一個js value。
FUNCnapi_throw_error拋出一個帶文本信息的jsError。
FUNCnapi_throw_type_error拋出一個帶文本信息的jsTypeError。
FUNCnapi_throw_range_error拋出一個帶文本信息的jsRangeError。
FUNCnapi_is_error判斷napi_value是否表示為一個error對象。
FUNCnapi_create_error創建并獲取一個帶文本信息的jsError。
FUNCnapi_create_type_error創建并獲取一個帶文本信息的jsTypeError。
FUNCnapi_create_range_error創建并獲取一個帶文本信息的jsRangeError。
FUNCnapi_get_and_clear_last_exception獲取并清除最近一次出現的異常。
FUNCnapi_is_exception_pending判斷是否出現了異常。
FUNCnapi_fatal_error引發致命錯誤以立即終止進程。
FUNCnapi_open_handle_scope創建一個上下文環境使用。
FUNCnapi_close_handle_scope關閉傳入的上下文環境,關閉后,在其中聲明的全部napi_value都將被回收。
FUNCnapi_open_escapable_handle_scope創建出一個可逃逸的handel scope,可將范圍內聲明的值返回到父作用域。
FUNCnapi_close_escapable_handle_scope關閉傳入的可逃逸的handel scope。
FUNCnapi_escape_handle提升傳入的js object的生命周期到其父作用域。
FUNCnapi_create_referencenapi_value創建一個reference,提升js對象生命周期。調用者需要自己管理reference生命周期。
FUNCnapi_delete_reference刪除傳入的reference。
FUNCnapi_reference_ref增加傳入的reference的引用計數,并獲取該計數。
FUNCnapi_reference_unref減少傳入的reference的引用計數,并獲取該計數。
FUNCnapi_get_reference_value獲取與reference相關聯的jsObject。
FUNCnapi_create_array創建并獲取一個jsArray。
FUNCnapi_create_array_with_length創建并獲取一個指定長度的jsArray。
FUNCnapi_create_arraybuffer創建并獲取一個指定大小的jsArrayBuffer。
FUNCnapi_create_external分配一個附加有外部數據的js value。
FUNCnapi_create_external_arraybuffer分配一個附加有外部數據的jsArrayBuffer。
FUNCnapi_create_object創建一個默認的jsObject。
FUNCnapi_create_symbol創建一個jsSymbol。
FUNCnapi_create_typedarray通過現有的ArrayBuffer創建一個jsTypeArray。
FUNCnapi_create_dataview通過現有的ArrayBuffer創建一個jsDataView。
FUNCnapi_create_int32通過一個C的int32_t數據創建jsNumber。
FUNCnapi_create_uint32通過一個C的uint32_t數據創建jsNumber。
FUNCnapi_create_int64通過一個C的int64_t數據創建jsNumber。
FUNCnapi_create_double通過一個C的double數據創建jsNumber。
FUNCnapi_create_string_latin1通過ISO-8859-1編碼的C字符串數據創建jsString。
FUNCnapi_create_string_utf8通過UTF8編碼的C字符串數據創建jsString。
FUNCnapi_create_string_utf16通過UTF16編碼的C字符串數據創建jsString。
FUNCnapi_get_array_length獲取array的length。
FUNCnapi_get_arraybuffer_info獲取ArrayBuffer的底層data buffer及其長度。
FUNCnapi_get_prototype獲取給定jsObjectprototype。
FUNCnapi_get_typedarray_info獲取給定TypedArray的各種屬性。
FUNCnapi_get_dataview_info獲取給定DataView的各種屬性。
FUNCnapi_get_value_bool獲取給定jsBoolean對應的C bool值。
FUNCnapi_get_value_double獲取給定jsNumber對應的C double值。
FUNCnapi_get_value_external獲取先前通過napi_create_external()傳遞的外部數據指針。
FUNCnapi_get_value_int32獲取給定jsNumber對應的C int32值。
FUNCnapi_get_value_int64獲取給定jsNumber對應的C int64值。
FUNCnapi_get_value_string_latin1獲取給定js vaule對應的ISO-8859-1編碼的字符串。
FUNCnapi_get_value_string_utf8獲取給定js vaule對應的UTF8編碼的字符串。
FUNCnapi_get_value_string_utf16獲取給定js vaule對應的UTF16編碼的字符串。
FUNCnapi_get_value_uint32獲取給定jsNumber對應的C uint32值。
FUNCnapi_get_boolean根據給定的C boolean值,獲取js bool對象。
FUNCnapi_get_global獲取global對象。
FUNCnapi_get_null獲取null對象。
FUNCnapi_get_undefined獲取undefined對象。
FUNCnapi_coerce_to_bool將給定的js value強轉成jsBoolean。
FUNCnapi_coerce_to_number將給定的js value強轉成jsNumber。
FUNCnapi_coerce_to_object將給定的js value強轉成jsObject。
FUNCnapi_coerce_to_string將給定的js value強轉成jsString。
FUNCnapi_typeof獲取給定js value的js type。
FUNCnapi_instanceof判斷給定object是否為給定constructor的實例。
FUNCnapi_is_array判斷給定js value是否為array。
FUNCnapi_is_arraybuffer判斷給定js value是否為ArrayBuffer。
FUNCnapi_is_typedarray判斷給定js value是否表示一個TypedArray。
FUNCnapi_is_dataview判斷給定js value是否表示一個DataView。
FUNCnapi_is_date判斷給定js value是否為jsDate對象。
FUNCnapi_strict_equals判斷給定的兩個js value是否嚴格相等。
FUNCnapi_get_property_names以字符串數組的形式獲取對象的可枚舉屬性的名稱。
FUNCnapi_set_property對給定Object設置屬性。
FUNCnapi_get_property獲取給定Object的給定屬性。
FUNCnapi_has_property判斷給定對象中是否存在給定屬性。
FUNCnapi_delete_property嘗試從給定Object中刪除給定key屬性。
FUNCnapi_has_own_property判斷給定Object中是否有名為key的own property。
FUNCnapi_set_named_property對給定Object設置一個給定名稱的屬性。
FUNCnapi_get_named_property獲取給定Object中指定名稱的屬性。
FUNCnapi_has_named_property判斷給定Object中是否有給定名稱的屬性。
FUNCnapi_set_element在給定Object的指定索引處,設置元素。
FUNCnapi_get_element獲取給定Object指定索引處的元素。
FUNCnapi_has_element若給定Object的指定索引處擁有屬性,獲取該元素。
FUNCnapi_delete_element嘗試刪除給定Object的指定索引處的元素。
FUNCnapi_define_properties批量的向給定Object中定義屬性。
FUNCnapi_type_tag_object將tag指針的值與Object關聯。
FUNCnapi_check_object_type_tag判斷給定的tag指針是否被關聯到了jsObject上。
FUNCnapi_call_function在Native方法中調用js function,即native call js。
FUNCnapi_create_function創建native方法給js使用,以便于js call native。
FUNCnapi_get_cb_info從給定的callback info中獲取有關調用的詳細信息,如參數和this指針。
FUNCnapi_get_new_target獲取構造函數調用的new.target。
FUNCnapi_new_instance通過給定的構造函數,構建一個實例。
FUNCnapi_define_class定義與C++類相對應的JavaScript類。
FUNCnapi_wrap在js object上綁定一個native對象實例。
FUNCnapi_unwrap從js object上獲取先前綁定的native對象實例。
FUNCnapi_remove_wrap從js object上獲取先前綁定的native對象實例,并解除綁定。
FUNCnapi_create_async_work創建一個異步工作對象。
FUNCnapi_delete_async_work釋放先前創建的異步工作對象。
FUNCnapi_queue_async_work將異步工作對象加到隊列,由底層去調度執行。
FUNCnapi_cancel_async_work取消入隊的異步任務。
FUNCnapi_get_node_version獲取node的版本信息。
FUNCnapi_get_version獲取Node運行時支持的最高 N-API 版本。
FUNCnapi_create_promise創建一個延遲對象和js promise。
FUNCnapi_resolve_deferredresolve與js promise對象關聯的延遲函數。
FUNCnapi_reject_deferredreject與js promise對象關聯的延遲函數。
FUNCnapi_is_promise判斷給定js value是否為promise對象。
FUNCnapi_get_uv_event_loop獲取當前libuv loop實例。
FUNCnapi_create_threadsafe_function創建線程安全函數。
FUNCnapi_get_threadsafe_function_context獲取線程安全函數中的context。
FUNCnapi_call_threadsafe_function調用線程安全函數。
FUNCnapi_acquire_threadsafe_function指示線程安全函數可以開始使用。
FUNCnapi_release_threadsafe_function指示線程安全函數將停止使用。
FUNCnapi_ref_threadsafe_function指示在主線程上運行的事件循環在線程安全函數被銷毀之前不應退出。
FUNCnapi_unref_threadsafe_function指示在主線程上運行的事件循環可能會在線程安全函數被銷毀之前退出。
FUNCnapi_create_date通過一個C的double數據創建jsDate。
FUNCnapi_get_date_value獲取給定jsDate對應的C double值。
FUNCnapi_create_bigint_int64通過一個C的int64數據創建jsBigInt。
FUNCnapi_create_bigint_uint64通過一個C的uint64數據創建jsBigInt。
FUNCnapi_create_bigint_words通過一個C的uint64數組創建單個jsBigInt。
FUNCnapi_get_value_bigint_int64獲取給定jsBigInt對應的C int64值。
FUNCnapi_get_value_bigint_uint64獲取給定jsBigInt對應的C uint64值。
FUNCnapi_get_value_bigint_words獲取給定jsBigInt對應的信息,包括符號位、64位小端序數組和數組中的元素個數。
FUNCnapi_create_buffer創建并獲取一個指定大小的jsBuffer。
FUNCnapi_create_buffer_copy創建并獲取一個指定大小的jsBuffer,并以給定數據進行初始化。
FUNCnapi_create_external_buffer創建并獲取一個指定大小的jsBuffer,并以給定數據進行初始化,該接口可為Buffer附帶額外數據。
FUNCnapi_get_buffer_info獲取jsBuffer底層data及其長度。
FUNCnapi_is_buffer判斷給定js value是否為Buffer對象。
FUNCnapi_object_freeze凍結給定的對象。
FUNCnapi_object_seal密封給定的對象。
FUNCnapi_get_all_property_names獲取一個數組,其中包含此對象過濾后的屬性名稱。
FUNCnapi_detach_arraybuffer分離給定ArrayBuffer的底層數據。
FUNCnapi_is_detached_arraybufferHarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿判斷給定的ArrayBuffer是否已被分離過。

搜狗高速瀏覽器截圖20240326151547.png

ArkUI-X中N-API的使用場景

在OpenHarmony中,N-API接口可以實現ArkTS/TS/JS與C/C++(Native)之間的交互。ArkUI-X在此基礎上進行了跨平臺的拓展,開發者可在OpenHarmony/HarmonyOS/Android/iOS多個平臺上使用N-API能力,完成跨語言工程開發。ArkUI-X中的N-API典型使用場景與OpenHarmony相同,即:

  1. 通過N-API封裝Native能力,暴露相應接口到ArkTS/TS/JS層,即ArkTS/TS/JS call Native。
  2. Native代碼中調用ArkTS/TS/JS提供的方法,即Native call ArkTS/TS/JS。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    7889

    瀏覽量

    149095
  • API
    API
    +關注

    關注

    2

    文章

    1419

    瀏覽量

    61161
  • javascript
    +關注

    關注

    0

    文章

    513

    瀏覽量

    53490
  • 鴻蒙
    +關注

    關注

    55

    文章

    1963

    瀏覽量

    42221
收藏 人收藏

    評論

    相關推薦

    鴻蒙開發接口公共事件與通知:【@ohos.commonEvent (公共事件模塊)】

    本模塊首批接口API version 7開始支持。后續版本的新增接口,采用上角標單獨標記接口的起始版本。
    的頭像 發表于 05-21 11:13 ?539次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b><b class='flag-5'>接口</b><b class='flag-5'>公共事</b>件與<b class='flag-5'>通知</b>:【@ohos.commonEvent (<b class='flag-5'>公共事</b>件模塊)】

    鴻蒙開發接口公共事件與通知:【@ohos.events.emitter (Emitter)】

    本模塊首批接口API version 7開始支持。
    的頭像 發表于 05-21 16:06 ?743次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b><b class='flag-5'>接口</b><b class='flag-5'>公共事</b>件與<b class='flag-5'>通知</b>:【@ohos.events.emitter (Emitter)】

    鴻蒙開發接口公共事件與通知:【Notification模塊】

    本模塊首批接口API version 7開始支持。后續版本的新增接口,采用上角標單獨標記接口的起始版本。
    的頭像 發表于 05-21 17:04 ?1059次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b><b class='flag-5'>接口</b><b class='flag-5'>公共事</b>件與<b class='flag-5'>通知</b>:【Notification模塊】

    鴻蒙開發接口公共事件與通知:【@ohos.reminderAgent (后臺代理提醒)】

    開發應用時,開發者可以調用后臺提醒發布的接口創建定時提醒,包括倒計時、日歷、鬧鐘三種提醒類型。使用后臺代理提醒能力后,應用可以被凍結或退出,計時和彈出提醒的功能將被后臺系統服務代理。
    的頭像 發表于 05-25 16:27 ?233次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b><b class='flag-5'>接口</b><b class='flag-5'>公共事</b>件與<b class='flag-5'>通知</b>:【@ohos.reminderAgent (后臺代理提醒)】

    鴻蒙開發接口公共事件與通知:【application/EventHub (EventHub)】

    EventHub模塊提供了事件中心,提供訂閱、取消訂閱、觸發事件的能力。
    的頭像 發表于 05-25 16:31 ?323次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b><b class='flag-5'>接口</b><b class='flag-5'>公共事</b>件與<b class='flag-5'>通知</b>:【application/EventHub (EventHub)】

    鴻蒙開發接口公共事件與通知:【FFI能力】 N-API在Android、iOS平臺應用的使用指導

    N-API接口可以實現ArkTS/TS/JS與C/C++(Native)之間的交互,ArkUI-X中支持的N-API接口情況和使用場景請見[FFI
    的頭像 發表于 05-25 16:33 ?1247次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b><b class='flag-5'>接口</b><b class='flag-5'>公共事</b>件與<b class='flag-5'>通知</b>:【<b class='flag-5'>FFI</b><b class='flag-5'>能力</b>】 N-<b class='flag-5'>API</b>在Android、iOS平臺應用的使用指導

    鴻蒙原生應用/元服務開發-通知添加行為意圖

    WantAgent提供了封裝行為意圖的能力,這里所說的行為意圖主要是指拉起指定的應用組件及發布公共事件等能力。HarmonyOS支持以通知的形式,將WantAgent從發布方傳遞至接收
    發表于 01-05 15:07

    HarmonyOS應用開發-公共事件處理

    開發過程中service想要控制多個ability時,可以考慮使用公共事件處理。發布無序的公共事件: //發布公共事件 同步修改卡片與頁面public void subscribeE
    發表于 11-02 15:15

    HarmonyOS-API7相對API6差異主要變更內容

    條件、循環渲染、懶加載渲染,支持自定義組件。JS新增5800+的API接口,覆蓋多個能力模塊:新增一系列事件通知能力接口,可實現普通
    發表于 02-15 14:35

    HarmonyOS應用API-CommonEvent.publish

    Api:CommonEvent.publish版本適配:Api7作用:發布公共事件示例代碼://發布公共事件回調function PublishCallBack(err) {
    發表于 10-27 15:09

    HarmonyOS/OpenHarmony應用開發-ArkTSAPI系統能力SystemCapability

    一、 系統能力API SysCap,全稱SystemCapability,即系統能力,指操作系統中每一個相對獨立的特性,如包管理、公共事件、通知
    發表于 08-10 16:39

    OpenHarmony 應用開發SDK、API 與基礎工具

    ArkTS 對象的能力,使用類 Node 的 N-API 接口命名。開發者使用 C/C++開發
    發表于 09-19 15:45

    鴻蒙原生應用/元服務開發-Stage模型能力接口(四)

    一、說明 AbilityStage是HAP的運行時類。AbilityStage類提供在HAP加載的時候,通知開發者,可以在此進行該HAP的初始化(如資源預加載,線程創建等)能力。 本模塊首批
    發表于 12-14 15:39

    觸覺智能RK3568使用體驗:NAPI 類對象導出及其生命周期管理(上)

    .js Node-API 框架擴展而來。 什么是Node.js Node-API 框架 Node.js Node-API
    的頭像 發表于 02-17 09:10 ?653次閱讀

    【開源三方庫】Aki:一行代碼極簡體驗JS&C++跨語言交互

    “OpenHarmony”)的前端開發語言是ArkTS,在TypeScript(簡稱TS)生態基礎上做了進一步擴展,繼承了TS的所有特性,是JavaScript(簡稱JS)的超集。而Node-API
    的頭像 發表于 08-02 21:05 ?825次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>