Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
e3af6370
D
Docs
项目概览
OpenHarmony
/
Docs
1 年多 前同步成功
通知
159
Star
292
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看板
提交
e3af6370
编写于
6月 01, 2023
作者:
H
hhj
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update zh-cn/application-dev/reference/native-api-intro.md.
Signed-off-by:
N
hhj
<
huanghuijin@huawei.com
>
上级
df721b94
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
70 addition
and
36 deletion
+70
-36
zh-cn/application-dev/reference/native-api-intro.md
zh-cn/application-dev/reference/native-api-intro.md
+3
-3
zh-cn/application-dev/reference/native-lib/third_party_libc/musl.md
...ication-dev/reference/native-lib/third_party_libc/musl.md
+67
-33
未找到文件。
zh-cn/application-dev/reference/native-api-intro.md
浏览文件 @
e3af6370
# Native API(NDK)入门
Native API是OHOS SDK上提供的一组native开发接口与工具集合(也
俗
称为NDK),方便开发者使用C或者C++语言实现应用的关键功能。Native API只覆盖了OHOS基础的一些底层能力,如libc,图形库,窗口系统,多媒体,压缩库等,并没有完全提供类似于JS API上的完整的OHOS 平台能力。在应用中使用Native API会编译成动态库打包到应用中。
Native API是OHOS 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等,具体内容详见下表。|
...
...
@@ -45,7 +45,7 @@ Native API在SDK包的位置为$(SDK_ROOT)/native目录,主要有以下几个
### Native API相关资料
*
《
[
Native API参考手册
](
./native-apis/Readme-CN.md
)
》,介绍各个API参考手册
*
《
[
Native API中支持的标准库
](
../reference/native-lib/
third_party_libc/musl
.md
)
》,介绍Native 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接口
...
...
zh-cn/application-dev/reference/native-lib/third_party_libc/musl.md
浏览文件 @
e3af6370
# Native API中支持的标准库
## 简介
OHOS采用musl作为C标准库,musl库是一个轻量,快速,简单,免费的开源库。
## 标准C库
[
libc、libm、libdl
](
https://zh.cppreference.com/w/c/header
)
组合实现C11标准C库。
libc:包含线程相关接口,以及大部分标准接口。
libm:数学库函数接口,当前在OHOS中是一个链接,实际都在libc中定义。
libdl:dlopen等动态链接器接口,当前在OHOS中是一个链接,实际都在libc中定义。
**版本**
1.
2.0
从OHOS4.0开始,版本升级到1.2.3
**支持的能力**
C标准函数库是在C语言程序设计中,所有符合标准的头文件的集合,以及常用的函数库实现程序(如I/O输入输出和字符串控制)。
**musl**
[
native api中没有导出的符号列表
](
musl-peculiar-symbol.md
)
[
native api由于权限管控可能调用失败的符号列表
](
musl-permission-control-symbol.md
)
# libc标准库
## 简介
C标准函数库在C语言程序设计中,提供符合标准的头文件,以及常用的库函数实现(如I/O输入输出和字符串控制)。
OHOS采用musl作为C标准库,musl库是一个轻量,快速,简单,免费的开源libc库,详细介绍参考
[
musl官方参考手册
](
http://musl.libc.org/manual.html
)
。
musl与glibc的差异点请参考
[
wiki
](
https://wiki.musl-libc.org/functional-differences-from-glibc.html
)
。
## 标准C库组件介绍
[
libc、libm、libdl
](
https://zh.cppreference.com/w/c/header
)
组合实现C11标准C库。
libc:包含线程相关接口,以及大部分标准接口。
libm:数学库函数接口,当前在OHOS中是一个链接,实际都在libc中定义。
libdl:dlopen等动态链接器接口,当前在OHOS中是一个链接,实际都在libc中定义。
## musl版本号
1.
2.0
从OHOS4.0开始,版本升级到1.2.3
## 支持的能力
提供兼容C99,C11,POSIX标准的头文件,以及库函数接口,但不是完全兼容;支持armv7a,arm64, x86_64三种架构的支持;
为了更好的适配OHOS设备的高性能,低内存,高安全,轻量化,支持多种形态设备的基本特征;在musl开源库的基础上进行了优化,增强,对不适用嵌入式设备的接口进行了裁剪。
### 新增能力
1.
动态加载器支持命名空间隔离能力,应用可以dlopen加载的动态库受系统命名空间限制(比如,无法打开系统侧动态库)。
2.
支持dlclose真实卸载动态库能力,musl的开源版本不支持。
3.
支持symbol-versioning功能。
4.
dlopen支持直接加载zip包中未压缩的文件。
### 维测能力
提供了基础的log调试能力,方便开发者需要查看libc库内部异常。维测log的提供动态开关功能,不需要重新编译。在正式发布版本中,不建议使用,会影响运行性能。
#### 1. musl.log功能
通过hdc shell设置musl.log.enable属性为true来打开musl的log打印。这个接口是libc库里面别的日志的基础。
```
setparam musl.log.enable true
```
#### 2. 加载器log功能
如果需要程序引导,dlopen,dlclose等接口的日志,需要打开加载器log;这些log通过musl.log.ld.
*
param来设置。
*
使能全部应用的加载器log,谨慎使用
```
setparam musl.log.ld.app true
```
*
使能指定应用的加载器log,{app_name}需要替换成真实需要打印log的应用名字
```
setparam musl.log.ld.all false
setparam musl.log.ld.app.{app_name} true
```
*
打印全部应用除指定名字应用外的加载器日志
```
setparam musl.log.ld.all true
setparam musl.log.ld.app.{app_name} false
```
## musl不支持接口列表
[
native api中没有导出的符号列表
](
musl-peculiar-symbol.md
)
[
native api由于权限管控可能调用失败的符号列表
](
musl-permission-control-symbol.md
)
<!--no_check-->
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录