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

HarmonyOS
1天前
浏览
收藏 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-11-29 10:33:12修改
分享
微博
QQ
微信
回复
1天前
相关问题
鸿蒙如何开发工业软件
7293浏览 • 2回复 待解决
onehop Device Ability 这个模板不见了?
4216浏览 • 1回复 待解决
HarmonyOS如何把npm库适用到ohpm
353浏览 • 1回复 待解决