【HarmonyOS 5】鸿蒙HarmonyOS —(cordova)研发方案详解
Android、Ios 和 HarmonyOS APP研发分析
Android研发语言Java、Ios研发语言objective-c, HarmonOS研发语言ArkTs和C/C++,写了第一句,就会有人反驳,Android和Ios也支持C/C++语言,封装成动态库so,然后调用就可以了,说的也没有错误,很多APP采用此方案。我这里主要分析的是官方提供的框架,Android的SDK只有Java语言编写的SDK,Ios提供的只有objective-c的sdk,鸿蒙则不同,在鸿蒙的开发者网站中,大部分接口不但提供ArkTs接口,同时也提供了C/C++接口,所以可以说鸿蒙是支持ArkTS和C/C++研发也不为过的,如果您精通C/C++就可以在harmonyOS平台上,大有作为的。我想说的重点不在这里,重点是三个研发平台采用的是不同的研发语言,对于一个移动端研发的程序员,如果要精通三个平台研发,确实很难,仅精通一个平台以实属不易了。然面对一个公司,开发和运营一款APP按照传统原生研发,APP的团队至少在3到5人的研发才可以胜任,粗略估算一年的团队费用在100万左右的投入,对于大厂5人以下的研发团队,完全可以接受,但是对于一个创业型的小公司,这个投入势必难以接受,在加上国内的政策性成本,APP研发的门槛已是很高了。使用原生研发,小型创业团队极难在短时间内收回研发的成本。
使用codova混合式研发
具以上原因,为了降低研发成本,如果一次研发能够同时在三个平台使用就好了,所以现在出现了不少框架来解决这个问题,然很多框架仍需要单独学习,且不够高效。我们所需要的是对于公司现有的开发团队,不需要学习新知识的情况下就可以在APP端研发,且研发的APP可以结合操作系统,直接调用原生API;目前能够满足这几个条件的只有cordova了。cordova是使用webview为UI交互,使用WEB技术的JS、CSS就可以完成研发,且可以调用原生API,也可以调用原生page页面,可以说现在所有的程序员都可以掌握这门技术,无需在多学习知识,公司无论大小,现有研发团队就可以胜任,哪怕研发团队只有一人也可以完成。对于公司来说极大的节省了成本,但是对于一个程序员,由于使用JS、CSS,就很不屑于使用这个技术研发APP,不过我可以肯定的说,现在大多APP都使用的混合研发的。所以对于小厂,直接使用后台的Java程序员就可以兼任前端的APP研发,并且支持三个平台。
Harmony-Cordova 研发方案是基于 Apache Cordova 框架,使开发者能够使用 HTML5、CSS 和 JavaScript 等 Web 技术为鸿蒙操作系统(HarmonyOS)开发应用程序的技术方案。其核心目标是实现跨平台应用的鸿蒙版本构建。以下是详细解析:
一、方案核心原理
- 统一开发语言:开发者使用通用的 Web 技术(HTML/CSS/JS)编写应用逻辑,Cordova 框架负责将代码封装为鸿蒙应用包 。
- 原生插件桥梁:通过 Java 编写的 Cordova 插件 调用鸿蒙原生能力(API 12+)。插件在
src/ohos/
目录实现原生接口,并通过plugin.xml
配置文件映射到 JavaScript 调用接口 。 - 鸿蒙 C-API 支持:区别于 Android/iOS,鸿蒙原生支持 C/C++ API,允许插件直接调用底层能力,提升性能并简化适配 。
二、开发流程与关键技术
- 环境搭建:
- 安装 Node.js 及 Cordova CLI:
npm install -g cordova
。 - 创建项目:
cordova create project_name com.example.app AppName
。 - 添加鸿蒙平台支持:
cordova platform add ohos
(需基于支持鸿蒙的 Cordova 版本) 。
- 安装 Node.js 及 Cordova CLI:
- 插件开发规范:
- 目录结构示例:
textCopy Code
MyPlugin/ src/ohos/ → 鸿蒙原生代码(Java/C++) www/ → JS前端接口 plugin.xml → 插件配置 ``` :ml-citation{ref="5" data="citationList"}
- plugin.xml 关键配置:
xmlCopy Code
<platform name="ohos"> <config-file target="config.json" parent="abilities"> <ability name="MyPluginAbility" /> </config-file> <source-file src="src/ohos/DeviceInfo.java" target-dir="src/ohos" /> </platform> ``` :ml-citation{ref="5" data="citationList"}
- 目录结构示例:
- 集成鸿蒙服务:
- 登录 AppGallery Connect(AGC)创建项目并配置应用 。
- 添加插件(如崩溃服务):
cordova plugin add @cordova-plugin-agconnect/crash
。 - 将鸿蒙配置文件(如
agconnect-services.json
)放入指定目录 。
三、鸿蒙适配优势与挑战
- 优势:
- 跨平台成本降低:复用 Web 技术栈,减少针对鸿蒙的单独开发投入 。
- 原生性能支持:通过 C/C++ API 直接调用系统能力,性能接近原生 ArkTS 应用 。
- 插件生态扩展:可兼容部分现有 Cordova 插件,或基于鸿蒙 API 定制新插件 。
- 挑战:
- 组件兼容性:部分鸿蒙原生组件(如
Image
的圆形裁剪)需通过插件扩展实现 。 - 平台差异处理:需处理鸿蒙与 Android/iOS 在事件机制、生命周期等层面的差异 。
- 组件兼容性:部分鸿蒙原生组件(如
四、典型应用场景
- 快速迁移现有 Cordova 应用:将 Android/iOS 应用快速扩展至鸿蒙平台 。
- 混合开发模式:在鸿蒙应用中嵌入 Web 模块,结合原生插件调用设备功能 。
- AGC 服务集成:便捷接入崩溃分析、数据存储等华为云服务 。
总结
Harmony-Cordova 方案通过 Web 技术与原生插件桥接,显著降低了鸿蒙应用的开发门槛,尤其适合需兼顾多平台的团队。其成功依赖于对鸿蒙 C-API 的高效利用及定制化插件开发 。开发者应重点关注插件适配与平台特性优化,以平衡开发效率与应用性能。
相关文章:
【HarmonyOS 5】鸿蒙HarmonyOS —(cordova)研发方案详解
Android、Ios 和 HarmonyOS APP研发分析 Android研发语言Java、Ios研发语言objective-c, HarmonOS研发语言ArkTs和C/C,写了第一句,就会有人反驳,Android和Ios也支持C/C语言,封装成动态库so,然后调用就可以了࿰…...
Linux程序运行日志总结
在Linux系统中,程序运行时产生的日志记录主要通过以下几种方式实现,这些日志有助于排查问题、监控系统行为或审计安全事件: 1. 系统日志(System Logs) 存放路径:通常位于 /var/log/ 目录下。常见日志文件: /var/log/syslog 或 /var/log/messages:通用系统日志(取决于发…...

【物联网-TCP/IP】
物联网-TCP/IP ■ TCP/IP■■■ 添加链接描述 ■ TCP/IP ■ ■ ■...
SAP ECC 与 SAP S/4HANA 技术架构全面对比
SAP ECC 是过去几十年众多企业核心业务系统的基石,涵盖财务、物流、制造等关键领域。然而,随着数字化转型的加速和企业需求的增长,其架构日益显现局限。因此,SAP 推出了新一代 ERP 解决方案——SAP S/4HANA。它不仅在功能上做出优…...

Halcon光度立体法
1、光度立体法,可用于将对象的三维形状与其二维纹理(例如打印图像)分离。需要用不同方向而且已知照明方向的多个光源,拍摄同一物体的至少三张图像。请注意,所有图像的相机视角必须相同。 物体的三维形状主要被计算为三…...

cocos3.X的oops框架oops-plugin-excel-to-json改进兼容多表单导出功能
在使用oops框架的过程中,它的导出数据并生成数据结构的插件oops-plugin-excel-to-json有些小的坑点,为满足我个人习惯,对此部分进行了一个小的修改,有需要的拿去用,记录下供大家参考; 一、配置:…...
Spring Boot + OpenAI 构建基于RAG的智能问答系统
一、技术架构设计 1.1 系统架构图 [前端]│▼ (HTTP/REST) [Spring Boot Controller]│▼ (Service Call) [问答处理服务层]├─▶ [知识库检索模块] ──▶ [向量数据库]└─▶ [OpenAI集成模块] ──▶ [OpenAI API]│▼ [结果组装与返回] 1.2 技术选型 组件技术栈版本要求…...
开源量子模拟引擎:Quantum ESPRESSO本地部署教程,第一性原理计算轻松入门!
一、介绍 Quantum ESPRESSO 是一个用于电子结构计算和纳米尺度材料建模的开源计算机代码集成套件,专门用于进行第一性原理(第一性原理)计算,涵盖了电子结构、晶体学和材料性能的模拟。 Quantum ESPRESSO GPU 版本支持GPU加速&am…...
算法blog合集
https://zhuanlan.zhihu.com/p/600245782 https://zhuanlan.zhihu.com/p/696212679 https://zhuanlan.zhihu.com/p/291406172 【推荐系统】DSSM双塔召回2_pair-wise训练和推理-CSDN博客 精通推荐算法1:为什么需要推荐系统(系列文章,建议收…...

每日八股文6.3
每日八股-6.3 Mysql1.COUNT 作用于主键列和非主键列时,结果会有不同吗?2.MySQL 中的内连接(INNER JOIN)和外连接(OUTER JOIN)有什么主要的区别?3.能详细描述一下 MySQL 执行一条查询 SQL 语句的…...

Kubernetes (k8s)版本发布情况
Kubernetes (k8s)版本发布情况 代码放在 GitHub - kubernetes/kubernetes: Production-Grade Container Scheduling and Management https://github.com/kubernetes/kubernetes/releases 文档放在 kubernetes.io各个版本变更等: https://github.com/kubernetes/kubernet…...

QT 5.9.2+VTK8.0实现等高线绘制
项目下载链接:QT5.9.2VTK8.0实现等高线绘制资源-CSDN文库 示例如下: 主要代码如下: #include "vtkRenderer.h" #include "vtkRenderWindow.h" #include "vtkRenderWindowInteractor.h" #include "vtkPo…...
CppCon 2015 学习:3D Face Tracking and Reconstruction using Modern C++
1. 3D面部追踪和重建是什么? 3D面部追踪(3D Face Tracking): 实时检测并追踪人脸在三维空间中的位置和姿态(如转头、点头、表情变化等),通常基于摄像头捕获的视频帧。3D面部重建(3D…...
Three.js进阶之音频处理与展示
引擎在对音频处理提供了丰富的接口,本文展示两个音频处理示例。 一、声音可视化 Three.js中的声音可视化是以视觉为核心,以音乐为载体,为音乐提供直观的视觉呈现。通过对音乐数据的分析并结合开发需求,能实现酷炫的视觉效果。在…...
4.2 HarmonyOS NEXT分布式AI应用实践:联邦学习、跨设备协作与个性化推荐实战
HarmonyOS NEXT分布式AI应用实践:联邦学习、跨设备协作与个性化推荐实战 在HarmonyOS NEXT的全场景分布式架构下,AI能力突破设备边界,通过联邦学习保护数据隐私、跨设备任务协作释放算力潜能、个性化推荐实现服务主动化。本文结合华为分布式…...

兼容老设备!EtherNet/IP转DeviceNet网关解决储能产线通讯难题
在新能源行业飞速发展的当下,工业自动化水平的高低直接影响着企业的生产效率与产品质量。JH-EIP-DVN疆鸿智能ETHERNET/IP和DEVICENET作为工业领域常用的通信协议,它们之间的转换应用在新能源生产线上发挥着关键作用。本文重点探讨ETHERNETIP从站转DEVICE…...
健康检查:在 .NET 微服务模板中优雅配置 Health Checks
🚀 健康检查:在 .NET 微服务模板中优雅配置 Health Checks 📚 目录 🚀 健康检查:在 .NET 微服务模板中优雅配置 Health Checks一、背景与意义 🔍二、核心配置 🔧2.1 引入必要的 NuGet 依赖 &…...
【Pytorch学习笔记】模型模块08——AlexNet模型详解
AlexNet模型详解:结构、算法与PyTorch实现 一、AlexNet模型结构 AlexNet是2012年ImageNet竞赛冠军模型,由Alex Krizhevsky等人提出,标志着深度学习在计算机视觉领域的突破。 网络结构(5卷积层 3全连接层)ÿ…...

LabVIEW自感现象远程实验平台
LabVIEW开发自感现象远程实验平台,通过整合 NI数据采集设备、菲尼克斯(Phoenix Contact)继电器模块及罗技(Logitech)高清摄像头,实现远程数据采集、仪器控制与实时监控三大核心功能。平台突破传统实验装置局…...
AppTrace 视角下 App 一键拉起:提升应用转化率的高效方案
官网地址:AppTrace - 专业的移动应用推广追踪平台 在大规模开展 App 推广、用户召回、广告投放、邀请传播等活动时,高效的深度链接方案至关重要。它不仅能缩短用户路径,带来无缝、流畅的跳转体验,更核心的是通过参数传递打通 web…...
梯度下降:机器学习优化的核心算法
梯度下降算法原理及其在机器学习中的实践应用 引言 在机器学习领域,优化算法扮演着核心角色。其中梯度下降法作为最基础的优化方法,为神经网络、支持向量机等模型提供了参数优化解决方案。本文将深入解析梯度下降的数学原理,探讨其多种变体实现,并通过Python代码演示具体…...
Vue-6-前端框架Vue之基于Plotly.js绘制曲线
文章目录 1 安装Plotly.js2 折线图2.1 创建一个Vue组件来绘制图表2.1.1 Vue模板部分template2.1.2 Vue脚本部分script2.1.3 Vue样式部分style2.2 使用这个组件APP.vue3 动态更新图表3.1 创建一个Vue组件来绘制图表3.1.1 Vue模板部分template3.1.2 Vue脚本部分script3.1.3 Vue样…...

Python----目标检测(《YOLOv3:AnIncrementalImprovement》和YOLO-V3的原理与网络结构)
一、《YOLOv3:AnIncrementalImprovement》 1.1、基本信息 标题:YOLOv3: An Incremental Improvement 作者:Joseph Redmon, Ali Farhadi 机构:华盛顿大学(University of Washington) 发表时间:2018年 代…...
Redux:不可变数据与纯函数的艺术
Redux:不可变数据与纯函数的艺术 状态管理的困境 随着现代 Web 应用功能的不断扩展,前端开发者面临着日益复杂的状态管理挑战。当应用从简单的表单交互发展到复杂的单页应用时,组件间共享状态的问题变得尤为突出。想象一个电商平台…...

算法篇 八大排序(冒泡 插入 选择 堆 希尔 快排 归并 计数)
目录 引言 1.冒泡排序 思路 代码实现 2.选择排序 思路 代码实现(存在易错点) 3.插入排序 思路 代码实现 4.希尔排序 思路 代码实现 5.堆排序 思路 代码实现 6.快速排序(快排) 一.三路划分 思路 代码实现 二.自…...
技术文档写作全攻略
一、引言 在快速迭代的软件开发中,技术文档早已不只是附属品,而是与代码同等重要的交付物: 帮助新成员 T0 → T1 学习曲线指数下降;降低支持成本,将重复性问答前移到自助文档;为合规审计、知识传承及商业…...
网络安全全景解析
引言 在数字化时代,网络已深度融入社会生产生活的各个领域,成为推动经济发展和社会进步的关键力量。然而,随着网络应用的日益复杂,网络安全问题也呈现出多样化、复杂化的趋势。从个人隐私泄露到企业核心数据被盗,从基础…...

音视频之视频压缩编码的基本原理
系列文章: 1、音视频之视频压缩技术及数字视频综述 2、音视频之视频压缩编码的基本原理 一、预测编码: 1、预测编码的基本概念: 预测法是最简单、实用的视频压缩编码方法,经过压缩编码后传输的并不是像素本身的取样值࿰…...

IDEA 包分层显示设置
方法一(用的IntelliJ IDEA 2024.1.4版本): 找到项目视图设置入口:在左侧Project(项目)面板的顶部,有个三个点...的按钮 ,点击它。 进入树形外观配置:在弹出的菜单中&…...
书籍将正方形矩阵顺时针转动90°(8)0605
题目 给定一个N x N的矩阵matrix,把这个矩阵调整成顺时针转动90后的形式。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 顺时针转动90后为: 13 9 5 1 14 …...