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

HarmonyOS
2024-11-28 14:35:02
1108浏览
收藏 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"
}
]
}

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.

然后,还需要在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);
}

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.

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

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