harmony 鸿蒙Native API Introduction

2023-10-30 浏览 (801)

Native API Introduction

Native APIs, also called Native Develop Kit (NDK), are a set of native interfaces and tools provided by the OpenHarmony SDK for implementing key application features by using C or C++. Different from JS APIs, the Native APIs provide only part of underlying capabilities of OpenHarmony, such as the libc, graphics library, window system, multimedia, and compression library. The Native APIs will be build as a dynamic library before being packaged into an application.

Concepts

TermDescription
Native APINative interfaces, build scripts, and compiler toolchains provided by the native package in the OpenHarmony SDK for third-party application development. Native APIs include the C runtime libc, 3D graphics library OpenGL, and Node-APIs for cross-language programming between JS and C.
NDKNative Develop Kit (NDK) that provides the Native APIs in OpenHarmony. NDK is the equivalent of Native API. Native API is the official name.
SDK CAPIC interfaces and toolchains in OpenHarmony Native APIs.
Currently, OpenHarmony Native APIs contain only C interfaces. Therefore, Native API is CAPI. However, you are advised to use CAPI.
Node-APINative interfaces that implement cross-language invocation between C and JS. Node-API is formerly called napi. Although OpenHarmony Node-APIs are extension of the Node-APIs provided by Node.js, they are not fully compatible with the Node-APIs in Node.js.
napiFormer name of Node-API. It is not used because it may be interpreted as Native API or Node-API by mistake. Currently, the interfaces in the Node-API header files still start with napi_.

Native API Composition

Native API Directory Structure

Native APIs are stored in the $(SDK_ROOT)/native directory of the SDK.

DirectoryDescription
buildProvides the toolchain cmake script used to build the dynamic library of an application. The ohos.toolchain.cmake file in this directory defines OpenHarmony cross-compilation options.
build-toolsProvides build tools, such as CMake.
docsProvides Native API reference documents, which are extracted from the header files using Doxgen.
llvmProvides the LLVM, a cross compiler that supports the OpenHarmony Application Binary Interface (ABI).
sysrootProvides dependencies of links, including header files and dynamic libraries.

Native APIs

CategoryDescriptionIntroduced Since Version
C standard libraryProvides more than 1500 libc interfaces based on musl.8
C++ standard libraryProvides the libc++_shared library for C++ runtime. This library must be packed or statically linked to the application during packing.8
LogProvides HiLog interfaces for printing logs to the system.8
Node-APIProvides APIs like Node-APIs (also called napis) for accessing the JS application environment. Node-APIs are provided by ArkUI and are part of Native APIs.8
XComponentProvides Surface and touchscreen event interfaces for developing high-performance graphics applications on ArkUI.8
libuvProvides a third-party asynchronous I/O library integrated by ArkUI.8
libzProvides basic compression and decompression interfaces.8
DrawingProvides a 2D graphics library for drawing on Surface.8
OpenGLProvides OpenGL 3.0 interfaces.8
RawfileProvides application resource access interfaces for reading various resources packed in applications.8
OpenSLESProvides interfaces for 2D and 3D audio acceleration.8
MindsporeProvides AI model interfaces.9
Bundle managementProvides bundle service interfaces for querying bundle information of applications.8

Native API Documents

How to Use

Recommended Use of Native APIs

Use Native APIs when you want to:

  1. Develop performance-sensitive code in computing-intensive scenarios, such as gaming and physical simulation.
  2. Reuse the existing C or C++ library.
  3. Customize libraries related to CPU features, such as neon acceleration.

Use of Native APIs Not Recommended

Do not use Native APIs when you want to:

  1. Develop a pure OpenHarmony application.
  2. Develop an application that is compatible on as many OpenHarmony devices as possible.

Debugging Capabilities

  1. OpenHarmony provides remote code debugging by using the low-level Debugger (LLDB). For details, see LLDB.
  2. OpenHarmony provides the log debugging for the musl library. For details, see "Debugging Capabilities" in libc.

你可能感兴趣的鸿蒙文章

harmony 鸿蒙Development References

harmony 鸿蒙SystemCapability List

harmony 鸿蒙SystemCapability

  • 所属分类: 后端技术
  • 本文标签: 软件 鸿蒙
  • 版权声明: 本文链接 https://seaxiang.com/blog/fddc60a15d754ba4af5e37d04a3ccb17