《同程的鸿蒙化:在 App 架构设计及组件平台化的最佳实践-俞锦星.pdf》由会员分享,可在线阅读,更多相关《同程的鸿蒙化:在 App 架构设计及组件平台化的最佳实践-俞锦星.pdf(55页珍藏版)》请在三个皮匠报告上搜索。
1、同程旅行:鸿蒙App架构设计及组件平台化的最佳实践同程旅行移动端首席架构师/俞锦星同程旅行移动端首席架构师俞锦星同程旅行App鸿蒙化负责人鸿蒙App架构设计初识鸿蒙工程同程旅行鸿蒙化初识鸿蒙工程初识鸿蒙工程工程结构编译构建构建产物模块定义工程结构应用的全局配置信息应用级编译构建配置模块配置信息代码资源模块级编译构建配置依赖包编译构建工具hvigorhvigor-ohos-plugin任务管理任务注册编排工程模型管理配置管理APP规范检查依赖检查依赖管理模板代码生成动态参数配置构建产物主模块同一设备唯一应用入口界面、入口图标、主特性功能动态特性模块0个、1个、多个特性功能,可按需下载构建产物HA
2、RHSPHarmony Archive,静态共享包HAR可以实现多个模块和多个工程共享ArkUI组件、资源等相关代码。HAR中的代码和资源跟随使用方编译,如果有多个使用方,它们的编译产物中会存在多份相同拷贝。Harmony Shared Package,动态共享包应用内HSP只能被应用内部其他HAP/HSP使用,应用间HSP暂不支持。HSP中的代码和资源可以独立编译,运行时在一个进程中代码也只会存在一份。EntryFeatureHARHSP模块定义同程旅行鸿蒙化工程架构系统能力构建工具基础组件公共业务项目公共组件组件(业务)多开发分散开发模式选型HAPHSPHARHAR是静态共享包可以实现多模
3、块、多工程共享组件、资源。HAR不支持pages页面如果有多个使用方,编译产物中会存在多份相同拷贝。HSP是动态共享包编译产物只存在一份。HSP不支持上传私仓HAPHAR1HAR2HAR3鸿蒙组件平台化实践组件化组件化平台Exodia设计平台化价值组件化将一个App按照关注点分离拆分成多个独立的组件或模块每个组件都是一个独立的单元,具有清晰定义的接口和职责发布的时候,所有组件以产物的形式被主App工程依赖并打包成一个最终上架的产物组件化-定义组件化-思考组件化-依赖组件化平台Exodia设计Exodia组件化平台艾克佐迪亚Exodia平台组件池组件化平台App配置(组装)组件化平台组件-创建组
4、件-发布组件管理组件详情依赖关系组件管理组件管理HAR 入仓App配置组件的最终版本?组件升级稳定性?App配置App配置稳定、确定更多?App开发组件模式源码调试模式可监控可校验可扩展提升编译速度提升开发效率App构建平台功能代码静态检查、静态分析产物构建、检测、分析,体检报告等企微(机器人)/邮件关键信息通知平台价值统一规范统一配置统一管理提升效率路由在同程鸿蒙化中的设计与实践路由介绍路由设计思路路由使用什么是路由路由是什么路由模块是一个具有收口、分发思想的、用于处理模块(项目)间直接依赖、调用的模型。最直接的体现其实就是一个约定、一个规则,按照约定、规则进行解析,而后分发。路由设计思路现
5、有问题在鸿蒙上,路由如何支持各个项目部门的现有业务逻辑?1.兼容现有的路由规则(字符串传递意图)2.鸿蒙独有的配置方式,达到最终效果一致在 iOS,Android,鸿蒙各平台上,系统提供的路由组件各不相同,如何抹平差异?路由的形式tctclient:/project/module?key1=value1&key2=value2IntentParserRuleDispatcherActionActionAction拦截器设计作用:判断某个路由链接是否满足特定的条件。路由不关心拦截器的内部逻辑,由各个业务模块自己实现。分类:全局拦截器、动态拦截器。业务下线?黑名单机制、统一路由替换。需要登录?交给
6、路由统一处理,而不是各个业务模块单独调用登录页面处理。完整路由的形式IntentParserRuleInterceptorInterceptorInterceptorInterceptor QueueDispatcherActionConvert路由使用鸿蒙系统提供的能力NavigationNavigation 作为 app 的根容器组件来使用,容器里面嵌套需要跳转的目标页面。容器的页面显示模式:单页面模式 NavigationMode.Stack分栏模式 NavigationMode.Split自适应模式 Nav