浅析:HarmonyOS 一次开发多端部署

news2025/1/15 23:25:24

万物互联时代,应用的设备底座将从几十亿手机扩展到数百亿设备。全新的全场景设备体验,正深入改变消费者的使用习惯, 同时应用开发者也面临设备底座从手机单设备到全场景多设备的转变,通过全场景多设备作为全新的底座,为消费者带来万物互联时代更为高效澝便捷的体验。新的场景同时也带来了新的挑战澞开发者不仅要支持更加多样化的设备,还要支持跨设备的协作。不同设备类型意味着不同的传感器能力、硬件能力、屏幕尺寸、操作系统和开发语言,还意味着差异化的交互方式。同时跨设备协作也让开发者面临分布式开发带来的各种复杂性,例如跨设备的网络通信、数据同步等。若采取传统开发模式,适配和管理工作量将非常巨大。当前移动应用开发中遇到的主要挑战包括:

  • 针对不同设备上的不同操作系统,重复开发,维护多套版本;
  • 多种语言栈,对人员技能要求高;
  • 多种开发框架,不同的编程范式;
  • 命令式编程,需关注细节,变更频繁,维护成本高。

为了更好的抓住机遇,应对万物互联所带来的系列挑战,新的应用生态应该具备如下特征:

  • 单一设备延伸到多设备:应用一次开发就能在多个设备上运行,软件实体能够从单一设备转移到其他设备上,且多个设备间能够协同运行,给消费者提供全新的分布式体验;
  • 厚重应用模式到轻量化服务模式:提供轻量化的服务,最小化资源消耗,一步直达, 快速完成消费者特定场景的任务;
  • 集中化分发到 AI 加持下的智慧分发:为消费者提供智慧场景服务,实现“服务找人”;
  • 纯软件到软硬芯协同的 AI 能力:提供软硬芯协同优化的原生 AI 能力,全面满足应用户高性能诉求;

以上就是鸿蒙生态应用开发白皮书里万物互联时代应用开发的机遇、挑战和趋势章节里的描述,代表了鸿蒙人的思考和出发点,接下来我们就简单解读下这些挑战和趋势是什么?

简单解读

具体挑战是什么?

  • 移动端我们有android,ios两种主流操作系统,开发语言,接口,所有技术细节都不一样,找两者都会的工程师难,那应用厂商若是要做APP跑不同设备上就得用两套班子,人力成本大;第二,android,ios分裂产品形态多,手表,PAD,手机,车机,电视,PC,未来可能更多,那同理对APP开发维护就是更大的挑战,不同的交互,不同的UI,不同版本,不同团队,如何保证产品一致,稳定,同步,体验,挑战巨大;第三再设想下未来,音箱,灯光,空调,冰箱,甚至是广告牌,监视器,摄像头,无人机,机器人所有的联网智能设备,这种面向未来的开发我们要做什么准备?

下面我们就对这三进行具体分解,也就是上段所指的具体特征:

在应用开发侧

  • 对应用开发者,最直接的问题就是UI问题,如布局,样式,交互等,这个其实大家都有方案,比如说自适应布局,当外部容器大小发生变化时,元素可以根据相对关系自动变化以适应外部容器变化的布局能力。相对关系如占比、固定宽高比、显示优先级等。当前自适应布局有4种: 线性布局、 层叠布局、 弹性布局、 相对布局。自适应布局能力可以实现界面显示随外部容器大小连续变化;响应式布局,当外部容器大小发生变化时,元素可以根据断点、栅格或特定的特征(如屏幕方向、窗口宽高等)自动变化以适应外部容器变化的布局能力。当前响应式布局能力有2种: 媒体查询、 栅格布局。这部分基于华为丰富应用场景的支撑,以及对内容的深入理解,使用过程中大家应该能发现有些空间更智能,更好用;
  • 对应用模型来说,原来android和ios上的原生应用都是厚重的,现在有些应用几个G,10几个G都有,平均尺寸也有几百兆,而鸿蒙化的HAP则提出了新的设计方式,HarmonyOS的用户应用程序包以APP Pack(Application Package)形式发布,它是由一个或多个HAP(HarmonyOS Ability Package)以及描述每个HAP属性的pack.info组成。HAP是 Ability的部署包,HarmonyOS应用代码围绕Ability组件展开。HAR(HarmonyOS Ability Resources)可以提供构建应用所需的所有内容,包括源代码、资源文件和config.json文件。HAR不同于HAP,HAR不能独立安装运行在设备上,只能作为应用模块的依赖项被引用。HSP(HarmonyOS Shared Package):这是一种新增的编译产物。HSP 使得模块可以以运行态复用的形式共享。相较于 HAR,当有多个 HAP 包依赖于同一个 HSP时,最终的打包产物中,HSP 只会存在一份。除了这三种应用包的格式,为了应用轻量化,HarmonyOS提出元服务概念,什么意思?简单类比就是小程序,形式还是HAP的形式,但是用卡片方式展现,归应用程序框架管理,入口多,易被唤出。最后,应用还分出各种Ability,这是应用程序框架中最基本的抽象单位,代表最小的应用功能单元。在现在主推的Stage模型中,Ability也分两大类:
  • UIAbility:应用的主入口,对应桌面上的图标。一个 UIAbility 实例对应一个任务。一个 UIAbility 中的通常包含多个ArkUI页面;
  • ExtensionAbility:ExtensionAbility 有多个具体的子类型,例如:FormExtension 用来开发万能卡片, InputMethodExtensionAbility 用来开发输入法等。

以上这两点就是从功能和形式上解决了适配不同屏的问题,解决了应用大的问题,也解决了应用形态的问题,Ability的提出跟解决了界面和功能的问题。鸿蒙运用了解构的方式把大问题拆解成立一些小问题,然后加以实现和演进。当然这后面还包括工程、上架,这部分说起来就是另外一块事情了,我们今天就不再深入分析。简答分析下场景:

  • 模式 1:应用或服务的 UI 自适应不同尺寸的设备屏幕,并且在不同设备的功能相同,可以实现多设备共享一个 HAP 包。这种场景下建议开发者通过一个模块来开发,并配置该模块支持多设备,然后再编译构建生成一个 HAP,分发到不同类型的设备上运行。
  • 模式 2:应用或服务的 UI、功能在不同设备间存在差异,无法实现 HAP 包多设备归一。可根据实际情况设置不同模块适用的设备类型,编译构建多个 HAP 包,一起上架。HUAWEI AppGallery Connect 会自动提取 HAP 中的设备类型的配置信息,为对应的设备自动分发正确的 HAP 包组合。

在系统开发侧

  • 事件归一抽象:不同设备间的交互方式等存在差异,如触摸、键盘、鼠标、语音、手写笔等,鸿蒙系统将不同设备的输入映射成归一交互事件,从而简化开发者适配逻辑。以缩放交互为例,通过多指触控的张合来完成缩放动作,在多设备场景下,缩放交互会出现多种不同的操作输入方式,比如手表就是表冠旋转,鼠标就是滚轮。
  • 组件归一响应:当应用部署在不同设备上供用户使用时,需要支持多种 I/O 设备,界面呈现出相应的状态为用户提供正确的视觉引导。例如触摸时显示按压状态,鼠标特有的悬停状态,键盘走焦状态。渇蒙系统默认提供多种交互方式的组件实现,方便开发者支持多种输入方式。
  • 设备能力抽象:不同设备间的软、硬件能力等存在差异,如设备是否具备定位能力、是否具备摄像头、 是否具备蓝牙功能等,鸿蒙系统需要对设备能力进行逻辑抽象,并提供接口来查询设备是否支持某种能力,方便开发者进行不同软、硬件能力的功能适配。在鸿蒙系统中,使用SystemCapability(简写为 SysCap)定义每个部件对应用开发者提供的系统软硬件能力。应用开发者基于统一的方式访问不同设备的能力。
  • 元服务开发:元服务是鸿蒙系统提供的一种全新的应用形态,具有独立入口,用户可通过点击、碰一碰、扫一扫等方式直接触发,无需显式安装,由程序框架后台静默安装后即可使用,可为用户提供便捷服务。元服务入口多,在服务中心可见,也能通过语音,NFC,摄像头等联动唤入,然后可以用户无感安装和卸载,即用即走;元服务还支持流转,通过分布式软总线的加持,元服务支持跨端迁移(将软件实体从一个设备转移到另一个设备,比如手机视频迁移到智慧屏)或多设备协同(多个物理设备上的软件共同完成一件事情,比如电视投屏+手机遥控,但是这个细分也好几种,比如显示协同,不同大屏和小屏显示不同东西;交互协同,手机输入,智慧屏显示;算力协同)。

系统侧开发想尽办法提供一站式解决方案,抽象输入,抽象交互,抽象数据,抽象硬件,无线压缩所有的可见路径,让应用只聚焦业务。所以这部分对应用开发者来说就是统一接口,统一工程,统一规范;对系统开发者来说就是一个足够具象的微服务森林,没一个端到端的功能都需要仔细梳理并有弹性和生命力。系统侧其实做了太多的工作,软总线,分布式,ArkUI,应用管理,SA化,大量的细化,解耦工作才能使得应用即服务这样的能力在系统层生根发芽。这部分说起来简单,管理起来那正是千头万绪,而且随着接入硬件形态的不断增加、复杂,如何做兼容性,如何保证体验,如何减低整个系统的可维护性,才是最大的挑战。可以看出来,鸿蒙覆盖千行百业的决心和勇气,也可以预见系统的庞杂和勃勃生机。接入厂商的增多,鸿蒙原生应用的增多,希望大家能碰撞出更多的、更实用的场景和一多能力。

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

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

相关文章

Vue3+ElementUI 多选框中复选框和名字点击方法效果分离

现在的需求为 比如我点击了Option A &#xff0c;触发点击Option A的方法&#xff0c;并且复选框不会取消勾选&#xff0c;分离的方法。 <el-checkbox-group v-model"mapWork.model_checkArray.value"> <div class"naipTypeDom" v-for"item …

【GitHub项目推荐--最简洁的人脸识别库】【转载】

本项目是世界上最简洁的人脸识别库&#xff0c;你可以使用 Python 和命令行工具提取、识别、操作人脸。本项目的人脸识别是基于业内领先的 C 开源库 dlib 中的深度学习模型&#xff0c;用Labeled Faces in the Wild 人脸数据集进行测试&#xff0c;有高达 99.38% 的准确率。 …

年味渐近 其乐龍龍!2024四川省网联会年货节闪亮来袭!

1月19日&#xff0c;“其乐龍龍2024四川省网联会年货节”正式启动&#xff0c;此次活动由四川省网联会主办&#xff0c;以直播、短视频多种形式在抖音、微博、小红书等多平台同步呈现&#xff0c;旨在为广大消费者带来一场别开生面的年货盛宴&#xff0c;助力激发消费活力。 年…

1985-2022年企业级数字经济核心产业专利数据库

1985-2022年企业级数字经济核心产业专利数据库 1、时间&#xff1a;1985-2022年 2、指标&#xff1a;分类号类型、发明人、专利公开号、分类号、专利名称、主分类号、专利类型、代理机构、专利摘要、分案原申请号、申请人、优先权、专利申请号、国际申请、申请日、国际公布、…

ChatGPT时代对大数据应用的展望

前言&#xff1a; 2022年底&#xff0c;科技圈有个爆炸性新闻&#xff0c;ChatGPT的诞生&#xff0c;引发了世界范围内的震惊&#xff1b;人工智能在与人交流上有了划时代的技术突破&#xff0c;可以和人深入的理解交流&#xff0c;让许多公司和领域对这项技术有了更多遐想。对…

day25 组合总和Ⅲ 电话号码的字母组合

题目1&#xff1a;216 组合总和Ⅲ 题目链接&#xff1a;216 组合总和Ⅲ 题意 找出相加之和为n的k个数的组合 数字只可使用1~9之间的数&#xff08;包括 1 9&#xff09;且每个数字只能使用1遍 题目中有两个限制条件&#xff1a;1&#xff09;k个数 2&#xff09;k个…

HNU-数据挖掘-实验2-数据降维与可视化

数据挖掘课程实验实验2 数据降维与可视化 计科210X 甘晴void 202108010XXX 文章目录 数据挖掘课程实验<br>实验2 数据降维与可视化实验背景实验目标实验数据集说明实验参考步骤实验过程1.对数据进行初步降维2.使用无监督数据降维方法&#xff0c;比如PCA&#xff0c;I…

AttributeError: module ‘numpy‘ has no attribute ‘float‘解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

Linux第32步_编译ST公司的TF-A源码

正点原子STM32MP157开发板使用的CPU型号是STM32MP157DAA1&#xff0c;而开发板硬件参考了ST公司的STM32MP157 EVK开发板&#xff0c;因此我们在移植的时候需要关注“stm32mp157d-ev1”。 一、了解SDK 包 ST公司会从ARM官方下载TF-A软件包&#xff0c;然后将STM32MP1 芯片添加…

实例分割中mIOU的定义是什么?

问题描述&#xff1a;实例分割中mIOU的定义是什么&#xff1f; 问题解答&#xff1a; mIOU&#xff08;Mean Intersection over Union&#xff09;是实例分割任务中常用的性能指标之一&#xff0c;用于评估模型的准确性。mIOU 是每个类别的 Intersection over Union&#xff…

【Oracle】收集Oracle数据库内存相关的信息

文章目录 【Oracle】收集Oracle数据库内存相关的信息收集Oracle数据库内存命令例各命令的解释输出结果例参考 【声明】文章仅供学习交流&#xff0c;观点代表个人&#xff0c;与任何公司无关。 编辑|SQL和数据库技术(ID:SQLplusDB) 【Oracle】收集Oracle数据库内存相关的信息 …

原子操作以及原子操作类AtomicInteger简介

前言 问&#xff1a;什么是原子操作 什么是原子操作&#xff0c;所谓原子操作&#xff0c;就是一个操作是不能打断的操作。确切的说应该是不备其他线程或者任务影响的操作。 没错&#xff0c;原子操作就是你在家里的一次上厕所的操作 >> 进厕所&#xff0c;上锁&#…

TPM模拟器安装

目录 TPM模拟器安装 1&#xff09;安装配置所需依赖 2&#xff09;从官网下载TPM模拟器程序ibmtpm1332.tar.gz 3&#xff09;创建安装目录并将源码解压到对应目录 4&#xff09;进入解压后的目录&#xff0c;然后执行安装命令 5&#xff09;将tpm服务器添到Linux系统执行目…

【蓝桥杯日记】复盘篇一:深入浅出顺序结构

&#x1f680;前言 本期是一篇关于顺序结构的题目的复盘,通过复盘基础知识&#xff0c;进而把基础知识学习牢固&#xff01;通过例题而进行复习基础知识。 &#x1f6a9;目录 前言 1.字符三角形 分析&#xff1a; 知识点&#xff1a; 代码如下 2. 字母转换 题目分析: 知…

申请开启|成为亚马逊云科技 Community Builder,共建云端社区!

在探索由技术打造的云端世界时&#xff0c;和同行者一起学习&#xff0c;与技术专家共同探讨是开发者成长的最佳助力&#xff01; 亚马逊云科技开发者社区 Community Builders 为技术爱好者和新兴思想领袖提供技术资源、学习和交流机会&#xff0c;帮助开发者探索、分享技术相关…

windows如何切换访问NAS共享文件夹用户

从资源管理器对NAS共享文件夹输入用户名与密码进行访问后&#xff0c;想切换访问用户&#xff0c;搜索了一圈&#xff0c;网上介绍的方法都无效&#xff0c;最后只能注销windows7登陆&#xff0c;然后重新登陆&#xff0c;再访问NAS共享时才能切换用户&#xff0c;各位观众如有…

智能文件管理,按数量自动新建文件夹归类

文件管理&#xff0c;一直以来都是许多人头疼的问题。当你拥有大量的文件时&#xff0c;如何有效地归类和整理这些文件就显得尤为重要。现在&#xff0c;我们为你带来了一款全新的文件管理工具&#xff0c;让你轻松实现按数量自动新建文件夹进行归类&#xff01; 首先第一步&am…

数据库(MySQL库表操作)

目录 1.1 SQL语句基础&#xff08;SQL命令&#xff09; 1.1.1 SQL的简介 1.1.2 SQL语句的分类 1.1.3 SQL语句的书写规范 1.2 数据库操作 1.2.1 查看 1.2.2 自建库 1.2.3 切换数据库 1.2.4 删库 1.3 MySQL字符集 1.3.1 MySQL字符集包括&#xff1a; 1.3.2 utf8 和 u…

审稿周期短,且出版效率高的10本医学类中文核心期刊推荐!

常笑医学整理了适合医务工作者进行论文投稿的10本医学类中文核心期刊&#xff0c; 以及期刊详细参数&#xff0c;供大家参考。 1.《保健医学研究与实践》 &#xff08;详细投稿信息请点击刊物名称查看&#xff09; 简介&#xff1a;《保健医学研究与实践》是中国高校保健医学研…

SpringMVC环境搭配

概述 Spring MVC是Spring Framework提供的Web组件&#xff0c;全称是Spring Web MVC,是目前主流的实现MVC设计模式的框架&#xff0c;提供前端路由映射、视图解析等功能 mvc是什么 MVC是一种软件架构思想&#xff0c;把软件按照模型&#xff0c;视图&#xff0c;控制器来划分…