精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

粉嫩av免费一区二区三区| 精品国产依人香蕉在线精品| 91视频最新入口| 国产区视频在线| 韩国三级电影一区二区| 久久久97精品| 91人妻一区二区三区| 黄色在线看片| 国产色婷婷亚洲99精品小说| 91亚洲午夜在线| 日韩精品视频免费播放| 国产一区二区三区网| 欧美日韩精品二区第二页| 今天免费高清在线观看国语| 日韩中文字幕影院| 免费亚洲电影在线| 久久国产精品久久久久久久久久| 激情综合激情五月| 色尼玛亚洲综合影院| 国产精品久久久99| 精品欧美日韩| 国产一区二区在线视频观看| 亚洲经典三级| 日韩在线视频免费观看| 亚洲调教欧美在线| 成人在线观看免费播放| 亚洲一级片在线观看| 日韩欧美一区二区在线观看| 国产成a人亚洲精v品无码| 亚洲男女自偷自拍| 欧美日韩国产二区| 一级特黄曰皮片视频| 丁香综合av| 91麻豆精品国产91久久久久久久久 | 亚洲毛片aa| 人妻视频一区二区三区| 奇米色777欧美一区二区| 久久久久久久久久久久av| jizz18女人高潮| 欧美一区自拍| 欧美一区二区视频网站| 人人爽人人av| 91美女主播在线视频| 国产精品国产精品国产专区不片| 精品国产第一页| 99国产精品欲| 欧美aaaaaa午夜精品| 777国产偷窥盗摄精品视频| 午夜免费激情视频| 久久亚洲国产| 国产一区二区美女视频| 成人h动漫精品一区| 日韩一区免费| 欧美一区二区三区在线看| 欧美成人黑人猛交| 亚洲区欧洲区| 亚洲免费观看视频| 亚洲一区尤物| 在线观看av黄网站永久| 久久奇米777| 久久er99热精品一区二区三区 | 欧美6一10sex性hd| 亚洲日本在线视频观看| 亚洲国产日韩综合一区| 国产一区精品| 国产日韩在线不卡| 日韩精彩视频| av资源种子在线观看| 久久久三级国产网站| 精品欧美一区二区三区久久久 | 亚洲第一会所| 色88888久久久久久影院按摩| 欧美 国产 综合| 黄色漫画在线免费看| 亚洲国产成人av网| 日韩伦理在线免费观看| 97在线超碰| 欧美性xxxx极品高清hd直播 | caoprom在线| 亚洲 欧美综合在线网络| 欧美精品自拍视频| 春色校园综合激情亚洲| 欧美午夜精品久久久久久人妖| 免费黄色日本网站| 日韩av大片站长工具| 在线一区二区观看| 91国产精品视频在线观看| 黄色成人小视频| 欧美剧在线免费观看网站 | 色网站在线播放| 视频一区欧美精品| 91精品在线观看视频| 99久久精品国产一区色| 国产风韵犹存在线视精品| 成人免费看片网址| 日韩av资源| 91亚洲永久精品| 精品国产免费久久久久久尖叫| 黄色片一区二区| 91欧美一区二区| 亚洲国产一区二区三区在线播| 黄色一级大片在线免费看产| 亚洲色大成网站www久久九九| 永久久久久久| 欧美1—12sexvideos| 欧美性生交xxxxxdddd| 欧美日韩国产精品激情在线播放| 国产精品亚洲d| 日韩精品一区二区三区视频 | 六月丁香婷婷综合| 久久精品久久综合| 成人xxxxx色| 欧美日韩国产中文字幕在线| 亚洲欧美综合另类在线卡通| 日韩一级片免费视频| 色豆豆成人网| 精品少妇一区二区三区日产乱码| 国产又爽又黄无码无遮挡在线观看| 色男人天堂综合再现| 欧美激情中文网| 久久亚洲精品石原莉奈| 国产一区在线观看视频| 欧美精品尤物在线| a级网站在线播放| 色女孩综合影院| 亚洲av无一区二区三区久久| 久久av导航| 高清欧美性猛交xxxx黑人猛交| 国产一区二区视频免费| 成人一道本在线| 亚洲欧美国产精品桃花| 国模精品视频| 日韩欧美中文字幕一区| 亚洲黄色免费视频| 亚洲国产电影| 亚洲伊人久久大香线蕉av| 黄色av网站在线看| 亚洲午夜激情网页| 福利视频999| 欧美欧美黄在线二区| 久久久久久久久国产精品| 亚洲网站在线免费观看| 久久久99精品免费观看| 人妻少妇精品久久| 亚洲码欧美码一区二区三区| 在线精品高清中文字幕| 综合网在线观看| 波多野结衣亚洲一区| 日日噜噜夜夜狠狠久久丁香五月| 欧美free嫩15| 日韩精品在线看| 国产乡下妇女做爰毛片| 粉嫩蜜臀av国产精品网站| 男人的天堂视频在线| **国产精品| 日韩亚洲欧美中文高清在线| 欧美日韩一级黄色片| 94色蜜桃网一区二区三区| 国产va亚洲va在线va| av成人资源网| 久久久久久久色| 男人天堂av网| 亚洲电影激情视频网站| 午夜剧场免费看| 在线观看视频日韩| 国产精品免费区二区三区观看| aa在线视频| 日韩精品一区二区三区蜜臀| 麻豆亚洲av熟女国产一区二| 国产v日产∨综合v精品视频| 亚洲 欧美 综合 另类 中字| 在线视频亚洲欧美中文| 欧美精品福利在线| 手机看片一区二区| 欧美视频在线免费看| 中文字幕一二三四区| 久久激情综合| 亚洲在线观看一区| 国产成人免费视频网站视频社区 | 国产在线xxx| 亚洲激情电影中文字幕| 少妇太紧太爽又黄又硬又爽| 久久免费偷拍视频| 午夜免费福利视频在线观看| 国产精品久久久久9999赢消| 亚洲精品日产aⅴ| 欧美日韩经典丝袜| 日韩成人中文字幕在线观看| 免费黄色网址在线| 欧美激情一区二区三区不卡 | 天堂精品一区二区三区| 男女啪啪999亚洲精品| 欧美精品一区三区| 天天躁日日躁狠狠躁喷水| 色综合av在线| www.97视频| www.日本不卡| 亚洲成人福利在线观看| 久久久久久久久99精品大| 国产精品日韩高清| 超碰这里只有精品| 不卡中文字幕av| 手机福利在线| 4438x亚洲最大成人网| 久久久久99精品| 国产日韩视频一区二区三区| 五月天婷婷在线观看视频| 99精品国产在热久久婷婷| 亚洲人一区二区| а√中文在线天堂精品| 国产精品黄页免费高清在线观看| huan性巨大欧美| 亚洲欧美激情一区| www.桃色av嫩草.com| 色婷婷综合激情| 欧美国产在线看| 久久精品一区二区| 大尺度在线观看| 久久精品国内一区二区三区| 免费不卡av在线| 99久久99久久精品国产片桃花| 久久99精品久久久久久水蜜桃 | 日韩免费在线| 久久人人九九| 视频国产精品| 国产美女搞久久| 乱人伦视频在线| 欧美成人精品一区二区三区| 国产一级片在线| 亚洲成色777777在线观看影院| 91在线观看喷潮| 色综合天天综合在线视频| 麻豆成人在线视频| 中文字幕中文在线不卡住| 亚洲天堂资源在线| 成人自拍视频在线| 手机精品视频在线| 日本成人在线视频网站| 亚洲爆乳无码专区| 亚洲区第一页| 国风产精品一区二区| 日韩av在线播放网址| 欧美久久久久久| 久草精品视频| 高清一区二区三区视频| 亚洲综合资源| 国产免费亚洲高清| av免费在线一区| 国产福利成人在线| 韩日精品一区二区| 91福利视频网| 成人免费网站观看| 国内精品视频久久| 伦理av在线| 欧美激情一区二区三区在线视频观看| 国产网站在线免费观看| 最近2019年手机中文字幕| 国产在线网站| 国产香蕉97碰碰久久人人| 男男激情在线| 亚洲香蕉成视频在线观看| 激情综合闲人网| 国产一区二区三区视频 | 9999精品| 亚洲综合一区二区不卡| 日韩成人在线观看视频| 亚洲专区国产精品| 免费观看性欧美大片无片| 亚洲自拍欧美另类| 136导航精品福利| 国产精品一级久久久| 国产一区二区三区亚洲| 久久久婷婷一区二区三区不卡| 亲子伦视频一区二区三区| 精品国产综合| 国产欧美日韩在线一区二区| 日本午夜精品一区二区| 色综合久久网| 99精品一级欧美片免费播放| 欧美三级网页| 18岁网站在线观看| 日产国产高清一区二区三区 | 国产在线88av| 国产精品视频久| 成人午夜毛片| 99re在线视频观看| 欧美人体视频| 亚洲欧美日产图| 欧美破处大片在线视频| 男人添女人下部高潮视频在观看| 亚洲中午字幕| 99色精品视频| 黄色日韩网站视频| 亚洲麻豆一区二区三区| 久久―日本道色综合久久| 午夜激情视频在线播放| 亚洲国产精品自拍| 无码视频一区二区三区| 在线成人免费视频| av av片在线看| 亚洲成色777777女色窝| av资源网站在线观看| 欧美第一页在线| 91久久国产综合久久91猫猫| 成人在线小视频| 日本天堂一区| 日日噜噜噜夜夜爽爽| 亚洲精品一二| 加勒比av中文字幕| 99精品久久久久久| 中文字幕资源站| 欧美日韩美女视频| 国产农村妇女毛片精品| 亚洲男女性事视频| av小次郎在线| 国产精品久久久久久av下载红粉 | av网址在线看| 国产91色在线免费| 911亚洲精品| 亚洲欧美日韩精品综合在线观看 | 久久久免费av| 亚洲欧洲二区| 欧美日韩精品免费看 | 精品国产一区av| 午夜影院在线观看国产主播| 91视频国产精品| av在线不卡顿| 欧美在线观看成人| 国产成人午夜高潮毛片| 久草手机视频在线观看| 在线观看视频一区二区欧美日韩| 日批视频在线播放| 欧美日韩xxx| 超碰国产精品一区二页| 欧洲精品久久| 亚洲女优在线| 黄色短视频在线观看| 亚洲综合成人网| 国产精品欧美久久久久天天影视| 亚洲天堂视频在线观看| 国产精品电影| 国产在线一区二区三区播放| 在线中文字幕亚洲| 天天干天天爽天天射| 久久久亚洲精品一区二区三区| av成人免费网站| 正在播放亚洲一区| 蝌蚪视频在线播放| 日本道色综合久久影院| 狼人天天伊人久久| 波多野结衣综合网| 成人美女视频在线看| 中文字幕影音先锋| 日韩一区二区三区高清免费看看| 黄色网在线看| 亚洲一区二区免费| 91精品婷婷色在线观看| 午夜视频在线网站| 一区免费观看视频| 国产精品久久久久久免费免熟 | 激情网站在线| 国产伦精品一区二区三区四区免费 | 国产一区二区三区四区在线| 日本久久电影网| 九色在线观看视频| 国产精品福利网站| 欧美日一区二区| 日日躁夜夜躁aaaabbbb| 国产精品视频一区二区三区不卡| 中文字幕1区2区3区| 色妞一区二区三区| 亚洲精品伦理| 日韩精品手机在线观看| 国产精品99久久久久久似苏梦涵| 日韩在线观看视频一区二区| 精品欧美乱码久久久久久1区2区| 福利小视频在线| 久久久久九九九| 一本色道久久精品| 在线免费观看日韩av| 欧美视频13p| 成人性生交大片免费看午夜| 国产日韩欧美在线观看| 日韩不卡一区| 台湾佬美性中文| 亚洲a一区二区| 国产特黄在线| 亚洲www视频| 99国产成+人+综合+亚洲欧美| 91网站免费入口| 欧美精品777| 国产蜜臀在线| 日韩av在线一区二区三区| 国产精品一区二区黑丝| 日本中文字幕二区| 一区二区三区成人| 国产三级视频在线看| 国产一区二区自拍| 国产一区在线观看麻豆| 91久久国产综合久久91|