#鸿蒙通关秘籍#开发的时候,如果里得用到Native软件包,这个咋配置?

HarmonyOS
2024-11-28 14:35:02
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
系统小神童

咱们要想在HarmonyOS应用中使用Native软件包,进行一些配置和代码编写是基本工作。

然后得在module.json5文件中配置Native模块的路径和参数,比如:

{
"apiType": "stageMode",
"buildOption": {
"externalNativeOptions": {
"path": "./src/main/cpp/CMakeLists.txt",
"arguments": "",
"abiFilters": [
"arm64-v8a",
"x86_64"
],
"cppFlags": ""
}
},
"targets": [
{
"name": "default",
"runtimeOS": "HarmonyOS"
}
]
}

然后,还需要在C++代码中定义和注册Native接口,比如:

EXTERN_C_START
static napi_value Init(napi_env env, napi_value exports) {
// 注册Native函数
napi_property_descriptor desc[] = {
{ "myHypot", nullptr, MyHypot, nullptr, nullptr, nullptr, napi_default, nullptr }
};
if(napi_ok != napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc)) {
return nullptr;
}
return exports;
}
EXTERN_C_END

static napi_module demoModule = {
.nm_version = 1,
.nm_flags = 0,
.nm_filename = nullptr,
.nm_register_func = Init,
.nm_modname = "hello",
.nm_priv = ((void*)0),
.reserved = { 0 },
};
extern "C" __attribute__((constructor)) void RegisterEntryModule(void) {
napi_module_register(&demoModule);
}

在ArkTS侧,你可以用导入Native库来使用这些接口:

import libHello from 'libhello.so';
已于2024-12-19 19:00:21修改
分享
微博
QQ
微信
回复
2024-11-28 15:10:15
相关问题
HarmonyOS 上传软件包报错991
104浏览 • 1回复 待解决
#鸿蒙通关秘籍#右键菜单配置
214浏览 • 1回复 待解决