背景
Native API(NDK)入门
名词概念
Native API构成介绍
Native API目录结构
目录 | 功能说明 |
build | 应用中编译动态库的toolchain cmake脚本;这个目录下ohos.toolchain.cmake文件定义了给OHOS交叉编译选项 |
build-tools | 放置编译构建的工具,如cmake |
docs | Native API接口参考文档,通过doxgen从头文件中提取出来 |
llvm | 支持OHOS ABI的llvm交叉编译器 |
sysroot | 放置编译链接的依赖文件目录,包含头文件,动态库等 |
写在最后Native API接口(4.0 Release)
Native API相关资料
- Native API参考,介绍各个API参考手册。
- Native API中支持的标准库,介绍Native API支持的开源标准库。
- Native API开发指南,结合具体的例子,场景介绍各类接口的使用。
- 如何在Cmake工程中使用NDK,介绍如何使用使用NDK开发一个CMake工程。
- Node-API在应用工程中的使用指导, 如何使用Node-API接口。
简单应用
如何开发应用?
- DevEco IDE创建工程选择“Native C++”模板:
编译运行后,点击helloworld打印输出有:Test NAPI 2 + 3 = 5。
- ArkUI部分:
- nativeC++部分由 CMake 和 C++代码两部分组成:
- CMake:
- C++:
如何使用系统NDK?
上面例子运行起来后,c++部分是没有打印信息的,若想看到对应的打印信息,则需要调用hilog进行输出,修改如下:
- cmake修改:
- c++文件修改:
- 输出:
具体原理是什么?
PC端OHOS SDK里包括了native对应的库文件和头文件。
OHOS源码可以编译出带NDK的FullSDK,也可以从CI网址下载。
ohos的ci网址如下:https://ci.openharmony.cn/workbench/cicd/dailybuild/dailylist。
使用建议
建议使用Native API的场景
主要有如下一些
- 应用性能敏感代码,比如游戏,物理模拟等计算密集型场景。
- 需要复用已有的C或C++库。
- 需要针对CPU特性进行专项定制的库,如neon加速。
不建议使用Native API的场景
- 写一个纯native的的OHOS应用。
- 希望在尽可能多的OHOS设备上保持兼容的应用。
维测能力
- OHOS官方提供lldb remote方式代码调试,详细参看lldb参考手册。
- musl库的log维测能力,请参看libc库维测章节。
总结
- NDK方式是应用层直接调用底层库或者三方库目前看最常规的方式;
- 4.0(API10)有ndk 46个,3.2(API9)有ndk 28个,实质代码里有更多的ndk,RK的原因没有编出更多,比如sensor部分就没有编译出来。
- 划重点,NDK里有两种api:node-api,用于arkts和c++调用和传递数据;c/c++ api,可以把动态库打包成应用侧c++直接调用的接口。
- 社区文档:https://gitee.com/openharmony/docs/tree/master/zh-cn/application-dev/reference。