【HarmonyOS NAPI 深度探索11】搭建 NAPI 开发环境:HarmonyOS DevEco Studio 全指南

ops/2025/1/21 16:57:36/

【HarmonyOS NAPI 深度探索11】搭建 NAPI 开发环境:HarmonyOS DevEco Studio 全指南

在开始 NAPI 开发之前,一个高效、完善的开发环境是成功的第一步。对于 HarmonyOS 开发者来说,DevEco Studio 是最推荐的开发工具,它为 HarmonyOS 提供了丰富的支持。今天我们将一起学习如何使用 DevEco Studio 搭建 NAPI 开发环境,为后续的开发打下坚实基础。
在这里插入图片描述

为什么选择 DevEco Studio

DevEco Studio 是专为 HarmonyOS 开发定制的集成开发环境(IDE),它支持多设备开发、分布式特性调试,并为 NAPI 开发提供了完整的工具链和接口支持。相比于其他 IDE,DevEco Studio 提供了更多适配 HarmonyOS 的功能,例如:

  • 内置 NAPI 模块支持
  • 提供调试工具,方便 JavaScript 和 C/C++ 的联合调试
  • 支持多设备模拟器,轻松测试分布式场景
环境搭建前的准备

在开始搭建之前,请确保你的开发环境满足以下基本要求:

  1. 操作系统
    推荐使用 Windows、macOS 或 Linux。根据你的系统类型下载对应版本的 DevEco Studio。

  2. 安装必备软件

    • Node.js:确保已安装最新的 LTS 版本。
    • C/C++ 编译器:
      • Windows:安装 Visual Studio 并勾选 C++ 开发工具集。
      • macOS:安装 Xcode,并启用命令行工具。
      • Linux:安装 GCC 或 Clang(根据需求选择)。
      • HarmonyOS 跨平台编译器,这里要将代码编译到手机,所以需要用到HarmonyOS提供的C++编译器,在DevEco Studio中自带。
    • Python:推荐 3.x 版本,某些工具链可能依赖它。
  3. 下载和安装 DevEco Studio
    前往 HarmonyOS 官网 下载最新版本的 DevEco Studio 并完成安装。

DevEco Studio 的安装与配置
  1. 安装 DevEco Studio
    下载 DevEco Studio 的安装包后,运行安装程序并按照提示完成安装。安装完成后首次启动时,会提示你配置开发环境:

    • 选择你的开发模式:建议选择标准模式以获得完整的功能支持。
    • 下载 HarmonyOS SDK:根据需要选择目标设备类型(手机、IoT、穿戴设备等)并下载对应的 SDK。
  2. 配置 C/C++ 工具链

    • 打开 DevEco Studio,进入 File > Settings > Tools > CMake,确保 CMake 的路径正确配置。
    • 确保 NDK 已安装并配置好路径,可通过 File > Settings > Appearance & Behavior > System Settings > Android SDK > SDK Tools 检查。
  3. 创建新项目

    • 打开 DevEco Studio,选择 File > New > HarmonyOS Project
    • 在模板选择中,选择 JS-C++ 模块,为后续的 NAPI 开发打下基础。
创建第一个 NAPI 模块
  1. 创建Native C++工程
    创建Native C++工程后,DevEco Studio会自动生成C++相关示例代码:
    在这里插入图片描述

  2. napi_init.cpp中编写C++逻辑

EXTERN_C_START  
static napi_value Init(napi_env env, napi_value exports)  
{  napi_property_descriptor desc[] = {  { "add", nullptr, Add, nullptr, nullptr, nullptr, napi_default, nullptr }  };  napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);  return exports;  
}  
EXTERN_C_END  static napi_module demoModule = {  .nm_version = 1,  .nm_flags = 0,  .nm_filename = nullptr,  .nm_register_func = Init,  .nm_modname = "entry",  .nm_priv = ((void*)0),  .reserved = { 0 },  
};  extern "C" __attribute__((constructor)) void RegisterEntryModule(void)  
{  napi_module_register(&demoModule);  
}

在Init中声明C++暴露给TS的接口方法,这里以加法add函数为例,实现add方法:

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;  }

通过napi_get_cb_info函数获取TS中传入的值,然后转换成对应的C++对象,然后将传入的doubule类型数据相加后通过napi_create_double将C++的doubule类型数据转换成TS的napi_value后返回。

  1. Index.d.ts中声明可以供TS调用的方法
    在这里插入图片描述

  2. 声明动态库名称

在oh-package.json5中配置动态库名称,在TS中直接导入模块后调用
在这里插入图片描述

  1. CMakelist.txt中配置C++编译脚本
    在这里插入图片描述

声明要编译的源码,以及要连接的外部库。

调试 NAPI 模块
  1. 设置断点
    在 C++ 文件中,单击行号区域可以设置断点。
  2. 启动调试器
    选择 Run > Debug,选择你的目标设备。DevEco Studio 会启动调试器,允许你逐步调试代码。
  3. 检查变量与内存
    调试器提供了变量监控和内存检查功能,帮助你排查问题。
常见问题与解决
  1. 找不到 CMake 或 NDK
    检查 File > Settings > Appearance & Behavior > System Settings > Android SDK 中的路径是否正确。
  2. 模块无法编译
    • 确保 CMakeLists.txt 配置正确,目标文件与路径一致。
  3. 调试时无法连接设备
    • 检查设备是否启用开发者模式。
    • 确保设备已通过 USB正确连接到电脑。
总结

通过以上步骤,我们成功在 DevEco Studio 中搭建了适配 NAPI 的开发环境。从创建项目到编写模块,再到编译与调试,整个过程简单高效。
一个高效的开发环境不仅能提高我们的开发效率,还能帮助我们更快地发现问题。如果你还没尝试过,赶紧动手搭建起来吧!相信未来你会感受到 DevEco Studio 与 HarmonyOS 的强大组合能为开发带来多大的便利。


http://www.ppmy.cn/ops/151952.html

相关文章

【开源免费】基于SpringBoot+Vue.JS夕阳红公寓管理系统(JAVA毕业设计)

本文项目编号 T 146 ,文末自助获取源码 \color{red}{T146,文末自助获取源码} T146,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

基于Python机器学习的双色球数据分析与预测

python统计分析2003-2024年所有的中奖记录,通过人工智能机器学习预测双色球,个人意见,仅供参考. 声明:双色球具有随机性,任何工具无法预测。本文章仅作为技术交流,提供学习参考。本文所涉及的代码均为python之机器学习的代码。双色球为公益事…

C++学习第五天

创作过程中难免有不足,若您发现本文内容有误,恳请不吝赐教。 提示:以下是本篇文章正文内容,下面案例可供参考 一、构造函数 问题1 关于编译器生成的默认成员函数,很多童鞋会有疑惑:不实现构造函数的情况下…

HTML之拜年/跨年APP(改进版)

目录: 一:目录 二:效果 三:页面分析/开发逻辑 1.页面详细分析: 2.开发逻辑: 四:完整代码(不多废话) index.html部分 app.json部分 二:效果 三:页面…

《AI赋能光追:开启图形渲染新时代》

光线追踪技术是图形渲染领域的重大突破,能够通过模拟光的传播路径,精准渲染反射、折射、阴影和间接光照等效果,实现高度逼真的场景呈现。而人工智能的加入,更是为光线追踪技术带来了前所未有的变革,主要体现在以下几个…

LeetCode - #187 Swift 实现重复的DNA序列

网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…

在 MySQL 中使用 `REPLACE` 函数

在 MySQL 中,REPLACE函数是一个用于处理字符串的强大工具。它的主要功能是替换字符串中的某些子字符串。REPLACE函数在数据清理、格式化以及处理文本数据时非常有用。本文将详细介绍REPLACE函数的使用方法,包括函数的语法、示例以及实际应用场景。 1. 函…

如何让AI助力制作PPT,轻松实现PPT智能生成

如何让AI助力制作PPT,轻松实现PPT智能生成!在这个信息爆炸的时代,PPT的制作已经不再是繁琐的手工工作。传统的PPT制作往往让人焦头烂额,从挑选模板到设计布局,再到调整文字、图片,一项项细节令人抓狂。随着…