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包。
- //加载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链接:
- target_link_libraries(entry PUBLIC libhilog_ndk.z.so)
复制代码 2.在源文件中包含hilog头文件, 并界说domain、tag宏:
- #include "hilog/log.h"
- #undef LOG_DOMAIN
- #undef LOG_TAG
- #define LOG_DOMAIN 0x3200 // 全局domain宏,标识业务领域
- #define LOG_TAG "MY_TAG" // 全局tag宏,标识模块日志tag
复制代码 3.打印日志,以打印ERROR级别的日志为例:
留意这里需要加上{public}才可以显示打印出内容,不添加默认是{private}
- int a = 5, b = 10; OH_LOG_ERROR(LOG_APP, "Pure a:%{public}d b:%{private}d.", a, b);
复制代码 更多详情查看 :文档中心
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |