国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

鴻蒙OpenHarmony NAPI技術-基礎學習

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-01-19 16:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

NAPI(Native API)是OpenHarmony系統中的一套原生模塊擴展開發框架,它基于Node.js N-API規范開發,為開發者提供了JavaScript與C/C++模塊之間相互調用的交互能力。可以在NodeJs官網查看各種NAPI接口定義說明。

NAPI作用

  • OpenHarmony系統可以將框架層豐富的模塊功能通過js接口開放給上層應用使用
  • 上層應用也可以將一些對性能有要求或者需要調用到系統側框架的功能使用C/C++封裝實現,下探到系統層以提高運行效率

NAPI在系統中的位置

NAPI在OpenHarmony中屬于ArkUI框架的一部分。

NAIP框架代碼在 foundationarkuinapi 路徑下。總體上可分為interface、native_engine 和 xxxManager 三部分。

interface 目錄為NAPI開發者提供了各種常用功能的API接口及宏定義。

native_engine 目錄是NAPI框架的核心部分,interface目錄提供的接口對應的功能都在這里實現。C++與Js之間的調用交互最終是要依托JS引擎來完成的,針對系統支持的不同JS引擎,在impl目錄中也有對應的4種實現(ark, jerryscript, quickjs, v8)。

此外,還有幾個Manager目錄,分別負責模塊注冊、引用對象管理、作用域管理等專項功能。

NAPI使用

假設我們在框架測使用c/c++實現了hello模塊,該模塊提供了一個接口int hello(const std::string &s),傳入一個字符串,打印該字符串。

要使用js調用到如上hello接口,需要解決如下幾個問題

  1. 模塊注冊(import的模塊名稱hello,是怎么對應到實際的c++lib庫的?) — Module Manager。
  2. 方法名映射(js調用的hello方法,是怎么對應到native的C/C++的方法的?) — Native Engine。
  3. 數據傳遞與轉換(js傳入的入參、得到的返回結果,需要轉換成C/C++代碼可以操作的數據類型)

c++方法具體實現:

// hello.h

#ifndef HELLO_H
#define HELLO_H

#include < string >
namespace OHOS {
namespace hello {

int hello(const std::string &s);

} // namespace add
} // namespace OHOS

#endif // HELLO_H
// hello.cpp

#include < iostream >
#include "hello.h"

namespace OHOS {
namespace hello {

int hello(const std::string &s);
{
    std::cout < < s < < endl;
    return 0;
}

} // namespace add
} // namespace OHOS

此時需要為js提供調用,需要為該接口進行NAPI封裝

// helloNapi.cpp

#include "napi/native_api.h"
#include "hello.h"

static napi_value Hello(napi_env env, napi_callback_info info)
{
    // 根據環境變量獲取參數

    // js參數個數
    size_t argc = 1;
    // 參數定義
    napi_value argv[1] = { 0 };
    // 入參變量獲取
    napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
    // 獲取入參的類型
    napi_valuetype valueType = napi_undefined;
    napi_typeof(env, argv[0], &valueType);
    // js類型的入參值轉換為C/C++可以操作的數據類型
    char value[VALUE_BUFFER_SIZE] = { 0 };
    size_t valueLen = 0;
    napi_get_value_string_utf8(env, argv[0], value, VALUE_BUFFER_SIZE, &valueLen);
    std::string s = value;

    // 調用hello接口
    int ret = hello(s);

    // C/C++數據類型轉換為JS數據類型并返回給應用層
    // JS字符串對象
    napi_value result = nullptr;
    retult = napi_create_int32(env, ret, &result);

    //返回JS對象
    return result;
}

// 方法名映射
EXTERN_C_START
static napi_value Init(napi_env env, napi_value exports)
{
    napi_property_descriptor desc[] = {
        { "hello", nullptr, Hello, nullptr, nullptr, nullptr, napi_default, nullptr }
    };
    napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
    return exports;
}
EXTERN_C_END


// nm_modname為提供給應用側調用的模塊名稱
static napi_module helloModule = {
    .nm_version =1,
    .nm_flags = 0,
    .nm_filename = nullptr,
    .nm_register_func = Init,
    .nm_modname = "hello",
    .nm_priv = ((void*)0),
    .reserved = { 0 },
};

// 注冊模塊
extern "C" __attribute__((constructor)) void RegisterNative_helloModule(void)
{
    napi_module_register(&helloModule);
}

編譯生成假設為hello.z.so

js調用代碼

// hello.ets

// 引入hello napi模塊
import testNapi from '@ohos.hello'

// 調用js接口 hello
testNapi.hello("hello world")

以上就是簡單的NAPI簡介以及簡單的一個NAPI應用開發模版。更多鴻蒙開發內容,前往主頁:

審核編輯 黃宇

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

    關注

    60

    文章

    2963

    瀏覽量

    45904
  • OpenHarmony
    +關注

    關注

    33

    文章

    3952

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    融合AI的OpenHarmony應用軟件開發:ai學習自律輔助軟件

    *附件:ai study.zip*附件:融合AI的OpenHarmony應用軟件開發:ai學習自律輔助軟件.pdf 基于開源鴻蒙編寫的ai輔助學習軟件
    發表于 11-12 15:38

    觸覺智能Purple Pi OH開發板率先適配OpenHarmony6.0 Release,鴻蒙明星開發板

    2025年9月19日,在官網上線開源鴻蒙OpenHarmony6.0Release僅13天,觸覺智能宣布旗下PurplePiOH開發板成功完成OpenHarmony6.0Release系統適配。這一
    的頭像 發表于 10-29 08:00 ?826次閱讀
    觸覺智能Purple Pi OH開發板率先適配<b class='flag-5'>OpenHarmony</b>6.0 Release,<b class='flag-5'>鴻蒙</b>明星開發板

    【置頂公告】視美泰開源鴻蒙系列產品業務咨詢與商務合作通道正式開啟!

    設計。 生態解決方案整合智慧政務、智慧醫療、智慧園區、智慧教育、智慧安平、工業物聯網等領域鴻蒙化系統集成與場景落地。 技術授權與聯合創新OpenHarmony生態兼容性認證、技術培訓及
    發表于 10-20 16:23

    開源鴻蒙6.0 Release版本重磅發布

    近日,在長沙國際會議中心舉辦的開源鴻蒙技術大會2025上,開放原子開源鴻蒙(即OpenAtom OpenHarmony,簡稱“開源鴻蒙”)項
    的頭像 發表于 10-10 16:49 ?2877次閱讀

    觸覺智能RK3576開發板OpenHarmony開源鴻蒙系統USB控制傳輸功能示例

    本文介紹OpenHarmony開源鴻蒙系統的USB控制傳輸功能實現及相關代碼示例,基于觸覺智能RK3576開發板PurplePiOH2演示。OpenHarmony的USB通信介紹實現
    的頭像 發表于 09-30 16:31 ?1572次閱讀
    觸覺智能RK3576開發板<b class='flag-5'>OpenHarmony</b>開源<b class='flag-5'>鴻蒙</b>系統USB控制傳輸功能示例

    視美泰受邀出席2025鴻蒙生態大會,共繪OpenHarmony商業顯示新圖景

    OpenHarmony)的創新解決方案驚艷亮相,以技術深度與落地實力引發行業關注。更有視美泰國產化事業部總經理柏威先生發表主題演講,揭秘企業在開源鴻蒙領域的戰略布局與技術突破。
    的頭像 發表于 09-01 16:02 ?5394次閱讀
    視美泰受邀出席2025<b class='flag-5'>鴻蒙</b>生態大會,共繪<b class='flag-5'>OpenHarmony</b>商業顯示新圖景

    開鴻開發板深度體驗:從開源鴻蒙開發到AI場景實踐

    開鴻開發板KaihongBoard-3588S-SBCKaihongBoard-3576-SBC體驗開源鴻蒙能力學習開源鴻蒙開發●●●搭載KaihongOS
    的頭像 發表于 07-03 17:03 ?1615次閱讀
    開鴻開發板深度體驗:從開源<b class='flag-5'>鴻蒙</b>開發到AI場景實踐

    四川大學OpenHarmony技術俱樂部正式揭牌成立

    成立大會暨鴻蒙公開課”在四川大學望江校區成功舉辦。 嘉賓合影 四川大學副校長游勁松出席大會并致辭。他表示,四川大學始終關注科技發展的前沿動態,并積極投身相關領域的研究與探索。此次四川大學OpenHarmony技術俱樂部的成立標志
    的頭像 發表于 06-16 16:20 ?1503次閱讀
    四川大學<b class='flag-5'>OpenHarmony</b><b class='flag-5'>技術</b>俱樂部正式揭牌成立

    開源鴻蒙開發必備!OpenHarmony替換Full SDK全攻略

    本文介紹開源鴻蒙OpenHarmony替換FullSDK的方法,演示設備為觸覺智能PurplePiOH鴻蒙開發板獲取FullSD
    的頭像 發表于 06-06 18:11 ?850次閱讀
    開源<b class='flag-5'>鴻蒙</b>開發必備!<b class='flag-5'>OpenHarmony</b>替換Full SDK全攻略

    觸覺智能鴻蒙開發板率先通過OpenHarmony5.0認證(生態產品兼容性證書)

    觸覺智能PurplePiOH鴻蒙開發板繼4.1版本XTS認證火速出圈后,再次狂飆!成功通過OpenHarmony5.0ReleaseXTS認證,成為首批開放原子基金會生態產品之一。這一認證標志著其在
    的頭像 發表于 06-06 17:54 ?1270次閱讀
    觸覺智能<b class='flag-5'>鴻蒙</b>開發板率先通過<b class='flag-5'>OpenHarmony</b>5.0認證(生態產品兼容性證書)

    全志科技亮相OpenHarmony開發者大會2025

    近日,OpenHarmony開發者大會 2025(OHDC.2025,以下簡稱“大會”)在深圳舉辦。大會正式發布了開源鴻蒙5.1 Release版本,舉行了“開源鴻蒙應用技術組件共建啟
    的頭像 發表于 06-04 09:16 ?2197次閱讀
    全志科技亮相<b class='flag-5'>OpenHarmony</b>開發者大會2025

    利爾達RedCap模組通過OpenHarmony 生態兼容性測評!

    。此次認證標志著該NR90模組在鴻蒙系統中的技術適配能力獲得官方認可,為工業物聯網、智能終端等設備快速融入鴻蒙生態提供了關鍵支持。本次認證由OpenHarmony兼容
    的頭像 發表于 05-23 17:59 ?1622次閱讀
    利爾達RedCap模組通過<b class='flag-5'>OpenHarmony</b> 生態兼容性測評!

    DialogHub上線OpenHarmony開源社區,高效開發鴻蒙應用彈窗

    “Gitee官網”,首頁搜索“DialogHub”,快速下載集成,并參與代碼貢獻與問題反饋。共同提升鴻蒙應用的性能與體驗。 未來華為也將持續攜手生態伙伴共建創新,面向底座技術、通用能力、垂類行業等場景推出系列
    發表于 04-03 17:30

    鴻蒙北向開發OpenHarmony5.0 DevEco Studio開發工具安裝與配置

    本文介紹OpenHarmony5.0 DevEco Studio開發工具安裝與配置,鴻蒙北向開發入門必備!由觸覺智能Purple Pi OH鴻蒙開發板演示。搭載了瑞芯微RK3566四核處理器,支持開源
    的頭像 發表于 03-28 18:05 ?1630次閱讀
    <b class='flag-5'>鴻蒙</b>北向開發<b class='flag-5'>OpenHarmony</b>5.0 DevEco Studio開發工具安裝與配置

    【北京迅為】iTOP-RK3568開發板鴻蒙OpenHarmony系統南向驅動開發實操-HDF驅動配置UART

    【北京迅為】iTOP-RK3568開發板鴻蒙OpenHarmony系統南向驅動開發實操-HDF驅動配置UART
    的頭像 發表于 03-25 11:02 ?1732次閱讀
    【北京迅為】iTOP-RK3568開發板<b class='flag-5'>鴻蒙</b><b class='flag-5'>OpenHarmony</b>系統南向驅動開發實操-HDF驅動配置UART