OpenHarmony开发指南:NDK开发

OpenHarmony NDK开发指南:从环境搭建到CMake工程实战 从原生开发与性能优化说起,当ArkTS层遇到音视频编解码、图像处理等高算力场景时,解释执行的开销成为瓶颈。OpenHarmony NDK提供C/C++编译链路,通过NAPI桥接上层声明式UI,将密集计算下沉到底层。文章先梳理NDK与SDK分工、工具链组件,再详解环境搭建、交叉编译与sysroot配置,并给出首个CMake工程的完整闭环:源码结构、CMakeLists编写、NAPI注册及.so产物部署。最后针对x86_64模拟器与真机差异、链接报错、渲染异常等高频问题提供排查速查表,帮助开发者快速定位环境、A 阅读详情

 背景

Native API(NDK)入门

Native API是OpenHarmony SDK上提供的一组native开发接口与工具集合(也称为NDK),方便开发者使用C或者C++语言实现应用的关键功能。Native API只覆盖了OHOS基础的一些底层能力,如libc,图形库,窗口系统,多媒体,压缩库等,并没有完全提供类似于JS API上的完整的OHOS 平台能力。在应用中使用Native API会编译成动态库打包到应用中。

名词概念
名词 名词解释
Native API OHOS SDK里面native包提供的,面向三方应用开发的Native 接口以及相应编译脚本,编译工具链。包括C运行时基础库libc,3D图形库opengl,面向JS与C跨语言的接口Node-API等,具体内容详见下表。
NDK Native Develop Kit的缩写,在OHOS上就是Native API;Native API是官方名字,NDK指代相同意思。
SDK CAPI OHOS Native API中的C语言接口,以及工具链部分,当前OHOS的Native API里面只包含C语言接口,因此Native API与CAPI意思一样,建议交流的时候使用CAPI,防止Native API与napi缩写混用。
Node-API 曾用名napi,是OHOS中提供JS与C跨语言调用的接口,是Native API接口中的一部分. 该接口在Node.js提供的Node-API基础上扩展而来,但不完全与Node.js中的Node-API完全兼容。
napi Node-API的曾用名,当前Node-API头文件中的接口仍然以napi_开头,不建议使用。

Native API构成介绍

Native API目录结构

Native API在SDK包的位置为$(SDK_ROOT)/native目录,主要有以下几个部分组成

目录 功能说明
build 应用中编译动态库的toolchain cmake脚本;这个目录下ohos.toolchain.cmake文件定义了给OHOS交叉编译选项
build-tools 放置编译构建的工具,如cmake
docs Native API接口参考文档,通过doxgen从头文件中提取出来
llvm 支持OHOS ABI的llvm交叉编译器
sysroot 放置编译链接的依赖文件目录,包含头文件,动态库等

Native API接口(4.0 Release)

接口分类 接口功能 引入版本
标准C库 以musl为基础提供的标准c库接口,当前提供了1500+的接口 8
鸿蒙HarmonyOS应用开发之NDK开发导读 build目录:放置预定义的toolchain脚本文件ohos.toolchain.cmakeCMake编译时需要读取该文件中的默认值,比如编译器架构、C++库链接方式等,因此在编译时会通过CMAKE_TOOLCHAIN_FILE指出该文件的路径,便于CMake在编译时定位到该文件。build-tools文件夹:放置NDK提供的编译工具# 键入下一行命令查看CMake的版本# 结果llvm文件夹:放置NDK提供的编译器。 阅读详情

相关推荐

OpenHarmony实战开发-NDK开发导读

NDK(Native Development Kit)是OpenHarmony SDK提供的Native API、相应编译脚本和编译工具链的集合,方便开发者使用C或C++语言实现应用的关键功能。NDK只覆盖了OpenHarmony一些基础的底层能力,如C运行时基础库libc、图形库、窗口系统、多媒体、压缩库、面向ArkTS/JS与C跨语言的Node-API等,并没有提供ArkTS/JS API的完整能力。

m0_70749039的博客 1286

【鸿蒙南向开发】浅谈OpenHarmony4.0的NDK开发

Native API 在 SDK 包的位置为$(SDK_ROOT)/native 目录,主要有以下几个部分组成目录功能说明build应用中编译动态库的 toolchain cmake 脚本;这个目录下 ohos.toolchain.cmake 文件定义了给 OHOS 交叉编译选项放置编译构建的工具,如 cmakedocsNative API 接口参考文档,通过 doxgen 从头文件中提取出来llvm支持 OHOS ABI 的 llvm 交叉编译器sysroot。

HarmonyOS_666的博客 1292

鸿蒙Next实战开发-OpenHarmony的NDK开发

▍Native API目录结构NDK方式是应用层直接调用底层库或者三方库目前看最常规的方式;4.0(API10)有ndk 46个,3.2(API9)有ndk 28个,实质代码里有更多的ndk,RK的原因没有编出更多,比如sensor部分就没有编译出来;划重点,NDK里有两种api:node-api,用于arkts和c++调用和传递数据;c/c++ api,可以把动态库打包成应用侧c++直接调用的接口;

m0_70749039的博客 1946

OpenHarmony实战开发-使用命令行CMake构建NDK工程

接下来介绍如何把已有的CMake工程切换到OpenHarmony工具链中,从而使用命令行CMake构建该工程。

m0_70749039的博客 1058

OpenHarmony应用开发引入开源C/C++库---之Har包里的NDK

创建一个工程工程里加模块选择 staticlibrary,就是静态库打开 native 的开关就是支持 nativec++,也就支持 ndk在主工程里导入 library 工程修改代码导出控件,方法// library 工程里修改 ------------------------------------------......})// library 工程里修改 ------------------------------------------// 主项目里导入。

liuhaojiabin的博客 1059

鸿蒙HarmonyOS应用开发之使用DevEco Studio模板构建NDK工程

在很多复杂应用工程中,C++代码工程是通过CMake等构建系统以命令行方式来编译构建的,接下来介绍如何把已有的CMake工程切换到OpenHarmony工具链中,从而使用命令行CMake构建该工程。

1 2210

鸿蒙HarmonyOS应用开发之使用命令行CMake构建NDK工程

在很多复杂应用工程中,C++代码工程是通过CMake等构建系统以命令行方式来编译构建的,接下来介绍如何把已有的CMake工程切换到OpenHarmony工具链中,从而使用命令行CMake构建该工程。

YHDMYBY的博客 2711

OpenHarmony与Flutter融合开发实战指南

跨平台开发框架Flutter与新一代操作系统OpenHarmony的技术融合,为开发者提供了全新的全场景应用开发解决方案。Flutter的高性能渲染引擎结合OpenHarmony的分布式架构,实现了真正的"一次开发,多端部署"。在技术实现层面,需要特别关注HDF驱动框架适配、API兼容性改造以及工具链集成等核心问题。通过配置专门的OHOS Flutter工具链,开发者可以快速搭建开发环境并创建多模块化工程。在实际开发中,UI适配、性能优化以及分布式能力集成成为关键技术要点,其中涉及MediaQuery结合O

weixin_34232744的博客 371

OpenHarmony:NDK(1)LED

摘要:本文介绍了HarmonyOS NDK(Native Development Kit)开发流程,以LED控制为例展示如何创建可供ArkTS调用的Native库。主要内容包括:1)NDK工程创建及CMake配置;2)使用Node-API实现获取/设置LED亮度的C++接口;3)Native与ArkTS的交互方式;4)调试日志输出方法;5)编译生成动态库的过程。文章详细说明了Native接口实现、CMake构建脚本编写、日志调试等关键步骤,为开发者提供了一套完整的HarmonyOS NDK开发实践方案。

qq_34968572的博客 282

信道估计之MMSE算法

信道估计之MMSE算法前言MMSE估计的原理总结 前言        前篇分析了LS信道估计算法,也说明了由于没有考虑SNR的影响,所以LS算法不适合在低信噪比的情况下使用。本篇来学习信道估计的另外一种常用的算法–MMSE。        为什么说LS没有考虑噪声大小的情况呢,因为LS算法使用的是实际观测量与估计观测量的误差,这并不能精确的代表估计量的真值与估计值的误

大白的博客 2万+

【ES】--Elasticsearch的分词器深度研究

分词器是ik_max_word,会将“龙马家书”拆分为“龙马”、“马家”、“家书”。然后filter配置的是edge_ngram_filter,在上面拆分的token词组基础上,按照edge_ngram_filter规则进一步拆分。从结果看:分词器是keyword,filter支持edge_ngram_filter,字符过滤器支持tsconvert【简繁体】。分词器是keyword,表明是不进行分词,但filtet中edge_ngram_filter是按照布长方式拆分token,所以得到如此结果。

寻梦友的博客 2346

第一天(点亮led灯+led灯闪烁)——Arduino uno R3 学习之旅

发光二极管(Light Emitting Diode,简称LED)是一种能够将电能转化为光能的固态的半导体器件。长脚为阳极短脚为阴极电流必须从长脚流入从短脚流出方可点亮LED##杜邦线杜邦线:是导线中的一种,杜邦线端部有两种接头形式:带针的一种称为公头,带孔的一种称为母头,如下图所示:说明:与电源相连接时,一般采用红色杜邦线,与地连接时采用黑色杜邦线。

qwsbcjendb的博客 1122

Mann-Kendall检验全解析:从原理到11种变体及Python实现

本文全面解析Mann-Kendall检验,从基础原理到应对自相关、季节性等复杂数据的11种关键变体,如Hamed-Rao修正、季节性MK和趋势自由预白化(TFPW)。详细阐述各方法的适用场景与数学原理,并提供完整的Python实战代码,帮助研究者针对不同数据特性选择最稳健的趋势分析方法。

weixin_29050271的博客 449

如何使用obspy下载地震波形数据

如果你是地震研究学者,或者需要进行地震方面的研究,那么地震数据下载是一个必不可少的流程,本文将告诉你如何使用obspy下载想要的地震数据

monsterk1的博客 2065

ESP32 Arduino 学习篇(五)TFT_eSPI库

该库有User_Setup.h和 User_Setup_Select.h两个配置文件,支持 ①自定义参数或 ②使用已有配置 驱动TFT屏幕。优点是: 1. 占用空间非常小 2. 动画清晰,充分利用每个像素点 3. 可以非常灵动. 4. 方便进行微调。首先在Libraries里面搜索安装TFT_eSPI库到你的工程文件里面。初始化屏幕, 如果是ST7735,可以往里面传一个参数, 具体用到时再看。缺点是: 1. 容易闪屏 2. 一般不会太复杂 3.需要大量的计算。特别注意: 字库7是仿7段数码屏的样式。

DOF526570的博客 2万+

千兆以太网的接收和crc校验

解析该以太网帧,包括统计该以太网帧长度+过滤功能(端口号对不对,是否为udp协议)+CRC校验,将解析结果存入状态fifo,一旦状态fifo开始有数,就开始开启读过程,读过程开始时,首先读状态fifo,根据从状态fifo里面读出的以太网帧长度,来读数据fifo(这样能够防止跨帧读),然后在根据状态fifo里面读出的crc校验正确标志和过滤标志,来确定是否将数据fifo读出来的数据送给下一个模块。改掉之后在抓一下,可以看到抓出来的数据完全正确,从最后开始看,除去4个crc校验的尾巴,数据是到255结束的。

weixin_45284871的博客 2729

【同等学力】2025-数学✨

本文主要涵盖了谓词逻辑、集合论、图论和排列组合等多个数学领域的题目。在谓词逻辑部分,要求用全称量词和存在量词表达“没有两个人的指纹完全相同”。集合论部分涉及集合运算的证明,如证明(A-B)-C=(A-C)-(B-C)。图论部分包括计算给定10个点的联通图的边与面数。排列组合部分则要求计算从8个人中选6个并分为三组的不同方法。此外,还涉及偏序、长链、反链、二项式定理等相关内容,参考了多个CSDN博客中的解题思路。

super_mochi1 668

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: OpenHarmony开发应用自动化测试开发原理
下一篇: OpenHarmony开发实战:OH编译构建 - 依赖关系检查
普通网友
博客等级 码龄5年 2986粉丝 200原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值