在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

【潤(rùn)和軟件DAYU200開(kāi)發(fā)板體驗(yàn)】三方庫(kù)移植之NAPI開(kāi)發(fā)[1]—Hello OpenHarmony NAPI

開(kāi)發(fā)板試用精選 ? 來(lái)源:開(kāi)發(fā)板試用 ? 作者:電子發(fā)燒友論壇 ? 2022-10-12 10:38 ? 次閱讀

本文來(lái)源電子發(fā)燒友社區(qū),作者:離北況歸, 帖子地址:https://bbs.elecfans.com/jishu_2308792_1_1.html


本文通過(guò)一個(gè)Hello OpenHarmony NAPI樣例講述了NPAI接口開(kāi)發(fā)基礎(chǔ)知識(shí)。開(kāi)發(fā)基于最新的OpenHarmony3.2Beta3版本及其對(duì)應(yīng)SDK。標(biāo)準(zhǔn)系統(tǒng)開(kāi)發(fā)板為潤(rùn)和軟件dayu200。(附開(kāi)發(fā)板體驗(yàn)完整視頻,詳見(jiàn)作者原帖子)

將C/C++ 三方庫(kù)移植到OpenHarmony標(biāo)準(zhǔn)系統(tǒng)后,需要通過(guò)NAPI框架將其C/C++ 接口轉(zhuǎn)換成JS/ETS接口給應(yīng)用層調(diào)用。


通過(guò)本文您將熟悉

  • 如何注冊(cè)NAPI模塊及接口。

  • 如何在ArkUI eTS代碼中調(diào)用擴(kuò)展的NAPI接口。

  • full-SDK的替換。

    什么是NAPI

  • NAPI(Native API)組件是一套對(duì)外接口基于Node.js N-API規(guī)范開(kāi)發(fā)的原生模塊擴(kuò)展開(kāi)發(fā)框架。

image.png

  • OpenHarmony 標(biāo)準(zhǔn)系統(tǒng)應(yīng)用開(kāi)發(fā)基于ArkUI框架,開(kāi)發(fā)語(yǔ)言使用JS/eTS。部分業(yè)務(wù)場(chǎng)景依賴使用現(xiàn)有的C/C++ 庫(kù),或?yàn)榱双@取更高的性能。OpenHarmony提供NAPI機(jī)制,用于規(guī)范封裝IO、CPU密集型、OS底層等能力并對(duì)外暴露JS接口,通過(guò)NAPI實(shí)現(xiàn)JS和C/C++代碼的互相訪問(wèn).

    • 例如: 鐘祿平和林嘉誠(chéng)老師在如何在OpenHarmony上使用SeetaFace2人臉識(shí)別庫(kù)?一文中,重點(diǎn)講解了NAPI接口如何實(shí)現(xiàn)OpenCV以及SeetaFace的調(diào)用。一句話概括就是,鐘祿平和林嘉誠(chéng)老師講述了移植了三方庫(kù)后通過(guò)NAPI將庫(kù)的C/C++接口變成JS/ETS接口給應(yīng)用層調(diào)用。
  • OpenHarmony 中的 N-API 定義了由 JS/ETS 語(yǔ)言編寫(xiě)的代碼和 native 代碼(使用 C/C++ 編寫(xiě))交互的方式,由 Node.js N-API 框架擴(kuò)展而來(lái)。

  • N-API:Native Application Programming Interface(本地應(yīng)用程序接接口)
  • 什么是Node.js N-API 框架
    Node.js N-API為開(kāi)發(fā)者提供了一套C/C++ API用于開(kāi)發(fā)Node.js的Native擴(kuò)展模塊。從Node.js 8.0.0開(kāi)始,N-API以實(shí)驗(yàn)性特性作為Node.js本身的一部分被引入,并且從Node.js 10.0.0開(kāi)始正式全面支持N-API。

添加OpenHarmony自定義子系統(tǒng)、組件、模塊

  • 這部分內(nèi)容涉及三方庫(kù)移植,為便于本篇NAPI基礎(chǔ)的學(xué)習(xí)。筆者在此自定義一個(gè)子系統(tǒng)用于開(kāi)發(fā)NAPI。如在已存在的子系統(tǒng)組件中添加擴(kuò)展NAPI,則跳過(guò)此步。
  • 需要準(zhǔn)備好OpenHarmonyBeta3源碼和編譯環(huán)境

添加子系統(tǒng)、組件

直接在OpenHarmony源碼根目錄創(chuàng)建子系統(tǒng)文件夾,取名mysubsys。并在目錄下添加子系統(tǒng)的構(gòu)建配置文件ohos.build
完整內(nèi)容如下:

{
  "subsystem": "mysubsys",
  "parts": {
    "hello": {
      "module_list": [
        "http://mysubsys/hello/hellonapi:hellonapi"
      ],
      "inner_kits": [
      ],
      "system_kits": [
      ],
      "test_list": [
      ]
    }
  }
}
  • 另外ohos.build里面不支持加注釋,后面編譯的時(shí)候會(huì)莫名其妙報(bào)錯(cuò)。別問(wèn),問(wèn)就是筆者踩過(guò)坑了。(好像也沒(méi)必要加注釋)
    image.png
    需要明白以下知識(shí)點(diǎn):
"subsystem": "mysubsys",
  • subsystem后面的mysubsy是子系統(tǒng)的名稱。
"parts": {
    "hello": {
   }
  }
  • hello是組件名稱,被mysubsys子系統(tǒng)包含
"module_list": [
        "http://mysubsys/hello/hellonapi:hellonapi"
  • hellonapi是模塊名,被hello組件包含。

接著將子系統(tǒng)配置到源碼下buildsubsystem_config.json文件,在該文件中插入如下內(nèi)容。

"mysubsys": {
    "project": "hmf/mysubsys",
    "path": "mysubsys",
    "name": "mysubsys",
    "dir": ""
  }
  • OpenHarmony系統(tǒng)架構(gòu)中,子系統(tǒng)是一個(gè)邏輯概念,它具體由對(duì)應(yīng)的組件構(gòu)成。組件是對(duì)子系統(tǒng)的進(jìn)一步拆分,可復(fù)用的軟件單元,它包含源碼、配置文件、資源文件和編譯腳本;能獨(dú)立構(gòu)建,以二進(jìn)制方式集成,具備獨(dú)立驗(yàn)證能力的二進(jìn)制單元。

本示例按子系統(tǒng)system > 組件part > 組件module 創(chuàng)建了3級(jí)目錄

mysubsys                    -- 子系統(tǒng)目錄
├── hello
│   └── hellonapi           -- 組件目錄
│       ├── BUILD.gn
│       └── hellonapi.cpp   -- 組件module目錄
└── ohos.build

源碼實(shí)現(xiàn)

最后在組件目錄下中創(chuàng)建代碼文件hellonapi.cpp

完整內(nèi)容如下:

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

//接口業(yè)務(wù)實(shí)現(xiàn)C/C++代碼
//std::string 需要引入string頭文件,#include 
static napi_value getHelloString(napi_env env, napi_callback_info info) {
  napi_value result;
  std::string words = "Hello OpenHarmony NAPI";
  NAPI_CALL(env, napi_create_string_utf8(env, words.c_str(), words.length(), &result));
  return result;
}

// napi_addon_register_func
//2.指定模塊注冊(cè)對(duì)外接口的處理函數(shù),具體擴(kuò)展的接口在該函數(shù)中聲明
static napi_value registerFunc(napi_env env, napi_value exports)
{
    static napi_property_descriptor desc[] = {
        // 聲明該napi_module對(duì)外具體的提供的API
        DECLARE_NAPI_FUNCTION("getHelloString", getHelloString),
    };
    NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc));
    return exports;
}

// 1.先定義napi_module,指定當(dāng)前NAPI模塊對(duì)應(yīng)的模塊名
//以及模塊注冊(cè)對(duì)外接口的處理函數(shù),具體擴(kuò)展的接口在該函數(shù)中聲明
// nm_modname: 模塊名稱,對(duì)應(yīng)eTS代碼為import nm_modname from '@ohos.ohos_shared_library_name'
//示例對(duì)應(yīng)eTS代碼為:import hellonapi from '@ohos.hellonapi'
static napi_module hellonapiModule = {
    .nm_version = 1,
    .nm_flags = 0,
    .nm_filename = nullptr,
    .nm_register_func = registerFunc, // 模塊對(duì)外接口注冊(cè)函數(shù)
    .nm_modname = "hellonapi",  // 自定義模塊名
    .nm_priv = ((void*)0),
    .reserved = { 0 },
};

//3.模塊定義好后,調(diào)用NAPI提供的模塊注冊(cè)函數(shù)napi_module_register(napi_module* mod)函數(shù)注冊(cè)到系統(tǒng)中。
// register module,設(shè)備啟動(dòng)時(shí)自動(dòng)調(diào)用此constructor函數(shù),把模塊定義的模塊注冊(cè)到系統(tǒng)中
extern "C" __attribute__((constructor)) void hellonapiModuleRegister()
{
    napi_module_register(&hellonapiModule);
}

代碼解析如下:

接口業(yè)務(wù)實(shí)現(xiàn)C/C++代碼

// std::string 需要引入string頭文件,#include 
static napi_value getHelloString(napi_env env, napi_callback_info info) {
  napi_value result;
  std::string words = "Hello OpenHarmony NAPI";
  NAPI_CALL(env, napi_create_string_utf8(env, words.c_str(), words.length(), &result));
  return result;
}

添加NAPI接口頭文件

NAPI提供了提供了一系列接口函數(shù),聲明包含如下2個(gè)頭文件中,先添加這2個(gè)頭文件到hellonapi.cpp

#include "napi/native_api.h"
#include "napi/native_node_api.h"
  • native_api.h和native_node_api.h這兩個(gè)頭文件
    • 在OpenHarmony-3.1-release源碼下是在//foundation/ace/napi/interfaces/kits目錄下
    • 在3.2beta3版本中分別在//foundation/arkui/napi/interfaces/kits和//foundation/arkui/napi/interfaces/inner_api目錄下了。

image.png

注冊(cè)NAPI模塊、添加接口聲明

定義的hellonapi模塊,其對(duì)應(yīng)結(jié)構(gòu)體為napi_module。

  • 指定當(dāng)前NAPI模塊對(duì)應(yīng)的模塊名以及模塊注冊(cè)對(duì)外接口的處理函數(shù),具體擴(kuò)展的接口在該函數(shù)中聲明。
// 定義napi_module
// nm_modname: 模塊名稱,對(duì)應(yīng)eTS代碼為import nm_modname from '@ohos.ohos_shared_library_name'
// 示例對(duì)應(yīng)eTS代碼為:import hellonapi from '@ohos.hellonapi'
static napi_module hellonapiModule = {
    .nm_version = 1,
    .nm_flags = 0,
    .nm_filename = nullptr,
    .nm_register_func = registerFunc, // 模塊對(duì)外接口注冊(cè)函數(shù)
    .nm_modname = "hellonapi",  // 自定義模塊名
    .nm_priv = ((void*)0),
    .reserved = { 0 },
};
  • NAPI提供DECLARE_NAPI_FUNCTION(name, func)函數(shù)用于聲明api,傳入名稱和其他實(shí)現(xiàn)函數(shù)。在registerFunc函數(shù)中添加DECLARE_NAPI_FUNCTION,本例添加了一個(gè)getString接口。
  • 模塊定義好后,調(diào)用NAPI提供的模塊注冊(cè)函數(shù)napi_module_register(napi_module* mod)函數(shù)注冊(cè)到系統(tǒng)中。
// napi_addon_register_func
static napi_value registerFunc(napi_env env, napi_value exports)
{
    static napi_property_descriptor desc[] = {
        // 聲明該napi_module對(duì)外具體的提供的API
        DECLARE_NAPI_FUNCTION("getHelloString", getHelloString),
    };
    NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc));
    return exports;
}

自定義子系統(tǒng)構(gòu)建

hellonapi編譯gn化,新增gn工程構(gòu)建腳本。

在模塊hellonapi目錄下新建BUILD.gn文件,內(nèi)容如下:

gn文件支持注釋,以#開(kāi)頭

import("http://build/ohos.gni")

#ohos_shared_library()中的hellonapi決定了生成動(dòng)態(tài)庫(kù)的名稱,增量編譯階段生成動(dòng)態(tài)庫(kù)libhellonapi.z.so 

ohos_shared_library("hellonapi") {   

   include_dirs = [
   #NAPI頭文件目錄
   "http://foundation/arkui/napi/interfaces/kits", 

   #根據(jù)增量編譯階段報(bào)錯(cuò)添加的頭文件目錄
   "http://foundation/arkui/napi/interfaces/inner_api", 
   "http://third_party/node/src"                       
  ]

   #根據(jù)增量編譯時(shí)clang編譯器報(bào)警,添加的cflag
  cflags_cc = [ 
   #編譯時(shí)報(bào)錯(cuò)提示"-Werror",則加上"-Wno-error"
          "-Wno-error", 
   #編譯時(shí)報(bào)錯(cuò)提示"-Wunused-function",則加上"-Wno-unused-function"
          "-Wno-unused-function", 
  ]
   
  #編譯需要的源文件
  sources = [
    "hellonapi.cpp"
  ]

  #指定編譯依賴libace_napi.z.so動(dòng)態(tài)庫(kù)
  deps = [ "http://foundation/arkui/napi:ace_napi" ] 

  #指定庫(kù)生成的路徑
  #libhellonapi.z.so會(huì)安裝在rk3568開(kāi)發(fā)板的system/lib/module目錄下
  relative_install_dir = "module"
  
  #子系統(tǒng)名稱是mysubsys
  subsystem_name = "mysubsys"
  
  #組件名稱是hello
  part_name = "hello"
}

修改產(chǎn)品配置

將組件添加到需要的產(chǎn)品配置文件,源碼目錄下的productdefine/common/products/ohos-arm64.json。

  • 插入位置任意,但要注意行尾的逗號(hào),確保格式j(luò)son文件格式正確。
"parts":{
    ...
    "mysubsys:hello":{},
    ...
  }
  • mysubsys是本示例自定義的子系統(tǒng)名稱
  • hello是自定義子系統(tǒng)下的組件名稱
  • parts格式如下:
"parts":{
        "部件所屬子系統(tǒng)名:部件名":{}
    }

修改build/subsystem_config.json

新增子系統(tǒng)定義。

  • subsystem_config.json文件定義了有哪些子系統(tǒng)以及這些子系統(tǒng)所在文件夾路徑,添加子系統(tǒng)時(shí)需要說(shuō)明子系統(tǒng)path與name,分別表示子系統(tǒng)路徑和子系統(tǒng)名。

注意json文件也不支持注釋!!!

"mysubsys": {
    "project": "hmf/mysubsys",
    "path": "mysubsys",
    "name": "mysubsys"
}

修改vendor/hihope/rk3568/config.json文件

將mysubsys子系統(tǒng)添加至rk3568開(kāi)發(fā)板,在vendor目錄下新增產(chǎn)品的定義。

{
      "subsystem": "mysubsys",
      "components": [
        {
          "component": "hello",
          "features": []
        }
      ]
    }

編譯燒錄

先進(jìn)行增量編譯出子系統(tǒng)的動(dòng)態(tài)庫(kù),增量編譯沒(méi)有報(bào)錯(cuò)后。再全量編譯出鏡像,將其燒錄到開(kāi)發(fā)板上

  • 增量編譯命令
./build.sh --product-name rk3568 --ccache --build-target=hellonapi --target-cpu arm64

image.png

  • 全量編譯和燒錄
    這部分的內(nèi)容不重復(fù)敘述,大家可以參考社區(qū)文章。

鏡像文件在源碼目錄下位置如下:
image.png

調(diào)用接口

full-SDK替換(可選)

從OpenHarmony 3.2 Beta2起,SDK會(huì)同時(shí)提供Public SDK和Full SDK。通過(guò)DevEco Studio默認(rèn)獲取的SDK為Public SDK。
兩者差異如下

  • Public SDK
    • 面向應(yīng)用開(kāi)發(fā)者提供,不包含需要使用系統(tǒng)權(quán)限的系統(tǒng)接口。通過(guò)DevEco Studio默認(rèn)獲取的SDK為Public SDK。
  • Full SDK
    • 面向OEM廠商提供,包含了需要使用系統(tǒng)權(quán)限的系統(tǒng)接口。使用Full SDK時(shí)需要手動(dòng)從鏡像站點(diǎn)獲取,并在DevEco Studio中替換

筆者使用的DevEco Studio版本為3.0.0.993,即DevEco Studio 3.0。API為API9。
image.png
image.png

full-SDK替換請(qǐng)參考官方文檔:full-SDK替換指南

若提示找不到npm,需要配置一下環(huán)境變量,將以下路徑添加到環(huán)境變量中即可
image.png

image.png

D:DevEco Studioohossdketsbuild-toolsets-loader

image.png

創(chuàng)建OpenHarmony標(biāo)準(zhǔn)應(yīng)用

新建項(xiàng)目,選擇OpenHarmony。
image.png
compile sdk選擇9,其他保持默認(rèn)即可。
image.png

插一句題外話,3.1release版本發(fā)布的時(shí)候。華為是把DevEco Studio分成了OpenHarmony和HarmonyOS兩個(gè)版本的,現(xiàn)在又合并到一起了。

image.png
image.png

調(diào)用接口

  • 調(diào)用方式和ArkUI框架提供的API一樣,先import引入擴(kuò)展的NAPI模塊,后直接調(diào)用。

image.png

index.ets內(nèi)容如下:

import prompt from '@system.prompt'

// 引入擴(kuò)展的NAPI模塊 
// 在hellonapi.cpp文件中定義nm_modname(模塊名稱)為hellonapi
// 在BUILD.gn文件中定義ohos_shared_library結(jié)構(gòu)體名稱為hellonapi
// 所以是import hellonapi from '@ohos.hellonapi'
import hellonapi from '@ohos.hellonapi'


@Entry
@Component
struct HelloNAPI {
  build() {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
      Button("NAPI: hellonapi.getHelloString()").margin(10).fontSize(24).onClick(() => {
        // 調(diào)用getHelloString接口
        let strFromNAPI = hellonapi.getHelloString()
        prompt.showToast({ message: strFromNAPI })
      })
    }
    .width('100%')
    .height('100%')
  }
}

然后選擇自動(dòng)簽名
image.png

image.png

將應(yīng)用安裝到dayu200開(kāi)發(fā)板上
image.png

運(yùn)行效果如下:
動(dòng)畫(huà)2.gif

  • 也可以參考其他模塊的.d.ts創(chuàng)建擴(kuò)展模塊@ohos.hellonapi.d.ts定義文件,放到IDE安裝OpenHarmony SDK的目錄路徑ohossdkets3.2.7.5api下。
    • .d.ts文件的命名為@ohos.ohos_shared_library_name.d.ts,ohos_shared_library為BUID.gn文件中定義的動(dòng)態(tài)庫(kù)名稱image.png

@ohos.hellonapi.d.ts內(nèi)容如下:

declare namespace hellonapi {
	function getHelloString(): string;
    /**
     * 
     *
     * @since 9
     * @syscap SystemCapability.HiviewDFX.HiAppEvent
     */

}
export default hellonapi;
  • 其中@syscap SystemCapability.HiviewDFX.HiAppEvent語(yǔ)句在.d.ts文件中一定要添加,否則IDE還是會(huì)報(bào)錯(cuò)找不到該文件。
  • 其中declare namespace hellonapi的hellonapi是BUILD.gn中的定義的ohos_shared_library_name。
  • 其中function getHelloString(): string;中的getHelloString()是hellonapi.cpp文件中指定的模塊注冊(cè)對(duì)外接口的處理函數(shù)

IDE問(wèn)題掃描如下:
image.png

如果不新建@ohos.hellonapi.d.ts放在sdkets3.2.7.5api,則IDE會(huì)報(bào)錯(cuò)
image.png

標(biāo)準(zhǔn)應(yīng)用編譯不是強(qiáng)依賴OpenHarmony SDK,所以可忽略IDE中告警,直接編譯打包hap。但是有的時(shí)候IDE會(huì)提示找不到@ohos.hellonapi.d.ts,然后有小概率的機(jī)會(huì)無(wú)法安裝hap。這個(gè)時(shí)候就要參考o(jì)hossdkets3.2.7.5api下的.d.ts文件編寫(xiě)@ohos.hellonapi.d.ts了。

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

Native API中支持的標(biāo)準(zhǔn)庫(kù)

表1OpenHarmony支持的標(biāo)準(zhǔn)庫(kù)

名稱 簡(jiǎn)介
標(biāo)準(zhǔn)C庫(kù) libc、libm、libdl組合實(shí)現(xiàn)C11標(biāo)準(zhǔn)C庫(kù)。
標(biāo)準(zhǔn)C++庫(kù) libc++是C++標(biāo)準(zhǔn)庫(kù)的一種實(shí)現(xiàn)。
OpenSL ES OpenSL ES是一個(gè)嵌入式跨平臺(tái)的音頻處理庫(kù)。
zlib Zlib是基于C/C++語(yǔ)言實(shí)現(xiàn)的一個(gè)通用的數(shù)據(jù)壓縮庫(kù)。
EGL EGL是渲染API與底層原生窗口系統(tǒng)之間的一種標(biāo)準(zhǔn)的軟件接口。
OpenGL ES OpenGL ES是一個(gè)嵌入式跨平臺(tái)的為 3D 圖形處理硬件指定標(biāo)準(zhǔn)的軟件接口。
聲明:本文內(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)投訴
  • dayu200
    +關(guān)注

    關(guān)注

    1

    文章

    26

    瀏覽量

    1444
  • 潤(rùn)和軟件
    +關(guān)注

    關(guān)注

    1

    文章

    307

    瀏覽量

    1119
收藏 人收藏

    評(píng)論

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

    基于小凌派RK2206開(kāi)發(fā)板OpenHarmony如何使用IoT接口控制FLASH外設(shè)

    1、實(shí)驗(yàn)簡(jiǎn)介本實(shí)驗(yàn)將演示如何在小凌派-RK2206開(kāi)發(fā)板上使用IOT庫(kù)的FLASH接口,進(jìn)行FLASH編程開(kāi)發(fā)。例程將創(chuàng)建一個(gè)任務(wù),實(shí)現(xiàn)FLASH讀寫(xiě)操作。例程源代碼:https
    的頭像 發(fā)表于 04-22 14:49 ?199次閱讀
    基于小凌派RK2206<b class='flag-5'>開(kāi)發(fā)板</b>:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口控制FLASH外設(shè)

    基于小凌派RK2206開(kāi)發(fā)板OpenHarmony如何使用IoT接口控制GPIO外設(shè)

    1、案例簡(jiǎn)介本案例主要是如何在小凌派-RK2206開(kāi)發(fā)板上使用IOT庫(kù)的GPIO接口,進(jìn)行GPIO編程開(kāi)發(fā)。例程將創(chuàng)建一個(gè)任務(wù),通過(guò)配置GPIO引腳,實(shí)現(xiàn)GPIO讀寫(xiě)操作。例程源代碼:
    的頭像 發(fā)表于 04-11 15:36 ?433次閱讀
    基于小凌派RK2206<b class='flag-5'>開(kāi)發(fā)板</b>:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口控制GPIO外設(shè)

    北京迅為RK3568開(kāi)發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開(kāi)發(fā)內(nèi)核HDF驅(qū)動(dòng)框架架構(gòu)

    北京迅為RK3568開(kāi)發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開(kāi)發(fā)內(nèi)核HDF驅(qū)動(dòng)框架架構(gòu)
    的頭像 發(fā)表于 03-11 14:13 ?909次閱讀
    北京迅為RK3568<b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>OpenHarmony</b>系統(tǒng)南向驅(qū)動(dòng)<b class='flag-5'>開(kāi)發(fā)</b>內(nèi)核HDF驅(qū)動(dòng)框架架構(gòu)

    【北京迅為】itop-3568 開(kāi)發(fā)板openharmony鴻蒙燒寫(xiě)及測(cè)試-第1章 體驗(yàn)OpenHarmony—燒寫(xiě)鏡像

    【北京迅為】itop-3568 開(kāi)發(fā)板openharmony鴻蒙燒寫(xiě)及測(cè)試-第1章 體驗(yàn)OpenHarmony—燒寫(xiě)鏡像
    的頭像 發(fā)表于 03-04 16:31 ?363次閱讀
    【北京迅為】itop-3568 <b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>openharmony</b>鴻蒙燒寫(xiě)及測(cè)試-第<b class='flag-5'>1</b>章 體驗(yàn)<b class='flag-5'>OpenHarmony</b>—燒寫(xiě)鏡像

    三方的DLP3010-LC開(kāi)發(fā)板USB轉(zhuǎn)I2C失敗怎么解決?

    我們從第三方光機(jī)廠商購(gòu)買(mǎi)了DLP3010-LC開(kāi)發(fā)板,該開(kāi)發(fā)板對(duì)外只有I2C接口,需要自己購(gòu)買(mǎi)了USB轉(zhuǎn)I2C模塊,于是我們購(gòu)買(mǎi)了TI推薦的CYPRESS的CY7C65215開(kāi)發(fā)板U
    發(fā)表于 02-28 06:51

    【貝啟科技BQ3568HM開(kāi)源鴻蒙開(kāi)發(fā)板深度試用報(bào)告】2 - 智能家居中控屏界面設(shè)計(jì):打造便捷的家居控制體驗(yàn)

    綠色的LED燈代表我們用來(lái)控制的燈光。 ? 總結(jié) OpenHarmony開(kāi)發(fā)效率還是很高的,借助于ArkTS和NAPI接口,我們快速實(shí)現(xiàn)了一個(gè)智能家居中控屏原型工程,并成功在BQ3568HM
    發(fā)表于 01-24 16:11

    AKI跨語(yǔ)言調(diào)用庫(kù)神助攻C/C++代碼遷移至HarmonyOS NEXT

    ,AKI已上線OpenHarmony開(kāi)源社區(qū),“OpenHarmony三方庫(kù)中心倉(cāng)網(wǎng)站”搜索“AKI”即可了解體驗(yàn)。期待更多廠商和開(kāi)發(fā)者下載
    發(fā)表于 01-02 17:08

    OpenHarmony源碼編譯后燒錄鏡像教程,RK3566鴻蒙開(kāi)發(fā)板演示

    本文介紹瑞芯微主板/開(kāi)發(fā)板編譯OpenHarmony源碼后燒錄鏡像的教程,觸覺(jué)智能Purple Pi OH鴻蒙開(kāi)發(fā)板演示。搭載了瑞芯微RK3566四核處理器,樹(shù)莓派卡片電腦設(shè)計(jì),支持開(kāi)源鴻蒙O
    的頭像 發(fā)表于 12-30 10:08 ?526次閱讀
    <b class='flag-5'>OpenHarmony</b>源碼編譯后燒錄鏡像教程,RK3566鴻蒙<b class='flag-5'>開(kāi)發(fā)板</b>演示

    dayu200 rk3568 openharmony5.0 sim卡 通話服務(wù)

    想請(qǐng)問(wèn)一下有人在dayu200 rk3568上插過(guò)sim卡并且成功完成過(guò)通話服務(wù)嗎? 我現(xiàn)在在dayu200上燒錄了openHarmony release 5.0.0版本的鏡像,在上面插上了sim卡,但是仍然顯示未檢測(cè)到sim卡
    發(fā)表于 12-26 16:52

    OpenHarmony怎么修改DPI密度值?觸覺(jué)智能RK3566鴻蒙開(kāi)發(fā)板演示

    開(kāi)源鴻蒙OpenHarmony系統(tǒng)下,修改DPI密度值的方法,觸覺(jué)智能Purple Pi OH鴻蒙開(kāi)發(fā)板演示,搭載了瑞芯微RK3566四核處理器,Laval鴻蒙社區(qū)推薦開(kāi)發(fā)板,已適配全新開(kāi)源鴻蒙
    的頭像 發(fā)表于 12-24 11:46 ?522次閱讀
    <b class='flag-5'>OpenHarmony</b>怎么修改DPI密度值?觸覺(jué)智能RK3566鴻蒙<b class='flag-5'>開(kāi)發(fā)板</b>演示

    【RA8D1試用活動(dòng)】RA8D1B-CPKCOR開(kāi)發(fā)板移植linux

    【RA8D1試用活動(dòng)】RA8D1B-CPKCOR開(kāi)發(fā)板移植linux
    的頭像 發(fā)表于 11-16 01:02 ?655次閱讀
    【RA8D<b class='flag-5'>1</b>試用活動(dòng)】RA8D<b class='flag-5'>1</b>B-CPKCOR<b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>移植</b>linux

    瑞芯微RK3566鴻蒙開(kāi)發(fā)板Android11修改第三方輸入法為默認(rèn)輸入法

    本文適用于觸覺(jué)智能所有支持Android11系統(tǒng)的開(kāi)發(fā)板修改第三方輸入法為默認(rèn)輸入法。本次使用的是觸覺(jué)智能的Purple Pi OH鴻蒙開(kāi)源主板,搭載了瑞芯微RK3566芯片,類樹(shù)莓派設(shè)計(jì),是Laval官方社區(qū)主薦的一款鴻蒙開(kāi)發(fā)板
    的頭像 發(fā)表于 09-24 09:43 ?821次閱讀
    瑞芯微RK3566鴻蒙<b class='flag-5'>開(kāi)發(fā)板</b>Android11修改第<b class='flag-5'>三方</b>輸入法為默認(rèn)輸入法

    Openharmony軟件評(píng)估指南-米爾瑞芯微RK3568開(kāi)發(fā)板

    MYD-LR3568開(kāi)發(fā)板正面 圖1-2. 米爾MYD-LR3568開(kāi)發(fā)板反面 1.軟件資源米爾米粉派3568系列
    發(fā)表于 09-06 20:06

    潤(rùn)開(kāi)鴻“龍芯+OpenHarmony開(kāi)發(fā)平臺(tái)DAYU431先鋒派新品發(fā)布

    潤(rùn)開(kāi)鴻基于全新龍芯2K0300芯片平臺(tái)的重磅新品潤(rùn)開(kāi)鴻HH-SCDAYU431先鋒派開(kāi)發(fā)平臺(tái)正式上市,成為潤(rùn)開(kāi)鴻DAYU系列產(chǎn)品中符合
    的頭像 發(fā)表于 08-07 14:50 ?844次閱讀
    <b class='flag-5'>潤(rùn)</b>開(kāi)鴻“龍芯+<b class='flag-5'>OpenHarmony</b>”<b class='flag-5'>開(kāi)發(fā)</b>平臺(tái)<b class='flag-5'>DAYU</b>431先鋒派新品發(fā)布

    鴻蒙OpenHarmony南向/北向快速開(kāi)發(fā)教程-迅為RK3568開(kāi)發(fā)板

    大家期待已久的迅為RK3568開(kāi)發(fā)板終于迎來(lái)了鴻蒙4.1系統(tǒng)的強(qiáng)勢(shì)支持!想知道如何實(shí)現(xiàn)快速開(kāi)發(fā)學(xué)習(xí)嗎?跟著我們一起來(lái)探索吧! 迅為RK3568開(kāi)發(fā)板: 想象一下,你手中的RK3568開(kāi)發(fā)板
    發(fā)表于 07-23 10:44
    主站蜘蛛池模板: 中文字幕1区2区 | 精品一区二区影院在线 | 亚洲精品日韩专区silk | 中文字幕一区二区三区5566 | 成人免费久久精品国产片久久影院 | 天天干天天操天天拍 | 国产h在线 | 欧美卡一卡二卡新区网站 | 国产三级国产精品国产普男人 | 国产在线五月综合婷婷 | 亚洲大色 | 在线免费看片a | 在线免费视频国产 | 免费在线观看大片影视大全 | 久久人人视频 | 美女很黄很黄是免费的·无遮挡网站 | 麻豆色哟哟网站 | 美女视频黄a全部免费看小说 | 色噜噜狠狠网站 | 亚洲人成www在线播放 | 免费看黄色网页 | 黄色一级毛片在线观看 | 国产午夜视频在线观看网站 | 狠狠五月婷婷 | 免费拍拍视频 | 欧美一级在线观看播放 | 7m凹凸精品分类大全免费 | 手机看片福利1024 | 爱操成人网 | 天堂中文在线免费观看 | 亚洲射图 | 夜夜夜爽爽爽久久久 | 日韩一级欧美一级一级国产 | 色香蕉色香蕉在线视频 | 婷婷亚洲综合 | 看黄a大片 免费 | 男男浪荡性受高hnp肉 | www激情五月 | 色人在线| 天天射天天舔 | 桃桃酱无缝丝袜在线播放 |