【笔记】OpenHarmony和HarmonyOS区别及应用开发简介

news2025/1/20 4:53:09

一、概念

  • OpenHarmony(OH) : OpenAtom OpenHarmony
  • HarmonyOS(HO):开发 | 华为开发者联盟 (huawei.com)

HO当前最高是3.1,在华为mate 60上面也是。关于4.0、5.0和next这类版本说法都是面向用户的,不是开发人员。对于程序员,最高只到了版本3。

OH基于内核,市面了解的是叫HO。先有内核版本才有应用层版本,因此OH的版本会比HO高级。

(一)HarmonyOS

分为应用开发和设备开发,这里只关注HarmonyOS鸿蒙应用开发了。

(二)OpenHarmony

OpenHarmony 4.0 Release对应API能力级别为API 10 Release,

HO比OH找工作容易(估计是应用层需求大上手多),但是OH的API更加完善。

二、开发工具 IDE(DevEco Studio)

v3和v4的DevEco 的SDK是不大相同的(下载链接也是),而且新的都建议用v4。

  • OH 4.0 DevEco Studio 安装包 :OpenHarmony-v4.0-release
  • HO 3.1 DevEco Studio 安装包 :HUAWEI DevEco Studio 3.1.1 Release
    • 版本说明-DevEco Studio-工具 | 华为开发者联盟 (huawei.com)

(一)HarmonyOS v3.1.1 Release

DevEco Studio 3.1.1 Release 安装包下载
DevEco Studio 3.1.1 Release 安装包下载

版本信息:

DevEco Studio 3.1.1 Release 版本信息​​​

DevEco Studio 3.1.1 Release
Build Version: 3.1.0.501, built on June 20, 2023
Build #DS-223.8617.56.36.310501
Runtime version: 17.0.6+10-b829.5 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.

SDK版本:

(二)OpenHarmony-v4.0-release

最新版本,SDK=10,设置OH版本到API10。

24年1月华为发布Next版本,可能会存在以往的版本不兼容问题。

三、应用开发

1、SDK

在设置中检查项目SDK,可以切换HarmonyOS(当前最高9)和OpenHarmony(10)

SDK
Settings-SDK

Note:下载OpenHarmony SDK的路径必须跟HarmonyOS的不同

安装 OpenHarmony SDK
下载 OpenHarmony SDK 及路径配置

2、新建项目

创建项目时,不要新建Empty Ability,容易不兼容,建议新建【[OpenHarmony]Empty Ability】(DevEco 3没有的)

v4 Create Project
v4 Create Project
v3.1 Create Project
v3 Create Project

如果还是DevEco v3.1.1的版本会显示SDK 3.1,如果是v4的SDK则为10(这个不能在HaromonyOS上面跑,可能会模拟器手机报错)

3、项目配置

类似Android的build.gradle,有单独(entry目录下)和全局配置(项目) build-profile.json5

build-profile.json5 项目配置

4、HarmonyOS 开发支持

鸿蒙 {开发} 套件 万物互联时代的鸿蒙生态加速器

包含HarmonyOS应用/服务从设计、开发、测试、上架所需的关键技术和产品。(鸿蒙指华为终端鸿蒙智能设备操作系统软件)

上层应用开发所需工具和知识点:

ArkTS 应用开发语言

ArkTS 语言 | 华为开发者联盟 (huawei.com)

ArkTS是鸿蒙生态的应用开发语言。它在保持TypeScript(简称TS)基本语法风格的基础上,对TS的动态类型特性施加更严格的约束,引入静态类型。同时,提供了声明式UI、状态管理等相应的能力。

自然简洁语法

主要的布局就是build()的内容,外层通过stuct Index包装,最简版如下:(看起来类似Android开发,给注解加了个功能。)

//Index就是应用的入口
@Entry //装饰器,表示页面入口
@Component //组件,表示下述结构体有UI的能力
struct Index {

  build() {    //构建声明式UI
    Text("Hello world")
      .fontSize(50)
  }

}

数据驱动UI,刷新机制,Binding。

//Index就是应用的入口
@Entry 
@Component //组件,表示下述结构体有UI的能力
struct Index {
  @State message: string = 'Hello World'

  build() {    //构建声明式UI
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .width('100%')
    }
    .height('100%')
  }
}
轻量化并发机制

ArkCompiler运行时在HarmonyOS上提供了Worker API支持并发编程。在运行时实例内存隔离的基础上,ArkCompiler通过共享运行实例中的不可变或者不易变的对象、内建代码块、方法字节码等技术手段,优化了并发运行实例的启动性能和内存开销。

ArkUI 界面开发框架

声明式UI框架ArkUI_跨端界面应用开发 | 华为开发者联盟 (huawei.com)

ArkUI是一套构建分布式应用界面的声明式UI开发框架。

3.1 UI 更新机制升级(布局渲染)

ArkUI3.1通过编译期生成特定函数的方式将UI组件更新数据变更进行细粒度地绑定,实现UI更新Diff算法从COMPONENT和ELEMENT树形结构对比升级为单节点NODE的函数式更新,极大简化了声明式开发范式UI组件树形结构,大幅度优化了UI组件布局渲染性能

COMPONENT和ELEMENT树形结构
COMPONENT和ELEMENT树形结构

=>

单节点NODE
单节点NODE函数
逻辑和UI分离(数据双向绑定机制)

逻辑和UI分离通过利用数据双向绑定机制传递页面变化逻辑,将流转7个步骤简化为2个步骤。可将跨端迁移协同的开发代码量降低40%以上。

优化前:数据流转7步

原Ability包含UI+Model,将其分离后,数据流转优化。

优化后:数据流转2步
Stage 模型(应用调度)

Stage模型开发概述-Stage模型开发指导-应用模型-开发 | 华为开发者联盟 (huawei.com)

提供十几种不同场景的扩展服务Extension机制,在保证了应用后台进程合理运行的基础上,规避了应用进程之间无序拉起,达到保证前台资源供给,应用调度更加有序的目的。

高级UI组件扩展能力

ArkUI框架提供了基于XComponent组件的C++自绘制引擎接入(比如游戏引擎)能力,和基于Web组件的HTML5/Web的渲染能力。满足了开发者在游戏、相机、地图、浏览器等复杂应用场景的开发诉求,降低了这类应用移植的门槛。

XComponent组件
XComponent组件 Demo

5、功能开发

代码语法类似flutter,compose。

代码结构

结构又像网页开发,index作为入口。好比Android的MainActivity吧。

index.ets 入口
index.ets 入口

设备类型

当前UI开发不用多虑设备类型(如手机、平板、手表等等),视为横竖屏两种类型即可。

开发过程中可以把PreviewerMuitl-prifile preview打开,就能看到不同设备的显示情况。

SDK API阅读

只能看到声明和二进制,不能像Android SDK那样看到java源码实现。

UI 调试

build中可以设置界面的属性和数值大小,通过侧边栏的Previewer->Inspector可以快速配置和查看界面情况。

四、学习规划

1、基本应用开发(2个月?10k+)

100w个岗位,Android 

2、应用高级原理,SDK开发,熟悉源码原理

3、高级开发,系统、硬件(南向)

GPIO PWM TCP UDP MQTT 线程管理,底层锁

系统移植、内核裁剪、驱动开发(摄像机、传感器)

Android 23种设计模式

刚开始学的时候不用看源码OpenAtom OpenHarmony,后面高级开发的时候需要熟悉。

  • OH源码下载:zh-cn/device-dev/get-code/sourcecode-acquire.md · OpenHarmony/docs - Gitee.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1496071.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法相关计算

1 内存管理相关 1 .1 float 6.9 f 的内存计算方法 二进制小数的计算: (1)小数的二进制算法和整数的大致相反,就是不断的拿小数部分乘以2取积的整数部分,然后正序排列。比如求0.9的二进制: 0.9*21.8 取 1…

opencv边缘检测之Canny算法

文章目录 简介实战 简介 Canny在1986年提出了一种边缘检测算法,因其卓越的性能和准确性而广泛应用于各种图像分析领域。opencv中提供了这种算法,其操作步骤如下 高斯滤波:采用 5 5 5\times5 55的高斯核函数进行滤波,对图像进行…

chrome插件chrome.storage数据写入失败QUOTA_BYTES_PER_ITEM quota exceeded

Unchecked runtime.lastError while running storage.set: QUOTA_BYTES_PER_ITEM quota exceeded at Object.callback 在开发浏览器插件的时候,报错提示:超出存储限制,浏览器插件存储官方文档:https://developer.chrome.com/docs…

selinux规则

selinux状态 相关命令 进程要和文件的安全上下文相匹配,进程才能打开文件 查找这个命令从哪个安装包来的用 yum provides 命令 进程httpd 必须与ls -Z的文件类型一致,要不然在强制模式下面,打开不了 在终端2用此命令,把文件类型改…

【Ubuntu】将多个python文件打包为.so文件

1.为什么要将python打包为.so文件? 保护源码 2.实战例子 a.安装相应的包 pip install cython 验证安装是否成功 cython --version b.实战的文件目录和内容 hi.py # This is a sample Python script.# Press ShiftF10 to execute it or replace it with your…

基于OpenCV的图形分析辨认01

目录 一、前言 二、实验目的 三、实验内容 四、实验过程 一、前言 编程语言:Python,编程软件:vscode或pycharm,必备的第三方库:OpenCV,numpy,matplotlib,os等等。 关于OpenCV&…

Docker的镜像操作

目录 镜像的操作(**开头为常用请留意) 镜像查找 **拉取镜像 **推送镜像 **查看镜像 **修改镜像名称 **查看镜像的详细信息 ​编辑 删除镜像 查看所有镜像ID 删除全部镜像 **查看镜像的操作历史 镜像迁移 镜像打包 远程发送镜像(需要先打包) 本地镜像tar包恢复 镜像过…

FPGA——三速自适应以太网设计(2)GMII与RGMII接口

FPGA——以太网设计(2)GMII与RGMII 基础知识(1)GMII(2)RGMII(3)IDDR GMII设计转RGMII接口跨时钟传输模块 基础知识 (1)GMII GMII:发送端时钟由MAC端提供 下…

Web安全:报错注入原理分析,报错注入步骤,报错注入常用函数

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全自学教程》 报错注入 一、什么是报错注入二、执行原理1. 代码逻辑…

node_vue个人博客系统开发

Day01 一、导入express 1、创建node_serve服务文件夹 2、初始化项目 npm init -y3、导入express框架 npm i express4、创建一个app.js文件,为服务端的入口文件 // 导入express模块 const express = require(express); // 创建express服务 const app = express(); // 调用…

Promisification、微任务

前提摘要 Promise 对象的构造器(constructor)语法如下: let promise new Promise(function(resolve, reject) { // executor }); 传递给 new Promise的函数被称为 executor,当 new Promise 被创建,executor 会自动…

小程序Taro框架 自定义底部Tabbar,处理自定义Tab栏切换卡顿、闪烁

最终效果 最近在用Taro框架开发一个小程序,有一个自定义底部Tabbar的需求,最终效果如下 起步 这页是我第一次接触自定义小程序底部Tabbar,所有第一选择必然是相看官方文档:微信小程序自定义 Tabbar | Taro 文档 (如果…

支部管理系统微信小程序(管理端+用户端)flask+vue+mysql+微信小程序

系统架构如图所示 高校D支部管理系统 由web端和微信小程序端组成,由web端负责管理,能够收缴费用、发布信息、发布问卷、发布通知等功能 部分功能页面如图所示 微信小程序端 包含所有源码和远程部署,可作为毕设课设

SAP PP学习笔记07 - 简单BOM,派生BOM,多重BOM,批量修改工具 CEWB

上一章讲了BOM的操作。 SAP PP学习笔记06 - BOM操作(BOM 展开,BOM 使用先一览,BOM比较,批量更改BOM)-CSDN博客 本章延续上一章,继续讲BOM操作。 主要讲 派生BOM,多重BOM,以及BOM批…

Python·算法·每日一题(3月7日)电话号码的字母组合

题目 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 示例 1: 输入:digits "23&qu…

IDEA中右侧工具栏没有maven框

第一步,首选确认自己的IDEA的Maven配置是否正常, 如果确认配置没问题,第二步,查看这个地方是否有Maven的选项? 什么,这里你居然也没有?好吧,那就跟我一样了,进入第三步 …

ARM基础----STM32处理器操作模式

STM32处理器操作模式 Cortex-M处理器操作模式、特权等级和栈指针操作模式栈指针CONTROL寄存器异常压栈时的SP指针 Cortex-A 处理器运行模型寄存器组 Cortex-M处理器操作模式、特权等级和栈指针 操作模式 处理模式:执行中断服务程序等异常处理,处理器具有…

【HTML】HTML基础7.1(无序列表)

目录 标签 属性 效果 注意 标签 <ul> <li>列表里要装的东西</li> <li>列表里要装的东西</li> <li>列表里要装的东西</li> </ul> 属性 type&#xff1a; circle空心圆disc实心圆square方框 效果 circle空心圆效果…

【C语言】冒泡排序

概念 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法&#xff0c;它重复地遍历要排序的列表&#xff0c;一次比较两个元素&#xff0c;并且如果它们的顺序错误就把它们交换过来。通过多次的遍历和比较&#xff0c;最大&#xff08;或最小&#xff09;的元素…

【Leetcoode】2917. 找出数组中的 K-or 值

文章目录 题目思路代码结果 题目 题目链接 给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。 nums 中的 K-or 是一个满足以下条件的非负整数&#xff1a; 只有在 nums 中&#xff0c;至少存在 k 个元素的第 i 位值为 1 &#xff0c;那么 K-or 中的第 i 位的值才是 1 。…