精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

跟著小白一起學鴻蒙--寫個NAPI子系統(七)

系統 OpenHarmony
此篇文章,我們主要是熟悉下NAPI框架,并一起寫一個支持NAPI的子系統,這樣以后當我們想在hap應用里加自己功能的時候就可以方便的添加。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

在《#跟著小白一起學鴻蒙#[六]第一個hap應用》我們熟悉了如何在開源鴻蒙開發hap應用,后期的文章我們會寫在hap應用里調用系統庫甚至是動態庫。此篇文章,我們主要是熟悉下NAPI框架,并一起寫一個支持NAPI的子系統,這樣以后當我們想在hap應用里加自己功能的時候就可以方便的添加。

NAPI框架簡介

NAPI(Native API)組件是一套對外接口基于Node.js N-API規范開發的原生模塊擴展開發框架。類似于Android的JNI,NAPI框架實現了應用層ts/ets/js語言編寫的代碼和開源鴻蒙的native代碼(c/c++)交互的能力。此框架由Node.js N-API框架擴展而來。

注意:開源鴻蒙的標準系統是采用NAPI框架的,輕量系統則是采用jerryscript框架。

#沖刺創作新星# #跟著小白一起學鴻蒙# [七] 寫個NAPI子系統-開源基礎軟件社區

詳細的內容介紹在一下鏈接內可以看到官方的說明:

參考鏈接:https://gitee.com/openharmony/arkui_napi。

NAPI的使用

graph LR
創建d.ts --> 執行napi_generator --> 建立子系統 --> 引入子系統 --> 編譯生成

創建d.ts: @ohos.napitest.d.ts, basic.d.ts。

@ohos.napitest.d.ts是NAPI的聲明文件,在DevEco Studio開發的時候會用到d.ts來檢查語法和提供代碼幫助。

import {AsyncCallback} from './basic';
/**
* Provides interfaces to napitest.
*
* @since 7
*/
declare namespace napitest {
/**
* Shuts down the system.
*
* <p>This method requires the ohos.permission.SHUTDOWN permission.
*
* @param reason Indicates the shutdown reason.
* @systemapi
* @since 7
*/
function shutdownDevice(reason: string): void;
/**
* Restarts the system.
*
* <p>This method requires the ohos.permission.REBOOT permission.
*
* @param reason Indicates the restart reason. For example, "updater" indicates entering the updater mode
* after the restart. If the parameter is not specified, the system enters the normal mode after the restart.
* @since 7
*/
function rebootDevice(reason: string): void;
/**
* Checks whether the screen of a device is on or off.
*
* @return Returns true if the screen is on; returns false otherwise.
* @since 7
*/
function isScreenOn(callback: AsyncCallback<boolean>): void;
function isScreenOn(): Promise<boolean>;
}
export default napitest;

basic.d.ts:一些基礎方法的聲明。

export interface Callback<T> {
(data: T): void;
}
export interface ErrorCallback<T extends Error = BusinessError> {
(err: T): void;
}
export interface AsyncCallback<T> {
(err: BusinessError, data: T): void;
}
export interface BusinessError extends Error {
code: number;
}

執行napi_generator建立個文件夾,將上面建立的兩個d.ts和napi_generator放在一起。

//準備環境
mkdir napitest
cd napitest
vim @ohos.napitest.d.ts
vim basic.d.ts
//拷貝napi_generator
cp [路徑]/napi_generator-linux .
chmod +x napi_generator-linux
//生成napitest代碼
./napi_generator-linux -f @ohos.napitest.d.ts -o out
//當看到success則說明燒錄成功

//檢視out目錄
├── binding.gyp //工具中間文件
├── BUILD.gn //之后需要用到的gn文件
├── napi_gen.log //工具log
├── napitest.cpp //自動生成的接口調用的實際代碼
├── napitest.h //自動生成的接口調用的實際代碼
├── napitest_middle.cpp //自動生成的napi適配代碼
├── test.sh //生成js代碼的腳本,官方沒給說明,試了下不可用
├── tool_utility.cpp //自動生成的napi適配代碼
└── tool_utility.h //自動生成的napi適配代碼

建立子系統。

在鴻蒙源碼目錄下建立foundation/napitest,將之前生成的文件拷貝到文件夾內。

foundation
├── ability
├── ai
├── arkui
├── barrierfree
├── bundlemanager
├── communication
├── deviceprofile
├── distributeddatamgr
├── distributedhardware
├── filemanagement
├── graphic
├── multimedia
├── multimodalinput
├── napitest
├── binding.gyp
├── BUILD.gn
├── bundle.json
├── napi_gen.log
├── napitest.cpp
├── napitest.h
├── napitest_middle.cpp
├── test.sh
├── tool_utility.cpp
└── tool_utility.h
├── resourceschedule

在目錄里創建bundle.json,使用一下內容。

{
"name": "@ohos/napitest",
"description": "napitest provides atomic capabilities",
"version": "3.1",
"license": "Apache License 2.0",
"publishAs": "code-segment",
"segment": {
"destPath": "foundation/napitest"
},
"dirs": {},
"scripts": {},
"component": {
//部件名稱
"name": "napitest_interface",
//子系統名稱
"subsystem": "napitest",
"features": [],
"adapted_system_type": [
"standard"
],
"rom": "10000KB",
"ram": "10000KB",
"deps": {
"components": [
"ace_napi",
"ipc_core",
"libhilog"
],
"third_party": [
"node"
]
},
"build": {
"sub_component": [
"http://foundation/napitest:napitest"
],
"inner_kits": [
{
"header": {
"header_base": "http://foundation/napitest",
"header_files": [
"tool_utility.h",
"napitest.h"
]
},
"name": "http://foundation/napitest:napitest"
}
]
}
}
}

為了和bundle.json對應,將BUILD.gn改成如下:

import("http://build/ohos.gni")
ohos_shared_library("napitest")
{
sources = [
"napitest_middle.cpp",
"napitest.cpp",
"tool_utility.cpp",
]
include_dirs = [
".",
"http://third_party/node/src",
"http://base/hiviewdfx/hilog/interfaces/native/innerkits/include",
]
deps=[
"http://foundation/arkui/napi:ace_napi",
"http://base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog",
]
remove_configs = [ "http://build/config/compiler:no_rtti" ]
cflags=[
]
cflags_cc=[
"-frtti",
]
ldflags = [
]
relative_install_dir = "module"
//部件名稱
part_name = "napitest_interface"
//子系統名稱
subsystem_name = "napitest"
}

引入子系統。

增加子系統,修改build/subsystem_config.json。

//在文件后增加
{
//前面省略的內容
...
//新增內容
"napitest": {
"path": "foundation/napitest",
"name": "napitest"
}
}

增加編譯入口(已目前的master版本為基礎,3.2后改過編譯路徑)。

//修改 vendor/hihope/[PRODUCT_NAME]/config.json 文件增加如下行
{
"subsystem": "napitest",
"components": [
{
"component": "napitest_interface",
"features": []
}
]
},

編譯生成。

./build.sh --product-name PRODUCT_NAME
//看到success則為編譯成功,可以通過find out/[PRODUCT_NAME] -name *napitest.z.so查看生成文件,比如我的文件路徑如下:
./out/rk3568/lib.unstripped/napitest/napitest_interface/libnapitest.z.so
./out/rk3568/napitest/napitest_interface/libnapitest.z.so
./out/rk3568/innerkits/ohos-arm/napitest_interface/napitest/libnapitest.z.so
./out/rk3568/packages/phone/system/lib/module/libnapitest.z.so
//最后一個路徑就是系統鏡像的路徑,所以兩種辦法
//1,直接copy到板子的/system/lib路徑;參考《#跟著小白一起學鴻蒙# [二]第一個OpenHarmony程序》
//2,燒錄鏡像;參考《#跟著小白一起學鴻蒙# [一]運行OpenHarmony》

總結

這樣我們就有了自己的subsystem和napi接口,后面的章節我們會講如何在hap應用里調用系統庫。

參考鏈接:https://gitee.com/openharmony/napi_generator/tree/master。

文章相關附件可以點擊下面的原文鏈接前往下載:

https://ost.51cto.com/resource/2308。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??。

責任編輯:jianghua 來源: 51CTO開源基礎軟件社區
相關推薦

2022-10-31 15:35:02

Wi-Fi藍牙子系統

2022-10-17 14:29:24

鴻蒙應用開發

2022-11-29 16:35:02

Tetris鴻蒙

2022-12-02 14:20:09

Tetris鴻蒙

2023-03-30 09:32:27

2022-11-14 17:01:34

游戲開發畫布功能

2023-02-27 16:30:32

鴻蒙開源協議分析

2023-03-30 09:19:54

SELinux安全子系統

2022-08-19 19:02:20

開源鴻蒙操作系統

2023-04-04 09:24:11

鴻蒙HiDumper

2022-10-10 14:47:04

藍牙應用鴻蒙

2023-01-03 15:09:10

鴻蒙常用工具

2022-10-20 16:40:16

JS應用控制LED鴻蒙

2022-12-06 15:39:16

鴻蒙主干代碼

2023-03-15 16:19:03

BinderIPC工具

2022-11-24 14:34:41

Hap程序鴻蒙

2022-11-03 15:47:04

HTTP通信協議

2022-11-08 15:43:45

開源鴻蒙藍牙協議棧

2023-04-06 09:18:52

鴻蒙AVPlayerAVRecorder

2023-02-24 16:02:45

WebSocket網絡通訊協議
點贊
收藏

51CTO技術棧公眾號

99国产超薄丝袜足j在线观看| 在线国产精品播放| 国产一区二区三区精彩视频 | 欧美日韩亚洲一区二区三区四区| 久久这里只有精品9| 亚洲欧美文学| 亚洲天堂男人天堂| 亚洲性图第一页| 成人av免费电影网站| 综合久久给合久久狠狠狠97色| 99久久国产免费免费| 中文字幕在线观看视频免费| 中文字幕日韩欧美精品高清在线| 亚洲乱码一区av黑人高潮| 日本高清久久久| 亚洲精华液一区二区三区| 亚洲视频一区二区免费在线观看| 久久久综合亚洲91久久98| 国产精品女人久久久| 亚洲免费中文| 久久久久久有精品国产| 肉色超薄丝袜脚交69xx图片| 欧美日韩精品一区二区三区在线观看| 欧美日韩免费在线视频| av免费播放网址| 午夜激情在线| 国产精品理论片在线观看| 欧美精品v日韩精品v国产精品| 国产精品羞羞答答在线| 日本在线不卡一区| 日本成人在线视频网址| 国产污视频在线观看| 欧美在线影院| 久久成人人人人精品欧| 很污很黄的网站| 国产一区二区三区不卡视频网站| 亚洲国产高清福利视频| 波多野结衣中文字幕在线播放| 国产美女久久| 欧美色图在线观看| 丁香婷婷激情网| 久久毛片亚洲| 色香蕉成人二区免费| 黄色一级视频片| 僵尸再翻生在线观看| 亚洲国产毛片aaaaa无费看 | 国产精品综合| 2023亚洲男人天堂| 国产成人免费看| 国产日本精品| 欧美一级淫片播放口| 99精品视频99| 欧美一级二区| 日本欧美爱爱爱| 亚洲 欧美 中文字幕| 性色一区二区三区| 国产99久久精品一区二区| 日韩视频在线观看一区| 亚洲综合激情| 国产福利精品视频| 中文天堂在线播放| 黑人巨大精品欧美一区| 亚洲一区二区三区香蕉| 国产黄色一区二区| 成人综合婷婷国产精品久久蜜臀 | 国产mv久久久| 中文无码精品一区二区三区| 九九九久久久精品| 亚洲自拍欧美色图| 黄频在线免费观看| 91丨九色丨蝌蚪丨老版| 欧美亚洲另类在线一区二区三区| 国产毛片在线| 国产精品久久久久久久久图文区 | 国产精品815.cc红桃| 国产欧美高清视频在线| www日韩欧美| 久青草视频在线观看| 一区二区国产精品| 国产精品美女久久久久av超清| 亚洲中文一区二区三区| 国产成人精品亚洲日本在线桃色| 国偷自产av一区二区三区小尤奈| 国产中文字幕在线看| 亚洲欧洲精品一区二区三区不卡| 成人国产在线看| 亚洲小少妇裸体bbw| 欧美视频精品在线观看| 性一交一黄一片| 免费av一区| 久久的精品视频| 天天操天天摸天天干| 免播放器亚洲一区| 国产精品手机视频| av资源种子在线观看| 亚洲一区二区三区四区不卡| 少妇性l交大片| 日本一区影院| 国产性色av一区二区| 欧美成人一区二区三区高清| 视频在线在亚洲| 成人动漫视频在线观看免费| 高清国产福利在线观看| 亚洲一区二区在线播放相泽| 国产成人av影视| 98视频精品全部国产| 在线观看欧美成人| 欧美一级片免费在线观看| 国精品**一区二区三区在线蜜桃| 极品校花啪啪激情久久| 国产福利在线播放麻豆| 日本韩国精品在线| 免费a v网站| 久久久久午夜电影| 国产精品黄页免费高清在线观看| 蜜桃视频久久一区免费观看入口 | 亚洲欧美综合v| 精品无码人妻一区二区三区品| 免费人成精品欧美精品 | 你懂的视频在线免费| 亚洲一区二区三区中文字幕在线| 91制片厂毛片| 精品不卡一区| 欧美亚洲日本网站| 色婷婷在线视频| 一区二区三区在线高清| 日本中文字幕影院| 欧美一区二区三区激情视频| 97在线观看免费| 亚洲av无码一区二区三区dv| 综合网在线视频| 伊人网在线综合| 欧洲激情视频| 国产精品极品美女在线观看免费| 天天干,天天操,天天射| 亚洲午夜免费视频| 亚洲色图欧美另类| 海角社区69精品视频| 147欧美人体大胆444| 黄色成年人视频在线观看| 欧美日韩久久久一区| 精品无码在线观看| 日韩激情视频网站| 天天好比中文综合网| 成人啊v在线| 国产亚洲精品久久久| 青青草视频在线观看免费| 国产偷v国产偷v亚洲高清| 久热免费在线观看| 国产精品一线天粉嫩av| 国产精品99久久久久久久久久久久 | 制服视频三区第一页精品| 久久精品在线观看视频| 国产一本一道久久香蕉| 国产激情在线看| 视频一区日韩| 91精品国产91久久久久久| 午夜福利理论片在线观看| 精品久久久久久中文字幕| 国产美女喷水视频| 日韩电影在线免费| 亚洲伊人婷婷| 亚洲精品国产九九九| 久久久久久久久久婷婷| 天天操天天干天天干| 91福利在线免费观看| 日日碰狠狠添天天爽| 国产精品资源网站| 成人午夜精品久久久久久久蜜臀| 日韩美脚连裤袜丝袜在线| 国产成人黄色av| 婷婷激情在线| 精品久久久网站| 中文字幕视频网| 国产精品女人毛片| 下面一进一出好爽视频| 国产视频一区三区| 亚洲精品一区二区三区樱花 | 91精品国产综合久久久久久久久久| 印度午夜性春猛xxx交| 成人国产视频在线观看| www.国产区| 永久91嫩草亚洲精品人人| 国内一区二区三区在线视频| 国产亚洲精品精品国产亚洲综合| 欧美美女15p| 欧美孕妇孕交xxⅹ孕妇交| 欧美狂野另类xxxxoooo| www.99re7.com| 国产精品网曝门| 蜜臀视频在线观看| 日本欧美在线观看| 青草视频在线观看视频| 波多野结衣的一区二区三区| 99国产视频| 久久91导航| 欧美激情一二区| 中文字幕在线免费| 亚洲精品二三区| 99久久精品国产一区色| 色综合视频在线观看| 欧美成人片在线观看| 欧美国产禁国产网站cc| 性囗交免费视频观看| 国内一区二区视频| 欧美 国产 小说 另类| 欧美精品自拍| 亚洲一区二区免费视频软件合集| 欧美jizz19性欧美| 亚洲一区二区三区视频| 久久亚洲人体| 青青草精品毛片| 成人性生交大片免费看在线播放| 神马久久桃色视频| 日本1级在线| 亚洲国产另类久久精品| 国产日本精品视频| 精品视频123区在线观看| 国产69精品久久久久久久久久| 国产精品久久三| 国产成人精品无码免费看夜聊软件| 成人午夜视频在线观看| 伊人精品视频在线观看| 奇米精品一区二区三区四区 | 亚洲欧美资源在线| 五月天福利视频| 精品福利一区二区三区| av一区二区三| 欧美一区二区三区四区高清| 136福利视频导航| 在线免费观看日韩欧美| 国产伦精品一区二区三区视频网站| 亚洲成人一区二区| 国产一级av毛片| 一区二区三区欧美| 男女羞羞免费视频| 亚洲人亚洲人成电影网站色| 2017亚洲天堂| 中文字幕在线不卡视频| 中文字幕在线观看二区| 国产精品丝袜91| 成人黄色短视频| 日韩理论片中文av| 色婷婷在线视频观看| 亚洲久本草在线中文字幕| 一起操在线播放| 亚洲精品日韩专区silk | 欧美午夜视频在线观看| 欧美不卡视频在线观看| 欧美日韩一区免费| 亚洲婷婷综合网| 欧洲在线/亚洲| 亚洲天堂网视频| 欧美一级久久久久久久大片| 国产三级自拍视频| 精品国产伦一区二区三区观看体验| 精品免费久久久| 亚洲国产成人av在线| 婷婷开心激情网| 亚洲午夜激情免费视频 | 欧美激情女人20p| 麻豆成全视频免费观看在线看| 57pao精品| 国产成人精品亚洲日本在线观看| 国产欧美一区二区三区视频| 国产精品久久久久久久久久久久久久久| 91久久国产精品91久久性色| 91成人午夜| 精品午夜一区二区三区| 精品国产91久久久久久浪潮蜜月| 亚洲欧洲精品在线| 中文字幕一区二区三三| 国产在线精品91| 日韩高清欧美激情| 992kp免费看片| 99久久伊人精品| 国产又粗又黄又猛| 伊人开心综合网| www.com亚洲| 欧美二区三区的天堂| 欧美一区二不卡视频| 亚洲欧美一区二区三区在线| 欧美被日视频| 97国产suv精品一区二区62| 日韩漫画puputoon| av蓝导航精品导航| 国产欧美日韩免费观看| 香蕉视频免费版| 老司机一区二区三区| 日韩av一卡二卡三卡| 99久久精品免费| 成人信息集中地| 亚洲18色成人| 亚洲综合一区中| 亚洲精品视频中文字幕| yellow91字幕网在线| 欧美一级大片视频| 一区二区三区在线资源| 色噜噜狠狠色综合网| 一区视频在线看| 污视频网址在线观看| 91麻豆免费看| 激情综合五月网| 欧美日韩视频在线一区二区| 婷婷在线免费观看| 久久这里只有精品视频首页| 亚洲成人看片| 国产在线精品一区二区三区| 亚洲有吗中文字幕| 国产高潮免费视频| 91麻豆精品秘密| 国产无套内射又大又猛又粗又爽| 欧美三级日韩在线| 日本又骚又刺激的视频在线观看| 欧美日韩国产成人高清视频| julia一区二区三区中文字幕| 精品国产一区二区三区久久久久久| 午夜激情久久| 日韩不卡一二三| 久久久综合网站| 国产成人无码精品亚洲| 欧美大片国产精品| 黄色在线免费网站| 国产乱肥老妇国产一区二 | 亚洲无玛一区| 日韩av在线免费观看不卡| 日韩片在线观看| 午夜精品国产更新| 神马午夜一区二区| 久久久这里只有精品视频| 亚洲网址在线观看| 在线观看污视频| 国产成人精品网址| 永久免费看黄网站| 日韩情涩欧美日韩视频| 黄色网址在线免费播放| 国产综合香蕉五月婷在线| 日韩电影二区| 污污网站免费观看| 国产精品亲子乱子伦xxxx裸| 午夜视频网站在线观看| 在线成人激情视频| 亚洲一区二区三区四区| 色视频一区二区三区| 日本特黄久久久高潮| 操她视频在线观看| 欧美精品久久一区二区三区| 黄色网在线免费看| 亚洲va久久久噜噜噜| 欧美精选一区| 国产 xxxx| 狠狠久久亚洲欧美专区| 黄色在线网站| 国产精品第一页在线| 色综合天天爱| 黑人无套内谢中国美女| 亚洲国产综合色| 天堂网www中文在线| 国产精品91在线| 国产精品二区不卡| 女同性αv亚洲女同志| 午夜日韩在线观看| 美州a亚洲一视本频v色道| 国产精品扒开腿做爽爽爽男男| 欧美中文一区二区| 超碰91在线播放| 亚洲不卡av一区二区三区| 青青国产在线| 国产免费一区二区三区在线观看| 亚洲有吗中文字幕| 日本黄色动态图| 欧美午夜精品理论片a级按摩| 麻豆视频在线观看免费| 国产精品免费一区二区三区观看 | 亚洲色大成网站www| 国产精品高清免费在线观看| 羞羞答答成人影院www| 男女性杂交内射妇女bbwxz| 色综合久久88色综合天天| 免费超碰在线| 久久精彩视频| 久久99国产精品久久99 | 欧美日韩dvd在线观看| 牛牛精品视频在线| 日韩欧美精品一区二区| 粉嫩13p一区二区三区| 午夜精品免费观看| 欧美国产乱视频| 欧美在线色图| 国产黄色三级网站| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲一区二区三区高清视频| 久久99精品国产99久久6尤物| 欧美成人一区在线观看| 在线不卡一区二区三区| 婷婷综合另类小说色区| 欧美黑人激情| 日本精品一区| 成人激情小说乱人伦| 国产一区二区麻豆|