【HarmonyOS NEXT】FAQ之应用框架(NDK开发2)

打印 上一主题 下一主题

主题 784|帖子 784|积分 2352

1、怎样在Native侧调用ArkTS侧的系统能力

A:如下方法

  • 通过napi_load_module接口加载模块。
  • 通过napi_get_named_property接口获取模块属性。
  • 通过napi_call_function接口调用方法。

2、Native侧怎样访问ArkTS侧系统界说的异步方法

A:可以通过创建线程安全函数的方式调用系统的异步接口。

  • 通过napi_get_cb_info接口获取应用参数。
  • 通过napi_create_threadsafe_function接口创建线程安全函数。
  • 通过napi_create_async_work接口创建异步任务。
  • 通过napi_load_module接口加载模块。
  • 通过napi_get_named_property接口获取模块属性。
  • 通过napi_call_function接口调用方法。

3、怎样在Native侧直接使用其他模块的ArkTS方法

A:可通过napi_load_module接口实现对ArkTS文件中的接口的调用。具体步骤如下:

  • 通过napi_load_module接口加载模块。
  • 通过napi_get_named_property接口获取模块属性。
  • 通过napi_call_function接口调用方法。

4、怎样在Native侧跨模块访问资源

A:可以通过createModuleContext(moduleName)接口创建同应用中差异module的上下文,获取到resourceManager对象后,在Native侧使用Native Rawfile接口操作Rawfile目录和文件来跨模块访问资源。

5、怎样在Native侧获取APP版本信息

A:Native侧暂无可以获取APP版本信息的接口,如需获取APP版本信息可在ArkTS侧获取,然后传递到Native侧。
通过@kit.AbilityKit模块中的bundleManager查询bundleInfo。在bundleInfo中包含App版本号、版本名信息。

6、ArkTS和Native怎样动态加载、卸载so

A:Native支持dlopen、dlsym等标准库函数。
ArkTS支持动态加载。现在不支持卸载so包。
  1. //加载so let module = await import (“libentry.so”)
复制代码

7、ArkTS的对象数据与Native的对象数据怎样绑定,相互持有对象数据时内存怎样管理

A:现在绑定方式是在JS侧调用C侧声明的ArkTS构造函数构造对象,在C侧解析构造函数的参数,构造对应的对象返回到ArkTS侧。

8、Native怎样调ArkTS的方法

A:如下步骤

  • 在index.d.ts文件中,提供ArkTS侧的接口方法。
  • 实现Native侧的NativeCallArkTS接口。
  • 在ArkTS侧,通过nativeModule.nativeCallArkTS()方法传入方法。

9、怎样在Native侧集成三方库Curl,并进行HTTP数据请求

A:可以将Curl移植到HarmonyOS,然后在Native侧开发时直接使用Curl的C++库实现。

10、怎样通过AKI三方库实现ArkTS与C/C++之间的跨语言调用

A:当前可以通过AKI三方库实现跨语言调用。AKI针对OpenHarmony上提供ArkTS与C/C++跨语言互调的场景提供办理方案,提供了极简语法糖使用方式,一行代码完成ArkTS与C/C++的无障碍跨语言互调,所见即所得。同时开发者无需关心Node-API的线程安全标题、Native对象GC标题,为开发者屏蔽Node-API内部复杂逻辑。

11、Native工程中怎样使用其他三方so库

A:1.将编译好的so库放到Native工程的entry/libs/arm64-v8a/目录下,并将so库对应的头文件放到entry/src/main/cpp目录层级下(可以在cpp目录下增加一个文件夹专门存放三方so库的头文件)。
2.在CMakeList.txt文件中链入so库。
3.在Native侧 .cpp文件中引入头文件使用so库的相干能力。

12、Native侧怎样使用hilog打印出日志信息

A:实例如下
1.在CMakeLists.txt中新增libhilog_ndk.z.so链接:
  1. target_link_libraries(entry PUBLIC libhilog_ndk.z.so)
复制代码
2.在源文件中包含hilog头文件, 并界说domain、tag宏:
  1. #include "hilog/log.h"
  2. #undef LOG_DOMAIN
  3. #undef LOG_TAG
  4. #define LOG_DOMAIN 0x3200 // 全局domain宏,标识业务领域
  5. #define LOG_TAG "MY_TAG"  // 全局tag宏,标识模块日志tag
复制代码
3.打印日志,以打印ERROR级别的日志为例:
留意这里需要加上{public}才可以显示打印出内容,不添加默认是{private}
  1. int a = 5, b = 10; OH_LOG_ERROR(LOG_APP, "Pure a:%{public}d b:%{private}d.", a, b);
复制代码
更多详情查看 :文档中心

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我爱普洱茶

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表