
鸿蒙-ArkTS和Native之间的交互使用1创建NDK工程
引言:
NDK(Native Development Kit)是HarmonyOS SDK提供的Native API、相应编译脚本和编译工具链的集合,方便开发者使用C或C++语言实现应用的关键功能。NDK只覆盖了HarmonyOS一些基础的底层能力,如C运行时基础库libc、图形库、窗口系统、多媒体、压缩库、面向ArkTS/JS与C跨语言的Node-API等,并没有提供ArkTS/JS API的完整能力。
我们在开发的过程中难免会遇到三方语言的调用问题,NDK是目前非常成熟和完善的工具包。
所以接下来我们将学习如何使用NDK进行跨语言的Node-API调用和原生的ArkTS的交互。
首先:
1.创建NDK工程
根据工程创建向导,选择Native C++工程模板,然后单击Next。
在工程配置页面,根据向导配置工程的基本信息后,单击Finish,工具会自动生成示例代码和相关资源,等待工程创建完成。
在工程entry/src/main目录下会包含cpp目录,该目录文件的详细介绍请参见C++工程目录结构。
重点介绍一下CMakeLists.txt,它是连接的桥梁。
- src > main > cpp > CMakeLists.txt:CMake配置文件,提供CMake构建脚本。
根目录CMakeLists.txt内容
# 指定CMake的最小版本
CMAKE_MINIMUM_REQUIRED(VERSION 3.16)
# 工程名称,这里我们就叫HELLO
PROJECT(HELLO)
#添加一个子目录并构建该子目录。
ADD_SUBDIRECTORY(src)
SET(LIBHELLO_SRC hello.cpp)
//设置项目根目录,用来调用Lib库。
set(NATIVERENDER_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR})
//# 添加一个libsum动态库目标,编译成功会生成一个libsum.so add_library(HELLO SHARED napi_init.cpp)
//# 添加一个libsum动态库目标,编译成功会生成一个libsum.so add_library(HELLO SHARED napi_init.cpp)
//# 指定Hello目标include目录路径
target_link_libraries(Hello PUBLIC ../include)
//# 指定Hello目标需要链接的库名字
target_link_libraries(Hello PUBLIC sum)
源码内容
然后就是对源码的编写了
hello.cpp源码
#include
#include "sum.h"
int main(int argc,const char **argv)
{
std::cout<< "hello world!" <<std::endl;
int total = sum(1, 100);
std::cout<< "Sum 1 + 100=" << total << std::endl;
return 0;
}
sum.h源码
int sum(int a, int b);
sum.cpp源码
#include
int sum(int a, int b)
{
return a + b;
}
通过上述配置我们就得到了一个简单的NDK项目了。
后续我们进行C代码的编写和调用。
