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

《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》学习笔记——HarmonyOS技术理念

1.2 技术理念

在万物智联时代重要机遇期,HarmonyOS结合移动生态发展的趋势,提出了三大技术理念(如下图3-1所示):一次开发,多端部署;可分可合,自由流转;统一生态,原生智能。

cke_153.png

图1-1 核心技术理念

1.2.1 一次开发,多端部署

“一次开发,多端部署”指的是一个工程,一次开发上架,多端按需部署。目的是为了支撑开发者高效地开发多种终端设备上的应用。为了实现这一目的,HarmonyOS提供了几个核心能力,包括多端开发环境,多端开发能力以及多端分发机制,如下图1-2所示。

cke_154.png

图1-2 一次开发、多端部署示意图

1. 多端开发环境

HUAWEI DevEco Studio是面向全场景多设备提供的一站式开发平台,支持多端双向预览、分布式调优、分布式调试、超级终端模拟、低代码可视化开发等能力,帮助开发者降低成本、提升效率、提高质量。

HUAWEI DevEco Studio提供的核心能力如下图1-3所示。

cke_155.png

图1-3 HUAWEI DevEco Studio提供的核心能力

  • 多端双向预览:在HarmonyOS应用的开发阶段,因不同设备的屏幕分辨率、形状、大小等差异,开发者需要在不同设备上查看UI界面显示,确保实现效果与设计目标一致。在传统的开发模式下,开发者需要获取大量不同的真机设备用于测试验证。HUAWEI DevEco Studio提供了多种设备的双向预览能力,支持同时查看UI代码在多个设备上的预览效果,并支持UI代码和预览效果的双向定位修改。
  • 分布式调优:HarmonyOS应用具有天然的分布式特征,体现在同一个应用在多个设备之间会有大量的交互。开发过程中,对这些交互进行调试时,需要对每个设备分别建立调试会话,并且需要在多个设备之间来回切换,容易造成调试不连续、操作繁琐等问题。为了提升开发效率,HUAWEI DevEco Studio提供了分布式调试功能,支持跨设备调试,通过代码断点和调试堆栈可以方便地跟踪不同设备之间的交互,用于定位多设备互动场景下的代码缺陷。
  • 分布式调试:分布式应用的运行性能至关重要。在跨端迁移场景中,需要应用在目标设备上快速启动,以实现和原设备之间的无缝衔接;在多端协同场景中,需要应用在算力和资源不同的多个设备上都能高效运行,以获得整体的流畅体验。以往开发者在分析分布式应用的性能问题时,需要单独查看每个设备的性能数据,并手动关联分析这些数据,操作繁琐,复杂度高。HUAWEI DevEco Studio提供了分布式调优功能,支持多设备分布式调用链跟踪、跨设备调用堆栈缝合,同时采集多设备性能数据并进行联合分析。
  • 超级终端模拟:移动应用开发时需要使用本地模拟器来进行应用调试,实现快速开发的目的。HarmonyOS应用需要运行在多种不同类型的设备上,为此HUAWEI DevEco Studio提供了不同类型的终端模拟,支持开发者在多个模拟终端上进行开发调试,降低门槛、节约成本。同时,多个模拟终端、真机设备也可以自由地组成超级终端,进一步降低开发者获取分布式调测环境的难度。
  • 低代码可视化开发:低代码开发提供UI可视化开发能力,支持自由拖拽组件和可视化数据绑定,可快速预览效果,所见即所得。通过拖拽式编排、可视化配置的方式,帮助开发者减少重复性的代码编写,快速地构建多端应用程序。低代码开发的产物如组件、模板等可以被其他模块的代码引用,并且能通过跨工程复用,支持开发团队协同完成复杂应用的开发。
2. 多端开发能力

应用如需在多个设备上运行,需要适配不同的屏幕尺寸和分辨率、不同的交互方式(如触摸和键盘等)、不同的硬件能力(如内存差异和器件差异等),开发成本较高。因此,多端开发能力的核心目标是降低多设备应用的开发成本。为了实现该目标,HarmonyOS提供了以下几个核心能力,支持多端UI适配,交互事件归一,设备能力抽象,帮助开发者降低开发与维护成本,提升代码复用度。

  • 多端UI适配:不同设备屏幕尺寸、分辨率等存在差异,HarmonyOS将对屏幕进行逻辑抽象,包括尺寸和物理像素,并提供丰富的自适应/响应式的布局和视觉能力,方便开发者进行不同屏幕的界面适配。
  • 交互事件归一:不同设备间的交互方式等存在差异,如触摸、键盘、鼠标、语音、手写笔等,HarmonyOS将不同设备的输入映射成归一交互事件,从而简化开发者适配逻辑。
  • 设备能力抽象:不同设备间的软、硬件能力等存在差异,如设备是否具备定位能力、是否具备摄像头、是否具备蓝牙功能等,HarmonyOS要对设备能力进行逻辑抽象,并提供接口来查询设备是否支持某一能力,方便开发者进行不同软、硬件能力的功能适配。在HarmonyOS中,使用SystemCapability(简写为 SysCap)定义每个部件对应用开发者提供的系统软硬件能力。应用开发者基于统一的方式访问不同设备的能力。
3. 多端分发机制

如果需要开发多设备上运行的应用,一般会针对不同类型的设备多次开发并独立上架。开发和维护的成本大,为了解决这个问题,HarmonyOS提供了“一次开发,多端部署”的能力,开发者开发多设备应用,只需要一套工程,一次打包出多个HAP,统一上架,即可根据设备类型按需进行分发。

除了可以开发传统的应用,开发者还可以开发元服务。元服务是一种面向未来的服务提供方式,具有独立入口的、免安装的、可为用户提供一个或多个便捷服务的应用程序形态。HarmonyOS为元服务提供了更多的分发入口,方便用户获取,同时也增加了元服务露出的机会。

1.2.2 可分可合,自由流转

元服务是HarmonyOS提供的一种全新的应用形态,具有独立入口,用户可通过点击、碰一碰、扫一扫等方式直接触发,无需显式安装,由程序框架后台静默安装后即可使用,可为用户提供便捷服务。

传统移动生态下,开发者通常需要开发一个原生应用版本,如果提供小程序给用户,往往需要开发若干个独立的小程序。鸿蒙生态下,鸿蒙原生支持元服务开发,开发者无需维护多套版本,通过业务解耦将应用分解为若干元服务独立开发,按需根据场景组合成复杂应用。

元服务基于HarmonyOS API开发,支持运行在1+8+N设备上,供用户在合适的场景、合适的设备上便捷使用。元服务是支撑可分可合、自由流转的轻量化程序实体,帮助开发者的服务更快触达用户。具备如下特点: * 触手可及:元服务可以在服务中心发现并使用,同时也可以基于合适场景被主动推荐给用户使用,例如用户可在服务中心和小艺建议中发现系统推荐的服务。 * 服务直达:元服务无需安装卸载,“秒开体验”,即点即用,即用即走。 * 万能卡片:支持用户无需打开元服务便可获取服务内重要信息的展示和动态变化,如天气、关键事务备忘、热点新闻列表。 * 自由流转:元服务支持运行在多设备上并按需跨端迁移,或者多个设备协同起来给用户提供最优的体验。例如手机上未完成的邮件,迁移到平板继续编辑,手机用作文档翻页和批注,配合智慧屏完成分布式办公;例如分布式游戏场景,手机可作为手柄,与智慧屏配合玩游戏,获得新奇游戏体验。

1.2.3 统一生态,原生智能

1. 统一生态

移动操作系统和桌面操作系统的跨平台应用开发框架不尽相同,从渲染方式的角度可以归纳为WebView渲染、原生渲染和自渲染这三类,HarmonyOS对应的提供系统WebView、ArkUI框架和XComponent能力来支撑三种类型的跨平台框架的接入。

主流跨平台开发框架已有版本正在适配HarmonyOS,基于这些框架开发的应用可以以较低成本迁移到HarmonyOS。

2. 原生智能

HarmonyOS内置强大的AI能力,面向鸿蒙生态应用的开发,通过不同层次的AI能力开放,满足开发者的不同开发场景下的诉求,降低应用的开发门㵬,帮助开发者快速实现应用智能化。

参考资料

  • 《跟老卫学HarmonyOS开发》 开源免费教程,https://github.com/waylau/harmonyos-tutorial
  • 《鸿蒙HarmonyOS手机应用开发实战》(清华大学出版社)
  • “鸿蒙系统实战短视频App 从0到1掌握HarmonyOS”(鸿蒙系统实战短视频App 从0到1掌握HarmonyOS_实战课程_慕课网)
  • 《鸿蒙HarmonyOS应用开发入门》(清华大学出版社)
  • “2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”(2024 鸿蒙零基础快速实战-仿抖音App开发( ArkTS版 )_实战课程_慕课网)
  • 《鸿蒙HarmonyOS应用开发从入门到精通战(第2版)》(北京大学出版社)

相关文章:

《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》学习笔记——HarmonyOS技术理念

1.2 技术理念 在万物智联时代重要机遇期,HarmonyOS结合移动生态发展的趋势,提出了三大技术理念(如下图3-1所示):一次开发,多端部署;可分可合,自由流转;统一生态&#xf…...

将多个 k8s yaml 配置文件合并为一个文件

如下bash脚本实现功能 “将多个k8s的yaml 配置文件” 合并为一个 yaml,使用 --- 分割文件配置。 创建文件 merge_yaml.sh ,内容如下: #!/bin/bash# 默认参数 input_patterns() # 匹配的文件模式数组 output_file"combined.yaml"…...

Linux 文件的特殊权限—Sticky Bit(SBIT)权限

本文为Ubuntu Linux操作系统- 第十九期~~ 其他特殊权限: 【SUID 权限】和【SGID 权限】 更多Linux 相关内容请点击👉【Linux专栏】~ 主页:【练小杰的CSDN】 文章目录 Sticky(SBIT)权限基本概念Sticky Bit 的表示方式举例 设置和取…...

MIPI D-PHY/C-PHY/M-PHY 高速串行接口标准

MIPI D-PHY、C-PHY和M-PHY都是MIPI联盟制定的高速串行接口标准。它们都具有低功耗、高速传输速率等特点,但各有侧重: ➢MIPI D-PHY:适用于手机与其他设备之间的数据传输。 ➢MIPI C-PHY:专为手机摄像头而设计。 ➢MIPI M-PHY&am…...

USB免驱IC读写器QT小程序开发

USB免驱全协议IC卡读写器QT小程序开发,读取15693卡。 QT小程序UI开发界面: QT程序代码mainWindow.cpp代码如下: MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this); }MainWind…...

OSCP靶场训练冒险之kioprix4:shell逃逸以及利用数据库提权

声明! 学习资源来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&a…...

NIPS2014 | GAN: 生成对抗网络

Generative Adversarial Nets 摘要-Abstract引言-Introduction相关工作-Related Work对抗网络-Adversarial Nets理论结果-Theoretical Results实验-Experiments优势和不足-Advantages and disadvantages缺点优点 结论及未来工作-Conclusions and future work研究总结未来研究方…...

Postman接口测试01|接口测试基础概念、http协议、RESTful风格、接口文档

目录 一、接口测试基础概念 1、什么是接口 2、接口的类型 3、什么是接口测试 4、为什么要做接口测试 5、接口测试的实现方式 6、什么是自动化接口测试? 二、接口返回的数据格式 1、三种格式 2、Json 三、接口协议 1、webservice协议 2、dubbo协议 3、…...

Linux系统编程——详解页表

目录 一、前言 二、深入理解页表 三、页表的实际组成 四、总结: 一、前言 页表是我们之前在讲到程序地址空间的时候说到的,它是物理内存到进程程序地址空间的一个桥梁,通过它物理内存的数据和代码才能映射到进程的程序地址空间中&#xff…...

SpringBoot + HttpSession 自定义生成sessionId

SpringBoot HttpSession 自定义生成sessionId 业务场景实现方案 业务场景 最近在做用户登录过程中,由于默认ID是通过UUID创建的,缺乏足够的安全性,决定要自定义生成 sessionId。 实现方案 正常的获取session方法如下: HttpSe…...

循环对称复高斯分布(Circularly Symmetric Complex Gaussian Distribution)

一、引言 循环对称复高斯分布(Circularly Symmetric Complex Gaussian Distribution,简称CSCG)在无线通信、信号处理等领域具有广泛的应用。作为一种特殊的复高斯分布,CSCG具有独特的性质,如循环对称性、高斯性等&…...

xinput1_3.dll放在哪里?当xinput1_3.dll丢失时的应对策略:详细解决方法汇总

在计算机系统的运行过程中,我们偶尔会遇到一些令人困扰的问题,其中xinput1_3.dll文件丢失就是较为常见的一种情况。这个看似不起眼的动态链接库文件,实则在许多软件和游戏的正常运行中发挥着至关重要的作用。一旦它丢失,可能会导致…...

基于STM32的智能家居环境监控系统设计

目录 引言系统设计 硬件设计软件设计系统功能模块 环境监控模块控制模块显示模块系统实现 硬件实现软件实现系统调试与优化结论与展望 1. 引言 随着智能家居技术的发展,环境监控系统已经成为家居管理的重要组成部分。智能家居环境监控系统通过实时监测室内温度、湿…...

Vscode + gdbserver远程调试开发板指南:

本章目录 步骤环境准备网络配置vscode配置步骤 (全图示例)开发板配置开始调试注意: 每次断开之后,开发板都需要重新启动gdbserver才可调试。 参考链接: 步骤 环境准备 将交叉编译链路径加入$PATH变量:确保系统能够找到所需的工具。 export PATH$PATH:/p…...

大表:适用于结构化数据的分布式存储系统

大家觉得有意义和帮助记得及时关注和点赞!!! 译者序摘要1 引言2 数据模型 2.1 行(Row)2.2 Column Families(列族) 2.2.1 设计2.2.2 column key 的格式:family:qualifier2.2.3 访问控制和磁盘/内存记账(acco…...

深入解析MVCC中Undo Log版本底层存储读取逻辑

一、引言 多版本并发控制(MVCC,Multi-Version Concurrency Control)是一种广泛应用于关系数据库管理系统中的并发控制技术。它通过保存数据的历史版本,使得在事务并发执行时,每个事务都能看到数据的一致性视图。在MVC…...

游戏引擎学习第64天

代码改的我看的比较懵 原视频可以去这个网站去看 https://guide.handmadehero.org/ 回顾我们在模拟区域方面的进展 在目前的情况下,如果有很多任务需要完成,可以进行分解。在昨天收到的改变中,决定将任务分解成模拟区域。模拟区域是可以随时…...

Effective C++ 条款33:避免遮掩继承而来的名称

文章目录 条款33:避免遮掩继承而来的名称为什么避免遮掩?如何避免遮掩?1. 使用 using 声明式2. 使用转交函数 (Forwarding Functions) 总结 条款33:避免遮掩继承而来的名称 在 C 中,派生类(derived class&…...

UEFI Spec 学习笔记---4 - EFI System Table(1)

4 - EFI System Table 本章节主要介绍的是 UEFI Image 的 Entry point(在 UEFI 固件执行的时候,都是直接调用入口函数并且执行从而调用其他的 driver)。 UEFI Image 主要是有三类:UEFI boot service driver、UEFI runtime drive…...

【微信小程序】3|首页搜索框 | 我的咖啡店-综合实训

首页-搜索框-跳转 引言 在微信小程序中,首页的搜索框是用户交互的重要入口。本文将通过“我的咖啡店”小程序的首页搜索框实现,详细介绍如何在微信小程序中创建和处理搜索框的交互。 1. 搜索函数实现 onClickInput函数在用户点击搜索框时触发&#x…...

华为云AI开发平台ModelArts

华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

day52 ResNet18 CBAM

在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...