百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

ArkUI-X跨平台应用改造指南(跨平台gis)

ccwgpt 2025-07-01 17:14 11 浏览 0 评论

现状与诉求

随着 HarmonyOS Next 5.0 版本正式发布,众多开发者基于 ArkTS 语言为 HarmonyOS Next 系统开发了大量应用,这极大地丰富了 HarmonyOS 的生态。越来越多的应用上线,也给开发者带来了挑战,开发者需要同时开发和维护适用于 HarmonyOS Next、Android、iOS 三个平台的应用程序。这不仅意味着开发工作量大幅增加,开发成本也随之上升,而且很难保持一致的交互体验。
ArkUI-X 跨平台框架是基于 HarmonyOS 打造的跨端跨平台框架,能实现 “一次开发、三平台部署”。 基于ArkTS开发的HarmonyOS Next应用,配套ArkUI-X跨平台框架,可以快速改造为跨平台应用,缩短开发周期,同时还能确保应用在 HarmonyOS Next、Android、iOS 多个平台上,为用户提供一致的交互体验。
本文重点介绍如何将HarmonyNext应用工程转换为跨平台工程,实现一码多平台。

改造目标

从零开始或基于现有HarmonyOS Next App进行改造,使其可快速部署于Android、IOS平台。
通过ArkUI-X框架Bridge能力实现ArkTS与原生平台交互。

方案说明

依据分层架构设计理念,分三部分阐述。

产品定制层(products)

由于不同操作系统之间的数据平台差异等客观原因,部分功能基于各平台的独特能力来实现不可避免。基于此,在products层,建议开发者建立两个module,分别命名为harmonyos和arkuix。在不同的hap包中集成对应的独特功能模块,最终编译成独立的hap包,以此实现功能隔离的效果。

当然,倘若在app的实际开发进程中确定所有功能在三端应用时均可实现,也就是不需要考虑平台差异性问题,可以直接采用单hap设计。开发者需要根据实际开发状况进行全面综合的考量。

module

编译产物:hap包

运行设备平台/系统能力支持

harmonyos

harmonyos.hap

HarmonyOS Next

arkuix

arkuix.hap

Android

arkuix

arkuix.hap

iOS

products层为App主module,其编译产物为HAP。作为应用的入口。一般保留有应用启动页和应用首页。由于采用了分包编译,需要开发者于harmonyos.hap(下面简称A包)和 arkuix.hap (下面简称B包)中各自独立开发应用启动页和应用首页(下面简称Pages),带来额外的开发量。基于此,建议开发者进行 products层 设计时考虑以下几点:

共性考虑:对于App来说,A包和B包都存在”设置页面、我的页面、登录页面“(见上图),这些共性的代码和文件如果分别存放于A包和B包会导致大量的冗余代码,也不利于后期维护,因此建议对其进行抽象,形成一个独立的模块存放(features层模块main),通过module依赖的方式使用。
差异性考虑:对于App来说,仅A包存在”发现页面“(见上图),如果B包运行至”发现页面“时会产生不可预知的后果。
B包的Pages设计时删除相关的页面元素,用户使用基于B包的app时不感知”发现页面“。
相关的数据结构、方法函数等应重新设计,可以抽象的部分进行抽象,存于features层模块main;无法抽象的部分各自实现。

基础特性层(features)

Features层属于App的特性界面层,其编译产物为HAR/HSP包。在该层级中,包含了应用的所有UI界面、弹窗、媒体图片等元素,这些都是能够被用户直接感知并进行操作的。此层是借助HarmonyOS的ArkUI组件以及相关能力来进行设计与开发的,并且ArkUI-X框架确保了在Android/iOS与HarmonyOS Next上能够拥有相同的展示效果和交互体验。

1.开发者进行设计时需首先考虑ArkUI-X框架的实际适配状况,使用支持跨平台的UI控件、属性、方法进行跨平台开发,因为在UI组件方面存在的差异,是无法借助Bridge能力来弥补的。
2.API接口的使用:在使用API接口时可能会遇到以下两种情况:1、API不支持跨平台。2、API在Android、IOS平台支持能力有差异(具体信息可参考相应的API文档)。因此不建议开发者在features层直接调用API接口实现功能。应尽可能对其抽象,于commons层创建功能模块实现,使用时调用commons层相应功能模块接口。具体实现详见“第三部分:公共能力层(commons)”。
3.共通组件:在实际开发过程中,可以抽象出部分满足多种场景的共通UI。可以在commons层创建模块“uicomponents”,将共通UI抽象并实现,实现代码复用的效果。
4.应注意,features层应合理设计模块,谨慎处理模块间依赖关系,避免循环依赖等问题。

模块main

Products层harmonyos.hap(下面简称A包)和 arkuix.hap (下面简称B包)这样的双hap设计解决了因设备平台差异导致的应用功能差异的问题。但是由此引入了新问题:如果对Products层代码进行量化,那么共性代码(A包和B包可复用的一套代码)是要远远多于差异性代码(A包和B包需各自进行设计,无法复用)的。开发者在后续的开发和维护过程中,每次都需要同时修改分别部署于A包和B包的共性代码。由此产生大量冗余代码和不必要的工作量。
为解决该问题,我们设计了模块main。模块main使用HAR。通过将共性的部分抽取、实现。后续的开发和维护过程中,仅修改main模块即可,从而提升开发效率,减少冗余代码,优化代码结构。
然而,需要特别注意的是,当products层采用单hap设计时,由于所有功能都集成在一个hap包中,因此无需额外创建模块main,以避免不必要的复杂性。

图片左侧为单hap设计,因为不存在差异性代码,所有代码集成于Products层phone.hap中,向下依赖features层。

图片右侧为双hap设计,其中差异性代码各自在harmonyos.hap和arkuix.hap中分别实现,实现功能隔离。共性代码抽象集成于features层模块main中,A包和B包共同依赖模块main,实现代码复用。

公共能力层(commons)

commons层是App的能力集合体,其编译产物为HAR/HSP包,主要用于阐述App的核心功能与附加服务。它向上能够为features层和products层直接给予能力方面的支持,向下则依靠运行设备平台的系统能力。ArkUI - X框架的Bridge能力,为功能模块直接调用Android/iOS平台的能力提供了有力的支撑。

需要注意的是,commons层应当合理规划模块设置,谨慎对待模块间的依赖关系,避免出现循环依赖等问题。

建议开发者首先考虑使用ArkUI-X框架已有API进行开发。

根据当前ArkUI-X框架的适配现状,可分为三种改造方式,结合架构图commons层 NetWork进行说明。至于工程中具体的文件部署细节详见:工程目录结构设计。

说明: 示例代码主要展示整体流程、架构。相关代码细节如接口定义、函数功能实现等需开发者根据实际进行开发填充。

相关推荐

滨州维修服务部“一区一策”强服务

今年以来,胜利油田地面工程维修中心滨州维修服务部探索实施“一区一策”服务模式,持续拓展新技术应用场景,以优质的服务、先进的技术,助力解决管理区各类维修难题。服务部坚持问题导向,常态化对服务范围内的13...

谷歌A2A协议和MCP协议有什么区别?A2A和MCP的差异是什么?

在人工智能的快速发展中,如何实现AI模型与外部系统的高效协作成为关键问题。谷歌主导的A2A协议(Agent-to-AgentProtocol)和Anthropic公司提出的MCP协议(ModelC...

谷歌大脑用架构搜索发现更好的特征金字塔结构,超越Mask-RCNN等

【新智元导读】谷歌大脑的研究人员发表最新成果,他们采用神经结构搜索发现了一种新的特征金字塔结构NAS-FPN,可实现比MaskR-CNN、FPN、SSD更快更好的目标检测。目前用于目标检测的最先...

一文彻底搞懂谷歌的Agent2Agent(A2A)协议

前段时间,相信大家都被谷歌发布的Agent2Agent开源协议刷屏了,简称A2A。谷歌官方也表示,A2A是在MCP之后的补充,也就是MCP可以强化大模型/Agent的能力,但每个大模型/Agent互为...

谷歌提出创新神经记忆架构,突破Transformer长上下文限制

让AI模型拥有人类的记忆能力一直是学界关注的重要课题。传统的深度学习模型虽然在许多任务上取得了显著成效,但在处理需要长期记忆的任务时往往力不从心。就像人类可以轻松记住数天前看过的文章重点,但目前的...

不懂设计?AI助力,人人都能成为UI设计师!

最近公司UI资源十分紧张,急需要通过AI来解决UI人员不足问题,我在网上发现了几款AI应用非常适合用来进行UI设计。以下是一些目前非常流行且功能强大的工具,它们能够提高UI设计效率,并帮助设计师创造出...

速来!手把手教你用AI完成UI界面设计

晨星技术说晨星技术小课堂第二季谭同学-联想晨星用户体验设计师-【晨星小课堂】讲师通过简单、清晰的语言描述就能够用几十秒自动生成一组可编辑的UI界面,AIGC对于UI设计师而言已经逐步发展成了帮助我们...

「分享」一端录制,多端使用的便捷 UI 自动化测试工具,开源

一、项目介绍Recorder是一款UI录制和回归测试工具,用于录制浏览器页面UI的操作。通过UIRecorder的录制功能,可以在自测的同时,完成测试过程的录制,生成JavaScr...

APP自动化测试系列之Appium介绍及运行原理

在面试APP自动化时,有的面试官可能会问Appium的运行原理,以下介绍Appium运行原理。Appium介绍Appium概念Appium是一个开源测试自动化框架,可用于原生,混合和移动Web应用程序...

【推荐】一个基于 SpringBoot 框架开发的 OA 办公自动化系统

如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍oasys是一个基于springboot框架开发的OA办公自动化系统,旨在提高组织的日常运作和管理...

自动化实践之:从UI到接口,Playwright给你全包了!

作者:京东保险宋阳1背景在车险系统中,对接保司的数量众多。每当系统有新功能迭代后,基本上各个保司的报价流程都需要进行回归测试。由于保司数量多,回归测试的场景也会变得重复而繁琐,给测试团队带来了巨大的...

销帮帮CRM移动端UI自动化测试实践:Playwright的落地与应用

实施背景销帮帮自2015年成立以来,移动端UI自动化测试的落地举步维艰,移动端的UI自动化测试一直以来都未取得良好的落地。然而移动互联网时代,怎样落地移动端的UI自动化测试以快速稳定进行移动端的端到端...

编写自动化框架不知道该如何记录日志吗?3个方法打包呈现给你。

目录结构1.loguru介绍1.1什么是日志?程序运行过程中,难免会遇到各种报错。如果这种报错是在本地发现的,你还可以进行debug。但是如果程序已经上线了,你就不能使用debug方式了...

聊聊Python自动化脚本部署服务器全流程(详细)

来源:AirPython作者:星安果1.前言大家好,我是安果!日常编写的Python自动化程序,如果在本地运行稳定后,就可以考虑将它部署到服务器,结合定时任务完全解放双手但是,由于自动化程序与平...

「干货分享」推荐5个可以让你事半功倍的Python自动化脚本

作者:俊欣来源:关于数据分析与可视化相信大家都听说自动化流水线、自动化办公等专业术语,在尽量少的人工干预的情况下,机器就可以根据固定的程序指令来完成任务,大大提高了工作效率。今天小编来为大家介绍几个P...

取消回复欢迎 发表评论: