当前位置: 首页 > news >正文

零基础使用鸿蒙NDK开发最简步骤

懒得去读华为文档,又臭又长,估计读了后能用到5%就不错了。

1、File > New > Create Project > Application > Template Market > Native C++

这个Native C++ 工程不是说它是一个Native专用工程(即:不是说这个工程只能编译出动态库,然后放其它普通工程里用;一开始我是这么以为的),而是说它就是一个普通工程,只不过支持你在里边增删改c/cpp代码并在ets里调用。

1-1、创建后工程的 src/main/cpp/ 下已创建好相关文件:

types/libentry/

    index.d.ts // 接口函数(即需要在ets里调用的native 函数)的列表,根据需要增删改

    oh-package.json5 // 暂未发现需要修改

napi_init.cpp // 接口函数的实现;根据需要增删改

CMakeLists.txt // 暂未发现需要修改

1-2、在 src/main/ets/pages/index.ets 里已自动创建了相关代码,根据需要增删改

例如

import testNapi from 'libentry.so';

// 修改 testNapi 为自己希望的名称例如xxx,后边 testNapi.add也改为 xxx.add

...

let sum = testNapi.add(2, 3);

2、根据需要在 src/main/cpp/napi_init.cpp 增加代码

2-1、先去src/main/cpp/types/libentry/index.d.ts 里增加接口

例如模仿已自动形成好的 add接口,增加乘法接口 multiply

export const multiply: (a: number, b: number) => number;

增加后该行会报错,点击该行就会让你自动生成实现代码(在napi_init.cpp 里)

然后转去napi_init.cpp里模仿已自动生成的add函数,去实现这个multiply函数

上边只是简单传递number,至于传递其它参数例如string怎么写,这时华为文档里就有比较适合的例子代码可以查到了。

3、如何使用原来自己已写好的c代码

将这些.h和.c复制到src/main/cpp/下,例如 test.h, test.c

在test.c里有个函数

char* test() { 
    //...
    // return ptr;
}

然后在napi_init.cpp前边加上

extern "C" {
    #include "test.c" // 最好是用 test.h 不过编译有问题,暂时先这样
}  

然后就可以在napi_init.cpp需要用到这个test函数的地方调用了。

整体逻辑就是:

ets里 let sum = testNapi.add(2, 3);

它去找 src/main/cpp/types/libentry/index.d.ts里的add接口

后者去找 src/main/cpp/napi_init.cpp 里对应的函数

static napi_value Add(napi_env env, napi_callback_info info) {
  // ...
}

相关文章:

  • 鸿蒙版Flutter快递查询助手
  • [oeasy]python073_下划线在python里是什么含义_内部变量_私有变量_系统变量
  • DeepSeek本地化部署(DeepSeek+olloma+Dify)
  • vmware虚拟机中Ubuntu系统磁盘扩容
  • 《Generative Adversarial Nets》-GAN:生成对抗网络,一场伪造者与鉴定师的终极博弈
  • 深度学习——同一台电脑使用ssh配置多个github账号
  • LLM - 白话向量模型和向量数据库
  • CI/CD
  • 【Qt】supervisorctl进程管理:启动、重启、环境设置
  • 求阶乘的和(信息学奥赛一本通-1091)
  • 蛋白质功能预测论文阅读记录2025(DPFunc、ProtCLIP)
  • L2-4 吉利矩阵
  • 【小白向】Ubuntu|VMware 新建虚拟机后打开 SSH 服务、在主机上安装vscode并连接、配置 git 的 ssh
  • OkHttp3 详解及开发实例—官方原版(一)
  • 计算机毕业设计:基于web的乡村旅游系统
  • ubuntu软件——视频、截图、图片、菜单自定义等
  • ROS实践(三)机器人描述文件xacro(urdf扩展)
  • 【MySQL】用户管理和权限
  • Hive SQL 精进系列:COALESCE 手册
  • 【面试】计算机网络
  • 《水饺皇后》领跑五一档票房,《哪吒2》上座率仍居第一
  • 4月一二线城市新房价格环比上涨,沪杭涨幅居百城前列
  • 湖北鄂州通报4所小学学生呕吐腹泻:供餐企业负责人被采取强制措施
  • 日菲同意扩大安全合作,外交部:反对任何在本地区拉帮结派的做法
  • “五一”假期逛上海车展请提前购票,展会现场不售当日票
  • 郭继孚被撤销全国政协委员资格,此前为北京交通发展研究院长