Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
1ce54d60
D
Docs
项目概览
OpenHarmony
/
Docs
大约 2 年 前同步成功
通知
161
Star
293
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
1ce54d60
编写于
6月 02, 2023
作者:
H
hhj
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update zh-cn/application-dev/reference/native-api-intro.md.
Signed-off-by:
N
hhj
<
huanghuijin@huawei.com
>
上级
26309299
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
42 addition
and
42 deletion
+42
-42
zh-cn/application-dev/reference/native-api-intro.md
zh-cn/application-dev/reference/native-api-intro.md
+14
-14
zh-cn/application-dev/reference/native-lib/Readme-CN.md
zh-cn/application-dev/reference/native-lib/Readme-CN.md
+1
-1
zh-cn/application-dev/reference/native-lib/third_party_libc/cpp.md
...lication-dev/reference/native-lib/third_party_libc/cpp.md
+21
-0
zh-cn/application-dev/reference/native-lib/third_party_libc/cxx.md
...lication-dev/reference/native-lib/third_party_libc/cxx.md
+0
-21
zh-cn/application-dev/reference/native-lib/third_party_libc/musl.md
...ication-dev/reference/native-lib/third_party_libc/musl.md
+6
-6
未找到文件。
zh-cn/application-dev/reference/native-api-intro.md
浏览文件 @
1ce54d60
# Native API(NDK)入门
Native API是O
HOS SDK上提供的一组native开发接口与工具集合(也称为NDK),方便开发者使用C或者C++语言实现应用的关键功能。Native API只覆盖了OHOS基础的一些底层能力,如libc,图形库,窗口系统,多媒体,压缩库等,并没有完全提供类似于JS API上的完整的OHOS
平台能力。在应用中使用Native API会编译成动态库打包到应用中。
Native API是O
penHarmony SDK上提供的一组native开发接口与工具集合(也称为NDK),方便开发者使用C或者C++语言实现应用的关键功能。Native API只覆盖了OpenHarmony基础的一些底层能力,如libc,图形库,窗口系统,多媒体,压缩库等,并没有完全提供类似于JS API上的完整的OpenHarmony
平台能力。在应用中使用Native API会编译成动态库打包到应用中。
## 名词概念
|名词|名词解释|
|--|--|
|Native API|O
HOS
SDK里面native包提供的,面向三方应用开发的Native 接口以及相应编译脚本,编译工具链。包括C运行时基础库libc,3D图形库opengl,面向JS与C跨语言的接口Node-API等,具体内容详见下表。|
|NDK|Native Develop Kit的缩写,在O
HOS
上就是Native API;Native API是官方名字,NDK指代相同意思。|
|SDK CAPI|O
HOS Native API中的C语言接口,以及工具链部分,当前OHOS
的Native API里面只包含C语言接口,因此Native API与CAPI意思一样,建议交流的时候使用CAPI,防止Native API与napi缩写混用。|
|Node-API|曾用名napi,是O
HOS
中提供JS与C跨语言调用的接口,是Native API接口中的一部分. 该接口在Node.js提供的Node-API基础上扩展而来,但不完全与Node.js中的Node-API完全兼容。 |
|napi|Node-API的曾用名,当前Node-API头文件中的接口仍然以napi_开头,
但是为了防止与Native API误用,不建议使用
。|
|Native API|O
penHarmony
SDK里面native包提供的,面向三方应用开发的Native 接口以及相应编译脚本,编译工具链。包括C运行时基础库libc,3D图形库opengl,面向JS与C跨语言的接口Node-API等,具体内容详见下表。|
|NDK|Native Develop Kit的缩写,在O
penHarmony
上就是Native API;Native API是官方名字,NDK指代相同意思。|
|SDK CAPI|O
penHarmony Native API中的C语言接口,以及工具链部分,当前OpenHarmony
的Native API里面只包含C语言接口,因此Native API与CAPI意思一样,建议交流的时候使用CAPI,防止Native API与napi缩写混用。|
|Node-API|曾用名napi,是O
penHarmony
中提供JS与C跨语言调用的接口,是Native API接口中的一部分. 该接口在Node.js提供的Node-API基础上扩展而来,但不完全与Node.js中的Node-API完全兼容。 |
|napi|Node-API的曾用名,当前Node-API头文件中的接口仍然以napi_开头,
在OpenHarmony中统一用Node-API替换napi
。|
## Native API构成介绍
### Native API目录结构
...
...
@@ -18,10 +18,10 @@ Native API在SDK包的位置为$(SDK_ROOT)/native目录,主要有以下几个
|目录|功能说明|
|--|--|
|build|应用中编译动态库的toolchain cmake脚本;这个目录下ohos.toolchain.cmake文件定义了给O
HOS
交叉编译选项|
|build|应用中编译动态库的toolchain cmake脚本;这个目录下ohos.toolchain.cmake文件定义了给O
penHarmony
交叉编译选项|
|build-tools|放置编译构建的工具,如cmake|
|docs|Native API接口参考文档,通过doxgen从头文件中提取出来|
|llvm|支持O
HOS
ABI的llvm交叉编译器|
|llvm|支持O
penHarmony
ABI的llvm交叉编译器|
|sysroot|放置编译链接的依赖文件目录,包含头文件,动态库等|
### Native API接口
...
...
@@ -47,7 +47,7 @@ Native API在SDK包的位置为$(SDK_ROOT)/native目录,主要有以下几个
*
《
[
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编译一个C
make C/C++工程文档
](
../quick-start/howto-migrate-cmake-with-ohosndk.md
)
》,介绍如何使用使用Native API开发一个Cm
ake工程
*
《
[
使用NDK编译一个C
Make C/C++工程文档
](
../quick-start/howto-migrate-cmake-with-ohosndk.md
)
》,介绍如何使用使用Native API开发一个CM
ake工程
*
《
[
Node-API在应用工程中的使用指导
](
../napi/napi-guidelines.md
)
》, 如何使用Node-API接口
...
...
@@ -63,10 +63,10 @@ Native API在SDK包的位置为$(SDK_ROOT)/native目录,主要有以下几个
### 不建议使用Native API的场景
1.
写一个纯native的的O
HOS
应用
2.
希望在尽可能多的O
HOS
设备上保持兼容的应用
1.
写一个纯native的的O
penHarmony
应用
2.
希望在尽可能多的O
penHarmony
设备上保持兼容的应用
##
维测
能力
##
调试
能力
1.
O
HOS
官方提供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.
O
penHarmony
官方提供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
)
调试能力
章节
zh-cn/application-dev/reference/native-lib/Readme-CN.md
浏览文件 @
1ce54d60
# Native API标准库
-
[
libc标准库
](
third_party_libc/musl.md
)
-
[
c++标准库
](
third_party_libc/c
xx
.md
)
-
[
c++标准库
](
third_party_libc/c
pp
.md
)
-
[
Node-API
](
third_party_napi/napi.md
)
-
[
libuv
](
third_party_libuv/libuv.md
)
-
[
OpenSL ES
](
third_party_opensles/opensles.md
)
...
...
zh-cn/application-dev/reference/native-lib/third_party_libc/cpp.md
0 → 100644
浏览文件 @
1ce54d60
# 标准C++库
OpenHarmony当前使用的是llvm项目的C++标准库实现
[
libc++
](
https://libcxx.llvm.org/
)
。
## 版本
10.
0.1
从OpenHarmony 3.2开始,libc++升级到clang/llvm 12.0.1版本
从OpenHarmony 4.0开始,libc++升级到clang/llvm 15.0.4版本
## 支持的能力
C++11、C++14标准已完全支持,C++17和C++20标准正在完善。具体语言特性支持标准可以参考
[
https://libcxx.llvm.org/
](
https://libcxx.llvm.org/
)
网站对应的ReleaseNotes。
## ABI兼容
在OpenHarmony系统中,系统框架与应用Native库都在使用C++标准库,两部分依赖的版本是不一样的。系统框架依赖的C++标准库随镜像版本升级,而应用依赖的C++标准库随编译使用的SDK版本升级,两部分依赖的C++基础库会跨多个大版本,会产生ABI兼容性。为了解决此问题,OpenHarmony上把两部分依赖的C++标准库进行了区分,系统库使用libc++.so,应用使用应用包内提供的libc++_shared.so;两个库使用的C++命名空间不一样,libc++_shared.so使用__n1作为C++符号的命名空间,libc++.so使用__h作为C++符号的命名空间。
两边使用的C++标准库不能进行混用,Native API接口当前只能是C接口,可以通过这个接口隔离两边的C++运行环境。
\ No newline at end of file
zh-cn/application-dev/reference/native-lib/third_party_libc/cxx.md
已删除
100644 → 0
浏览文件 @
26309299
# 标准C++库
OHOS当前使用的是llvm项目的C++标准库实现
[
libc++
](
https://libcxx.llvm.org/
)
。
## 版本
10.
0.1
从OHOS 3.2开始,libc++升级到clang/llvm 12.0.1版本
从OHOS 4.0开始,libc++升级到clang/llvm 15.0.4版本
## 支持的能力
C++11、C++14标准已完全支持,C++17和C++20标准正在完善。具体语言特性支持标准可以参考
[
https://libcxx.llvm.org/
](
https://libcxx.llvm.org/
)
网站对应的ReleaseNotes。
## ABI兼容
在OHOS系统中,系统框架与应用Native库都在使用C++标准库,两部分依赖的版本是不一样的。系统框架依赖的C++标准库随镜像版本升级,而应用依赖的C++标准库随编译使用的SDK版本升级,两部分依赖的C++基础库会跨多个大版本,要保证双方ABI兼容性是非常困难的。因此在OHOS上我们把两部分依赖的C++标准库进行了区分,随系统镜像携带的是libc++.so,应用自己提供的库携带的是libc++_shared.so;两个库使用的C++命名空间不一样,libc++_shared.so使用__n1作为c++符号的命名空间,libc++.so使用__h作为c++符号的命名空间。
两边使用的c++标准库不能进行混用,Native API接口当前只能是C接口,可以通过这个接口隔离两边的C++运行环境。
\ No newline at end of file
zh-cn/application-dev/reference/native-lib/third_party_libc/musl.md
浏览文件 @
1ce54d60
...
...
@@ -3,7 +3,7 @@
## 简介
C标准函数库在C语言程序设计中,提供符合标准的头文件,以及常用的库函数实现(如I/O输入输出和字符串控制)。
O
HOS
采用musl作为C标准库,musl库是一个轻量,快速,简单,免费的开源libc库,详细介绍参考
[
musl官方参考手册
](
http://musl.libc.org/manual.html
)
。
O
penHarmony
采用musl作为C标准库,musl库是一个轻量,快速,简单,免费的开源libc库,详细介绍参考
[
musl官方参考手册
](
http://musl.libc.org/manual.html
)
。
musl与glibc的差异点请参考
[
wiki
](
https://wiki.musl-libc.org/functional-differences-from-glibc.html
)
。
...
...
@@ -13,20 +13,20 @@ musl与glibc的差异点请参考[wiki](https://wiki.musl-libc.org/functional-di
libc:包含线程相关接口,以及大部分标准接口。
libm:数学库函数接口,当前在O
HOS
中是一个链接,实际都在libc中定义。
libm:数学库函数接口,当前在O
penHarmony
中是一个链接,实际都在libc中定义。
libdl:dlopen等动态链接器接口,当前在O
HOS
中是一个链接,实际都在libc中定义。
libdl:dlopen等动态链接器接口,当前在O
penHarmony
中是一个链接,实际都在libc中定义。
## musl版本号
1.
2.0
从O
HOS
4.0开始,版本升级到1.2.3
从O
penHarmony
4.0开始,版本升级到1.2.3
## 支持的能力
提供兼容C99,C11,POSIX标准的头文件,以及库函数接口,但不是完全兼容;支持armv7a,arm64, x86_64三种架构的支持;
为了更好的适配O
HOS
设备的高性能,低内存,高安全,轻量化,支持多种形态设备的基本特征;在musl开源库的基础上进行了优化,增强,对不适用嵌入式设备的接口进行了裁剪。
为了更好的适配O
penHarmony
设备的高性能,低内存,高安全,轻量化,支持多种形态设备的基本特征;在musl开源库的基础上进行了优化,增强,对不适用嵌入式设备的接口进行了裁剪。
### 新增能力
1.
动态加载器支持命名空间隔离能力,应用可以dlopen加载的动态库受系统命名空间限制(比如,无法打开系统侧动态库)。
...
...
@@ -34,7 +34,7 @@ libdl:dlopen等动态链接器接口,当前在OHOS中是一个链接,实
3.
支持symbol-versioning功能。
4.
dlopen支持直接加载zip包中未压缩的文件。
###
维测
能力
###
调试
能力
提供了基础的log调试能力,方便开发者需要查看libc库内部异常。维测log的提供动态开关功能,不需要重新编译。在正式发布版本中,不建议使用,会影响运行性能。
#### 1. musl.log功能
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录