未验证 提交 e81915ce 编写于 作者: O openharmony_ci 提交者: Gitee

!19974 Readme修改

Merge pull request !19974 from zengyawen/master
......@@ -2,6 +2,7 @@
- [如何编译full-SDK](full-sdk-compile-guide.md)
- [如何替换full-SDK](full-sdk-switch-guide.md)
- [如何在CMake工程中使用OpenHarmony SDK的Native API(NDK)](howto-migrate-cmake-with-ohosndk.md)
- [应用模型常见问题](faqs-ability.md)
- ArkUI框架开发常见问题(ArkTS)
- [ArkTS语法使用常见问题](faqs-arkui-arkts.md)
......
# 如何在CMake工程中使用OpenHarmony SDK的Native API(NDK)
## 1. 什么是Native API
请参看《[Native API](https://gitee.com/openharmony/docs/blob/a1ef2da9276755c98883bd318f55fd0a3a614680/zh-cn/application-dev/napi/Readme-CN.md)
## 什么是Native API
## 2. 如何下载Native API开发包(NDK)
请参看[Native API](../reference/native-api-intro.md)
1)推荐OpenHarmony正式发布的SDK包 ,下载链接可以从OpenHarmony正式发布版本的[release-notes](https://gitee.com/openharmony/docs/tree/master/zh-cn/release-notes#/openharmony/docs/blob/master/zh-cn/release-notes/OpenHarmony-v3.2-release.md)中获取,点击release notes中【从站点镜像获取】章节下载。
## 如何下载Native API开发包(NDK)
1. 推荐OpenHarmony正式发布的SDK包 ,下载链接可以从OpenHarmony正式发布版本的[release-notes](../../release-notes/OpenHarmony-v3.2-release.md)中获取,点击release notes中【从站点镜像获取】章节下载。
2IDE OpenHarmony SDK Manager中下载
2. IDE OpenHarmony SDK Manager中下载
3)从每日构建中下载,下载地址 http://ci.openharmony.cn/dailys/dailybuilds ,形态组件选择ohos-sdk
![输入图片说明](figures/ci_download.png)
3. 从每日构建中下载,下载地址 http://ci.openharmony.cn/dailys/dailybuilds ,形态组件选择ohos-sdk
## 3 解压Native API开发包
![](figures/ci_download.png)
## 解压Native API开发包
下载完成之后,将压缩包放入自己创建好的文件夹下解压,解压完成效果如下图所示:
![输入图片说明](figures/sdk-structure.png)
![](figures/sdk-structure.png)
配置Linux下的环境,如果只是在IDE中使用,跳过下面几步:
......@@ -40,17 +41,18 @@
~/ohos-sdk/ohos-sdk/linux/native/build-tools/cmake/bin/cmake
```
## 3. 如何使用Native API开发包编译一个native程序
## 如何使用Native API开发包编译一个native程序
应用开发者可以通过Native API开发包快速的开发出native动态库,静态库与可执行文件,ArkUI应用程序框架可以通过NAPI框架调用到native的动态库中。开发包提供CMake作为官方的编译构建工具。下面通过自己编写一个C/C++ demo工程来演示如何使用Native API开发包来编译C/C++动态库。
### 3.1、NDK中的几个文件夹简介
#### 3.1.1、build目录中工具链文件ohos.toolchain.cmake
cmake编译时需要读取该文件中的默认值,比如编译器架构、C++库链接方式等,这个需要在编译时通过CMAKE_TOOLCHAIN_FILE指出该文件的路径,便于cmake在编译时定位到该文件。在编译的时候需要为cmake指定参数来控制编译目标的属性,具体要指定的参数在下面的[命令行构建](#3.4、命令行构建)会具体介绍。
### NDK中的文件夹简介
#### build目录中工具链文件ohos.toolchain.cmake
cmake编译时需要读取该文件中的默认值,比如编译器架构、C++库链接方式等,这个需要在编译时通过CMAKE_TOOLCHAIN_FILE指出该文件的路径,便于cmake在编译时定位到该文件。在编译的时候需要为cmake指定参数来控制编译目标的属性,具体要指定的参数在下面的[命令行构建](#命令行构建)会具体介绍。
#### build-tools文件夹放的是NDK提供的编译工具
#### 3.1.2、build-tools文件夹放的是NDK提供的编译工具
```
#键入下一行命令查看cmake的版本
cmake -version
......@@ -59,11 +61,16 @@ cmake编译时需要读取该文件中的默认值,比如编译器架构、C++
CMake suite maintained and supported by Kitware (kitware.com/cmake).
```
#### 3.1.3、llvm文件夹放的是NDK提供的编译器
![输入图片说明](https://images.gitee.com/uploads/images/2022/0304/164051_0968e346_10124238.png "无标题3.png")
### 3.2、NDK使用的简单demo
#### 3.2.1、demo目录图
#### llvm文件夹放的是NDK提供的编译器
![](figures/images.png)
### NDK使用的简单demo
#### demo目录图
```
demo
├── CMakeLists.txt
├── include
......@@ -72,8 +79,10 @@ cmake编译时需要读取该文件中的默认值,比如编译器架构、C++
├── CMakeLists.txt
├── sum.cpp
└── hello.cpp
```
#### CMakeLists.txt内容
#### 3.2.2、CMakeLists.txt内容
```
# 指定cmake的最小版本
CMAKE_MINIMUM_REQUIRED(VERSION 3.16)
......@@ -85,7 +94,8 @@ cmake编译时需要读取该文件中的默认值,比如编译器架构、C++
ADD_SUBDIRECTORY(src bin)
```
#### 3.2.3、内部CMakeLists.txt内容
#### 内部CMakeLists.txt内容
```
SET(LIBHELLO_SRC hello.cpp)
......@@ -110,8 +120,10 @@ cmake编译时需要读取该文件中的默认值,比如编译器架构、C++
详细CMake手册参考 https://cmake.org/cmake/help/v3.16/guide/tutorial/
#### 3.2.4、源码内容
#### 源码内容
hello.cpp 源码
```
#include <iostream>
#include "sum.h"
......@@ -124,12 +136,16 @@ hello.cpp 源码
return 0;
}
```
sum.h源码
```
int sum(int a, int b);
```
sum.cpp源码
```
#include <iostream>
......@@ -139,8 +155,8 @@ sum.cpp源码
}
```
### ohos.toolchain.cmake中关键变量
### 3.3、ohos.toolchain.cmake中关键变量,如下:
| 参数 | 类型 |备注|
|--------|------|------|
|OHOS_STL|c++_shared/c++_static|默认是c++_shared,用来控制是动态链接libc++_shared.so还是静态链接libc++_static.a,对于同一个应用中的全部native库需要采用同一种链接方式,这个是由c++运行时中一些全局状态导致的|
......@@ -148,18 +164,22 @@ sum.cpp源码
|OHOS_PLATFORM|OHOS|平台选择,当前只支持OpenHarmony平台|
|CMAKE_TOOLCHAIN_FILE|工具链文件|就是ohos.toolchain.cmake文件,里面根据上面参数指定了对应平台的交叉编译参数|
### 3.4、命令行构建
### 命令行构建
在工程目录下,创建build目录,用来放置cmake构建时产生的中间文件。注意: ohos-sdk是下载下来的SDK的根目录,开发者需要自行替换成实际的下载目录。
1)采用OHOS_STL=c++_shared动态编译
```
1. 采用OHOS_STL=c++_shared动态编译
```
>mkdir build && cd build
>cmake -DOHOS_STL=c++_shared -DOHOS_ARCH=armeabi-v7a -DOHOS_PLATFORM=OHOS -DCMAKE_TOOLCHAIN_FILE={ohos-sdk}/linux/native/build/cmake/ohos.toolchain.cmake ..
>cmake --build .
```
```
2)采用OHOS_STL=c++_static静态编译
```
2. 采用OHOS_STL=c++_static静态编译
```
>mkdir build && cd build
>cmake -DOHOS_STL=c++_static -DOHOS_ARCH=armeabi-v7a -DOHOS_PLATFORM=OHOS -DCMAKE_TOOLCHAIN_FILE={ohos-sdk}/linux/native/build/cmake/ohos.toolchain.cmake ..
>cmake --build .
```
```
......@@ -29,6 +29,14 @@
- [开发音频通话功能](audio-call-development.md)
- [视频播放](video-playback.md)
- [视频录制](video-recording.md)
- 音视频编解码
- [获取支持的编解码能力](obtain-supported-codecs.md)
- [音频编码](audio-encoding.md)
- [音频解码](audio-decoding.md)
- [视频编码](video-encoding.md)
- [视频解码](video-decoding.md)
- [音视频封装](audio-video-encapsulation.md)
- [音视频解封装](audio-video-decapsulation.md)
- 媒体会话
- [媒体会话概述](avsession-overview.md)
- 本地媒体会话
......
......@@ -86,8 +86,10 @@
- [AppStateData](js-apis-inner-application-appStateData.md)
- [BaseContext](js-apis-inner-application-baseContext.md)
- [Context](js-apis-inner-application-context.md)
- [ContinuableInfo](js-apis-inner-application-continuableInfo.md)
- [ContinueCallback](js-apis-inner-application-continueCallback.md)
- [ContinueDeviceInfo](js-apis-inner-application-continueDeviceInfo.md)
- [ContinueMissionInfo](js-apis-inner-application-continueMissionInfo.md)
- [ErrorObserver](js-apis-inner-application-errorObserver.md)
- [ExtensionContext](js-apis-inner-application-extensionContext.md)
- [ExtensionRunningInfo](js-apis-inner-application-extensionRunningInfo.md)
......@@ -113,8 +115,6 @@
- continuation
- [continuationExtraParams](js-apis-continuation-continuationExtraParams.md)
- [continuationResult](js-apis-continuation-continuationResult.md)
- AI
- [@ohos.ai.mindSporeLite (推理能力)](js-apis-mindSporeLite.md)
- 公共事件与通知
- [系统公共事件定义](commonEventManager-definitions.md)
......@@ -151,8 +151,19 @@
- [包管理子系统公共事件定义](common_event/commonEvent-bundleManager.md)
- [通知服务公共事件定义](common_event/commonEvent-ans.md)
- [资源调度子系统公共事件定义](common_event/commonEvent-resourceschedule.md)
- [窗口管理子系统公共事件定义](common_event/commonEvent-window.md)
- [网络管理子系统公共事件定义](common_event/commonEvent-netmanager.md)
- [短信应用公共事件定义](common_event/commonEvent-mms.md)
- [电话服务子系统公共事件定义](common_event/commonEvent-telephony.md)
- [电源管理子系统公共事件定义](common_event/commonEvent-powermgr.md)
- [NFC子系统公共事件定义](common_event/commonEvent-nfc.md)
- [Wifi子系统公共事件定义](common_event/commonEvent-wifi.md)
- [USB子系统公共事件定义](common_event/commonEvent-usb.md)
- [文件管理子系统公共事件定义](common_event/commonEvent-filemanagement.md)
- [主题框架子系统-锁屏管理公共事件定义](common_event/commonEvent-screenlock.md)
- [时间时区子系统公共事件定义](common_event/commonEvent-time.md)
- [帐号子系统公共事件定义](common_event/commonEvent-account.md)
- 包管理
- [@ohos.bundle.appControl (appControl模块)](js-apis-appControl.md)
- [@ohos.bundle.bundleManager (bundleManager模块)](js-apis-bundleManager.md)
......@@ -278,6 +289,9 @@
- [@ohos.filemanagement.userFileManager (用户数据管理)](js-apis-userFileManager.md)
- [@ohos.fileshare (文件分享)](js-apis-fileShare.md)
- AI
- [@ohos.ai.mindSporeLite (推理能力)](js-apis-mindSporeLite.md)
- 电话服务
- [@ohos.contact (联系人)](js-apis-contact.md)
- [@ohos.telephony.call (拨打电话)](js-apis-call.md)
......@@ -305,6 +319,7 @@
- [@ohos.nfc.controller (标准NFC)](js-apis-nfcController.md)
- [@ohos.nfc.tag (标准NFC-Tag)](js-apis-nfcTag.md)
- [@ohos.rpc (RPC通信)](js-apis-rpc.md)
- [@ohos.secureElement (安全单元的通道管理)](js-apis-secureElement.md)
- [@ohos.wifiManager (WLAN)(推荐)](js-apis-wifiManager.md)
- [@ohos.wifiManagerExt (WLAN扩展接口)(推荐)](js-apis-wifiManagerExt.md)
- [@ohos.wifi (WLAN)(待停用)](js-apis-wifi.md)
......@@ -360,6 +375,7 @@
- [@ohos.multimodalInput.inputEvent (输入事件)](js-apis-inputevent.md)
- [@ohos.multimodalInput.inputEventClient (按键注入)](js-apis-inputeventclient.md)
- [@ohos.multimodalInput.inputMonitor (输入监听)](js-apis-inputmonitor.md)
- [@ohos.multimodalInput.intentionCode (意图事件)](js-apis-intentioncode.md)
- [@ohos.multimodalInput.keyCode (键值)](js-apis-keycode.md)
- [@ohos.multimodalInput.keyEvent (按键输入事件)](js-apis-keyevent.md)
- [@ohos.multimodalInput.mouseEvent (鼠标输入事件)](js-apis-mouseevent.md)
......@@ -381,9 +397,10 @@
- 帐号管理
- [@ohos.account.appAccount (应用帐号管理)](js-apis-appAccount.md)
- [@ohos.account.appAccount.AuthorizationExtensionAbility (应用帐号授权扩展能力)](js-apis-appAccount-authorizationExtensionAbility.md)
- [@ohos.account.distributedAccount (分布式帐号管理)](js-apis-distributed-account.md)
- [@ohos.account.osAccount (系统帐号管理)](js-apis-osAccount.md)
- 定制管理
- [@ohos.configPolicy (配置策略)](js-apis-configPolicy.md)
......@@ -396,6 +413,7 @@
- [@ohos.enterprise.dateTimeManager (系统时间管理)](js-apis-enterprise-dateTimeManager.md)
- [@ohos.enterprise.deviceControl (设备控制管理)](js-apis-enterprise-deviceControl.md)
- [@ohos.enterprise.deviceInfo (设备信息管理)](js-apis-enterprise-deviceInfo.md)
- [@ohos.enterprise.deviceSettings(设备设置管理)](js-apis-enterprise-deviceSetings.md)
- [@ohos.enterprise.EnterpriseAdminExtensionAbility (企业设备管理扩展能力)](js-apis-EnterpriseAdminExtensionAbility.md)
- [@ohos.enterprise.networkManager (网络管理)](js-apis-enterprise-networkManager.md)
- [@ohos.enterprise.wifiManager (WiFi管理)](js-apis-enterprise-wifiManager.md)
......@@ -427,6 +445,7 @@
- 测试
- [@ohos.application.testRunner (TestRunner)](js-apis-application-testRunner.md)
- [@ohos.deviceAttest (设备证明)](js-apis-deviceAttest.md)
- [@ohos.uitest (UiTest)](js-apis-uitest.md)
- 已停止维护的接口
......
......@@ -4,14 +4,15 @@
- [包管理子系统公共事件定义](commonEvent-bundleManager.md)
- [通知服务公共事件定义](commonEvent-ans.md)
- [资源调度子系统公共事件定义](commonEvent-resourceschedule.md)
- [窗口管理子系统公共事件定义](commonEvent-window.md)
- [网络管理子系统公共事件定义](commonEvent-netmanager.md)
- [短信应用公共事件定义](commonEvent-mms.md)
- [电话服务子系统公共事件定义](commonEvent-telephony.md)
- [电源管理子系统公共事件定义](commonEvent-powermgr.md)
- [NFC子系统公共事件定义](commonEvent-nfc.md)
- [USB子系统公共事件定义](commonEvent-usb.md)
- [Wifi子系统公共事件定义](commonEvent-wifi.md)
- [USB子系统公共事件定义](commonEvent-usb.md)
- [文件管理子系统公共事件定义](commonEvent-filemanagement.md)
- [主题框架子系统-锁屏管理公共事件定义](commonEvent-screenlock.md)
- [时间时区子系统公共事件定义](commonEvent-time.md)
- [网络管理子系统公共事件定义](commonEvent-netmanager.md)
- [短信应用公共事件定义](commonEvent-mms.md)
- [窗口管理子系统公共事件定义](commonEvent-window.md)
- [帐号子系统公共事件定义](commonEvent-account.md)
# @ohos.secureElement( 安全单元的通道管理)
# @ohos.secureElement (安全单元的通道管理)
本模块主要用于操作及管理安全单元(SecureElement,简称SE)。文档中出现的SE服务为SEService实例,参见[newSEService](#secureelementnewseservice)
......
......@@ -60,6 +60,7 @@
- [Bluetooth错误码](errorcode-bluetoothManager.md)
- [WIFI错误码](errorcode-wifi.md)
- [NFC错误码](errorcode-nfc.md)
- [SE(secureElement)错误码](errorcode-se.md)
- [RPC错误码](errorcode-rpc.md)
- 系统基础能力
- [无障碍子系统错误码](errorcode-accessibility.md)
......
# SE错误码
# SE(secureElement)错误码
> **说明:**
>
......
......@@ -3,6 +3,7 @@
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等,具体内容详见下表。|
......@@ -10,6 +11,7 @@ Native API是OpenHarmony SDK上提供的一组native开发接口与工具集合
|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目录结构
......@@ -42,14 +44,13 @@ Native API在SDK包的位置为$(SDK_ROOT)/native目录,主要有以下几个
|Mindspore|AI模型接口库|9|
|包管理|包服务接口,方便查询应用包信息|8|
### Native API相关资料
*[Native API参考手册](./native-apis/Readme-CN.md)》,介绍各个API参考手册
*[Native API中支持的标准库](../reference/native-lib/Readme-CN.md)》,介绍Native API支持的开源标准库
*[Native API开发指南](../napi/Readme-CN.md)》,结合具体的例子,场景介绍各类接口的使用
*[使用NDK编译一个Cmake C/C++工程文档](../quick-start/howto-migrate-cmake-with-ohosndk.md)》,介绍如何使用使用Native API开发一个Cmake工程
*[Node-API在应用工程中的使用指导](../napi/napi-guidelines.md)》, 如何使用Node-API接口
* [Native API参考手册](native-apis/Readme-CN.md),介绍各个API参考手册
* [Native API中支持的标准库](../reference/native-lib/Readme-CN.md),介绍Native API支持的开源标准库
* [Native API开发指南](../napi/Readme-CN.md),结合具体的例子,场景介绍各类接口的使用
* [使用NDK编译一个Cmake C/C++工程文档](../faqs/howto-migrate-cmake-with-ohosndk.md),介绍如何使用使用Native API开发一个Cmake工程
* [Node-API在应用工程中的使用指导](../napi/napi-guidelines.md), 如何使用Node-API接口
## 使用建议
......@@ -68,5 +69,5 @@ Native API在SDK包的位置为$(SDK_ROOT)/native目录,主要有以下几个
## 维测能力
1. OHOS官方提供lldb remote方式代码调试,详细参看[lldb参考手册](https://gitee.com/openharmony/third_party_llvm-project/blob/master/lldb/README_zh.md)
2. musl库的log维测能力,请参看[libc库](./native-lib/third_party_libc/musl.md)维测章节
1. OHOS官方提供lldb remote方式代码调试,详细参看[lldb参考手册](https://gitee.com/openharmony/third_party_llvm-project/blob/master/lldb/README_zh.md)
2. musl库的log维测能力,请参看[libc库](./native-lib/third_party_libc/musl.md)维测章节
# Native API标准库
- [libc标准库](third_party_libc/musl.md)
- [c++标准库](third_party_libc/cpp.md)
- [Node-API](third_party_napi/napi.md)
......@@ -12,4 +13,4 @@
- [libc中由于权限管控可能调用失败的符号列表](third_party_libc/musl-permission-control-symbol.md)
- [Native api中导出的EGL符号列表](third_party_opengl/egl-symbol.md)
- [Native api中导出的OpenGL ES 3.0符号列表](third_party_opengl/openglesv3-symbol.md)
- [Native api中支持的OpenSL ES接口列表](third_party_opensles/opensles.md)
\ No newline at end of file
- [Native api中支持的OpenSL ES接口列表](third_party_opensles/opensles.md)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册