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

离线openHarmonySdk鸿蒙系统动态库的封装

1、下载DevEco Studio开发工具并安装好
https://developer.huawei.com/consumer/cn/download/
2、 下载需要版本的openHarmonySdk
File->Settings->OpenHarmonySdk
在这里插入图片描述
3、创建NativeC++工程
默认工程是华为harmonySdk开发环境,我们这里配置openHarmonySdk开发环境,配置如下:
假设项目名为:MyApplication15
在这里插入图片描述
3、讲代码文件复制到entry->src->cpp文件下

4、在CmakeList文件中添加需要用到的所有c/cpp文件![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/cfd4aa75d3d6441eae130b6d134380ff.png
5、entry/buil-profile.json5配置
在这里插入图片描述
如上主要修改"abiFilters": [“arm64-v8a”,“armeabi-v7a”]

6、buil-profile.json5配置(主目录下的文件,注意和步骤5区分)
在这里插入图片描述
在这里,将需要用的sdk版本好修改(这里为12),以及对"runtimeos"修改为openHarmony
7、local.properites目录配置

在这里插入图片描述
sdk.dir=D:/Program Files/Huawei/OpenHarmonySDK #步骤2在线下载的路径可配置
hwsdk.dir=D:/Program Files/Huawei/DevEco Studio/sdk #安装软件自动生成的
添加下载SDK的位置,注意分为华为鸿蒙SKD和open鸿蒙SDK,两个是不一样的,默认创建工程是华为鸿蒙,现在我们所有配置是open鸿蒙SDK。

8、File->Project Struct->BaseInfo
查看版本配置是否我们选择的:
在这里插入图片描述
9、进行编译得到动态库,如下entry->build->intermediates->libs->default
在这里插入图片描述
10、离线主机配置
(1)将DevEco Studio正常安装
(2)将步骤2下载的openHarmonySdk拷贝到目标主机
(3)将工程直接拷贝到目标主机,保持路径一致,默认是在C盘,如下
在这里插入图片描述
(4)打开项目,对1-8步骤的配置进行检查,没有问题后编译即可

注:鸿蒙系统和安卓接封装类似,函数接口都要按照规定的方式进行转换,转换的接口代码在entry->src->cpp->napi_init.cpp文件中实现,如果没有转换,则需要动态库调用者实现转换,转换的方法根据规则实现,如下为默认的加法(double类型)函数转换:

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;}
http://www.dtcms.com/a/390410.html

相关文章:

  • 从零实现鸿蒙智能设备数据采集:权限、传感器、云端上传全流程实战
  • 智慧医院IBMS中央集成系统解决方案:构建医疗安全优先的智慧运营中枢​
  • ✅ Python房源数据采集+分析+预测平台 requests爬虫+sklearn回归 大数据实战项目(建议收藏)机器学习(附源码)
  • 结婚证 OCR 识别:政务服务提速的 “关键一环”
  • Git企业开发--多人协作
  • 【论文阅读 | IF 2025 | IF-USOD:用于水下显著目标检测的多模态信息融合交互式特征增强架构】
  • 【14/20】安全强化:HTTPS 和率限制在 Express 中的应用,实现防护机制
  • C#调用钉钉API实现安全企业内部通知推送
  • MyBatis与MyBatis-Plus区别
  • 数据血缘探秘:用SQL串联不同数据源的脉络
  • 多线程程序性能优化:缓存命中率与伪共享深度剖析
  • Spring Boot支持哪些类型的自定义配置文件?
  • uniapp:scss变量使用方法
  • postman接口测试系列: 时间戳和加密
  • 模型蒸馏demo
  • 【JVM】Java中有哪些垃圾回收算法?
  • 为何楼宇自控系统日益受欢迎?解析其兴起的核心动因
  • ASP.NET Core RazorPages/MVC/Blazor/Razor/WebApi概念记录说明
  • .NET Core 中 RabbitMQ 和 MassTransit 的使用
  • 使用QT进行3D开发建模
  • 阿里云开源DeepResearch:轻量化AI推理框架技术解析与实践指南
  • Visual Studio 2026 Insiders 重磅发布:AI 深度集成、性能飞跃、全新设计
  • 大模型初识(基础模型 业务集成+智能体Agent+Prompt提示词优化)
  • 【4/20】Node.js 入门:设置后端服务器,实现一个简单 API 端点
  • Kafka事务:构建可靠的分布式消息处理系统
  • 补环境-JS原型链检测:在Node.js中完美模拟浏览器原型环境
  • TCP端口号的作用
  • 笔记本电脑维修指南(芯片级)
  • Burpsuite进行暴力破解
  • 虚拟现实CAVE系统中的光学跟踪技术,1:1呈现CAD模型沉浸式交互