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

openharmony-基础篇-模块配置规则 模块编译 阅读详情

背景

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
标准 C++ 库 c++ 运行时库 libc++_shared,此库在打包的时候需要打包或者静态链接到应用中 8
OpenHarmony实战开发-NDK开发导读 NDK(Native Development Kit)是OpenHarmony SDK提供的Native API、相应编译脚本和编译工具链的集合,方便开发者使用C或C++语言实现应用的关键功能。NDK只覆盖了OpenHarmony一些基础的底层能力,如C运行时基础库libc、图形库、窗口系统、多媒体、压缩库、面向ArkTS/JS与C跨语言的Node-API等,并没有提供ArkTS/JS API的完整能力。 阅读详情

相关推荐

鸿蒙HarmonyOS应用开发之NDK工程构建

ohos.toolchain.cmake是OpenHarmony NDK提供给CMake的toolchain脚本,里面预定义了编译OpenHarmony应用需要设置的编译参数,如交叉编译设备的目标、C++运行时库的链接方式等;这些参数在调用CMake命令时,可以从命令行传入,来改变默认编译链接行为。此文件中的常用参数见下表。参数类型说明OHOS_STLlibc++的链接方式。默认为c++_shared。c++_shared表示采用动态链接libc++_shared.so;

YHDMYBY的博客 1416

鸿蒙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

鸿蒙5.0【OpenHarmony】环境编译开源库

在应用开发中,经常需要用到一些第三方的native层的开源库。这类native库,一般是用C/C++写的跨平台的,比如ffmpeg库,openssl库等。在安卓开发中,这类库,我们需要使用安卓的sdk,ndk编译工具,去编译适配安卓平台的so库来使用。那么在鸿蒙平台上,是如何操作的呢?

2401_82772199的博客 2771

鸿蒙HarmonyOS应用开发之C/C++标准库机制概述

OpenHarmony NDK提供业界标准库 libc标准库、 C++标准库 ,本文用于介绍C/C++标准库在OpenHarmony中的机制,开发者了解这些机制有助于在NDK开发过程中避免相关问题。

1 4222

【鸿蒙南向开发】OpenHarmony 4.0蓝牙代码结构简析

本文基于OpenHarmony 4.0版本对蓝牙代码架构/目录分层原则做了简单分析,同时分析了4.0版本的重要改动点●如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我两个小忙:●关注小编,同时可以期待后续文章ing ,不定期分享原创知识。

HarmonyOS_666的博客 676

【鸿蒙南向开发】Native API应用开发 之 使用NDK接口构建UI

【背景】 目前,OpenHarmony/HarmonyOS Next的主要UI开源三方库,如lottie,imageknife,pulltorefresh都是使用arkts自定义组件开发的。但越来越多应用除了功能对功能的要求外,现在也开始提出性能的要求。所以被迫得提前研究下使用NDK接口构建开源三方库。

HarmonyOS_666的博客 638

.NET适配HarmonyOS进展 1. 前言

目前国产化系统浪潮下,适配鸿蒙是中国软件大势所趋,.NET作为最适合开发客户端语言之一,适配鸿蒙系统(HarmonyOS Next)是目前.NET开发者最关心的事情。我目前业余时间正在移植Avalonia到HarmonyOS,去年在.NET Conf CN上分享过,目前又取得一点进展,所以本文把所有问题进行整合与大家进行分享。

2301_76476890的博客 1456

OpenHarmony NDK实战:三方so库鸿蒙化编译与集成指南

本文详细介绍了在OpenHarmony系统中进行NDK开发时,如何将第三方so库进行鸿蒙化编译与集成的完整流程。从环境准备、工具链配置、CMake升级到实战编译FFmpeg等库,提供了详尽的操作步骤和常见问题解决方案,帮助开发者高效完成鸿蒙生态下的原生库迁移与集成工作。

rnn9storyteller的博客 766

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

RFID射频识别技术介绍及简单应用

简单介绍RFID技术及其简单应用,后附简单门禁制作方法和代码

来者皆是客。 1万+

专有钉钉小程序(浙政钉)开发搭建流程总览

最近公司有一个项目要做浙政钉,让我来负责做。靠,我一脸懵,开发了两年多不知道浙政钉是啥,感觉我眼界还是低了。然后就去百度、同事问了一圈才知道就是个钉钉小程序嘛,然后发布到浙政钉上了。就搭建项目跑起来我都肥了很多事,中间走了很多坑。正好领导让我写《钉钉小程序前端开发流程》,这想着也写个博客吧。下面就是整个流程及我所遇到的坑!

m0_53910290的博客 6351

手把手教你用S7-PLCSIM Advanced V3.0搭建PLC仿真测试环境(含WinPcap避坑指南)

本文详细介绍了如何使用西门子S7-PLCSIM Advanced V3.0搭建PLC仿真测试环境,包括WinPcap 4.1.3驱动的安装避坑指南。从环境准备、软件安装到配置调试,提供了一套完整的解决方案,帮助工程师和教学人员快速构建可靠的PLC仿真环境,解决常见的报错问题。

weixin_30879169的博客 630

Deepseek:物理神经网络PINN入门教程

物理信息网络(Physics-Informed Neural Networks, PINN)是一种将物理定律(如偏微分方程、守恒定律等)嵌入神经网络训练过程的深度学习方法。其核心思想是通过神经网络同时拟合观测数据并满足物理约束,从而解决传统数值方法难以处理的高维、噪声数据或复杂边界条件问题。

金石软件 9288

如何使用AKShare作为OpenBB的数据源

`openbb_akshare`项目是 OpenBB 的数据源扩展。可以用于查询A股和港股数据

FinAnalyzer金融分析工具 3194

【Clickhouse从入门到精通】第51篇:ClickHouse权限管理体系详解

摘要 本文是ClickHouse权限管理系列文章的第51篇,重点解析ClickHouse RBAC权限体系中的GRANT/REVOKE机制。文章详细介绍了GRANT语句的基础语法与权限类型,包括SELECT、INSERT等常规权限以及WITH GRANT OPTION转授权功能。特别深入讲解了列级权限的实现方式,通过SELECT(col1,col2)语法实现字段粒度的访问控制,并展示了权限查询与验证方法。本文还对比了ClickHouse 20.4版本前后权限管理体系的差异,为构建安全的多租户数据平台提供了关

xyghehehehe的专栏 434

使用mid360运行lio-livox对比fast-lio2

msg_type为激光雷达发出的数据格式,有livox自定义数据类型格式CustomMsg和ros标准的PointCloud2格式,因此首先需要确定激光雷达端配置的是哪种格式。可以从激光雷达的ros驱动中看到驱动端有三种格式可以选,驱动端的数字2对应lio-livox中的1,驱动端的0对应lio-livox的格式0。如果使用的是Ubuntu18.04编译完成后运行直接成功,如果使用20.04运行会报错,需要修改以下源代码。针对livox-mid360 运行lio-livox的一些问题。

z1872385的博客 1221

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

上一篇: 【鸿蒙南向开发】OpenHarmony-v4.1-Release的init启动流程
下一篇: 【鸿蒙南向开发】OpenHarmony 源码分析之位置服务子系统
普通网友
博客等级 码龄2年 3992粉丝 199原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值