HarmonyOS中调用C/C++代码(NDK)

开发工具准备

下载最新的编辑器

下载中心 | 华为开发者联盟-HarmonyOS开发者官网,共建鸿蒙生态

选择合适的版本下载

​编辑下载完成以后解压 然后全程下一步安装

安装教程

安装完毕以后 开始创建Native项目

第一步 新建项目

​编辑

第二步 选择 Native C++ 别选第一个

​编辑第三步 创建项目名称 包名 保存路径 切记别用中文

​编辑第四步 查看整个项目结构和预览效果

ps:不要觉得很难 动手操作起来就还好

​编辑

第五步:查看CPP文件

​编辑

其中1 表示描述C++ API接口行为,如接口名、入参、返回参数等

切记是描述 类似Arkts中interface 用来声明的 而不具体实现的

其中2 表示 C++源码编译配置文件,提供CMake构建脚本

别看后缀是txt,功能很强大的

其中3表示 C++源文件

c++的代码都写在cpp结尾的文件中 ,页面要调用的也就是C++中代码

第六步 在napi_init.cpp中定义一个求和的方法

ini 复制代码
#include "napi/native_api.h"

static napi_value Add(napi_env env, napi_callback_info info)
{
    size_t argc = 2;
    napi_value args[2] = {nullptr};

    napi_get_cb_info(env, info, &argc, args , nullptr, nullptr);

    napi_valuetype valuetype0;
    napi_typeof(env, args[0], &valuetype0);

    napi_valuetype valuetype1;
    napi_typeof(env, args[1], &valuetype1);

    double value0;
    napi_get_value_double(env, args[0], &value0);

    double value1;
    napi_get_value_double(env, args[1], &value1);

    napi_value sum;
    napi_create_double(env, value0 + value1, &sum);

    return sum;

}

第七步:在 Index.d.ts 中 定义方法 并且导出

typescript 复制代码
export const add: (a: number, b: number) => number;

第八步 :回到page下面的Arkt中

先导入

javascript 复制代码
import testNapi from 'libentry.so';

这个so就是​编辑默认表示index文件

使用的地方 testNapi获取到对应的方法

scss 复制代码
import testNapi from 'libentry.so';

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize($r('app.float.page_text_font_size'))
          .fontWeight(FontWeight.Bold)
          .onClick(() => {
              this.message =String( testNapi.add(8,10))
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

点击页面文字就能看到变化 工作中鸿蒙应用开发者只关注页面层和接口层,接口层的定义libentry中

回顾这种图 看能否给您不一样的收获

​编辑请点击下面链接加入班级 获取最新鸿蒙学习免费资料

官网地址:班级学习地址

相关推荐
2601_9495936544 分钟前
基础入门 React Native 鸿蒙跨平台开发:模拟智能音响
react native·react.js·harmonyos
xiaoqi9221 小时前
React Native鸿蒙跨平台如何进行狗狗领养中心,实现基于唯一标识的事件透传方式是移动端列表开发的通用规范
javascript·react native·react.js·ecmascript·harmonyos
jin1233222 小时前
React Native鸿蒙跨平台剧本杀组队消息与快捷入口组件,包含消息列表展示、快捷入口管理、快捷操作触发和消息详情预览四大核心功能
javascript·react native·react.js·ecmascript·harmonyos
烬头88213 小时前
React Native鸿蒙跨平台实现二维码联系人APP(QRCodeContactApp)
javascript·react native·react.js·ecmascript·harmonyos
xiaoqi9226 小时前
React Native鸿蒙跨平台如何实现分类页面组件通过searchQuery状态变量管理搜索输入,实现了分类的实时过滤功能
javascript·react native·react.js·ecmascript·harmonyos
听麟6 小时前
HarmonyOS 6.0+ 智慧出行导航APP开发实战:离线地图与多设备位置协同落地
华为·wpf·harmonyos
qq_177767376 小时前
React Native鸿蒙跨平台实现应用介绍页,实现了应用信息卡片展示、特色功能网格布局、权限/联系信息陈列、评分展示、模态框详情交互等通用场景
javascript·react native·react.js·ecmascript·交互·harmonyos
jin1233227 小时前
基于React Native鸿蒙跨平台地址管理是许多电商、外卖、物流等应用的重要功能模块,实现了地址的添加、编辑、删除和设置默认等功能
javascript·react native·react.js·ecmascript·harmonyos
2501_920931708 小时前
React Native鸿蒙跨平台医疗健康类的血压记录,包括收缩压、舒张压、心率、日期、时间、备注和状态
javascript·react native·react.js·ecmascript·harmonyos
2501_920931709 小时前
React Native鸿蒙跨平台使用useState管理健康记录和过滤状态,支持多种健康数据类型(血压、体重等)并实现按类型过滤功能
javascript·react native·react.js·ecmascript·harmonyos