鸿蒙Native开发,集成第三方库(二)
1、相关参考
三方动态链接库集成-构建NDK工程-NDK开发 - 华为HarmonyOS开发者
cJSON使用详细教程 | 一个轻量级C语言JSON解析器-CSDN博客
2、添加库和头文件
2.1、CMake配置HarmonyOS编译工具链构建工程 - !>Mon<! - 博客园,在这篇文章中我们已经生成了libcjson.so,我们将so拷贝到libs/arm64-v8a路径下;
同时将头文件复制到src/main/cpp路径下。

2.2、修改src/main/cpp目录下CMakeLists.txt文件配置,使用target_link_libraries命令将需要预加载的so库链接到项目中

3、在index.d.ts文件中导出Native侧提供的接口,在ArkTS侧进行结果验证。如果napi_init.cpp没有该方法,会提示添加。

4、在自动添加的方法中实现代码即可

#include "napi/native_api.h" #include "cJSON.h" #include <cstring> static napi_value NAPI_Global_GetJsonString(napi_env env, napi_callback_info info) { // TODO: implements the code; size_t argc = 1; napi_value args[1] = {nullptr}; napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); cJSON* cjson_test = NULL; cJSON* cjson_address = NULL; cJSON* cjson_skill = NULL; char* str = NULL; /* 创建一个JSON数据对象(链表头结点) */ cjson_test = cJSON_CreateObject(); /* 添加一条字符串类型的JSON数据(添加一个链表节点) */ cJSON_AddStringToObject(cjson_test, "name", "mculover666"); /* 添加一条整数类型的JSON数据(添加一个链表节点) */ cJSON_AddNumberToObject(cjson_test, "age", 22); /* 添加一条浮点类型的JSON数据(添加一个链表节点) */ cJSON_AddNumberToObject(cjson_test, "weight", 55.5); /* 添加一个嵌套的JSON数据(添加一个链表节点) */ cjson_address = cJSON_CreateObject(); cJSON_AddStringToObject(cjson_address, "country", "China"); cJSON_AddNumberToObject(cjson_address, "zip-code", 111111); cJSON_AddItemToObject(cjson_test, "address", cjson_address); /* 添加一个数组类型的JSON数据(添加一个链表节点) */ cjson_skill = cJSON_CreateArray(); cJSON_AddItemToArray(cjson_skill, cJSON_CreateString( "C" )); cJSON_AddItemToArray(cjson_skill, cJSON_CreateString( "Java" )); cJSON_AddItemToArray(cjson_skill, cJSON_CreateString( "Python" )); cJSON_AddItemToObject(cjson_test, "skill", cjson_skill); /* 添加一个值为 False 的布尔类型的JSON数据(添加一个链表节点) */ cJSON_AddFalseToObject(cjson_test, "student"); /* 打印JSON对象(整条链表)的所有数据 */ str = cJSON_Print(cjson_test); napi_value outInfo; size_t nSize = strlen(str); napi_create_string_utf8(env, str, nSize, &outInfo); napi_set_element(env, args[0], 0, outInfo); return outInfo; }
5、在ets界面代码中添加调用,进行结果验证


浙公网安备 33010602011771号