范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

京东APPOpenHarmony化的跨端开发探索

  背景
  2022.7.27日,在《开放原子全球开源峰会》-OpenHarmony分论坛上,京东作为分享嘉宾,为大家带来了精彩的分享。京东积极拥抱 OpenHarmony,并参与 OpenHarmony 应用生态建设,分享中介绍了京东App适配 OpenHarmony 的探索,重点呈现了京东跨平台方案Aotu Taro 和 JD MCube 在 OpenHarmony 上的实践。
  其中Aotu Taro 框架是业界领先的跨端跨框架解决方案,并在 OpenHarmony 开源项目组主导成立了 CrossPlatformUI-SIG,通过Aotu Taro 可以很便捷地开发、调试、发布鸿蒙及 OpenHarmony 应用,帮助开发人员快速构建鸿蒙及 OpenHarmony 应用。
  JD MCube 框架是京东自研的原生动态化框架,覆盖了京东app黄金流程业务,并赋能集团其他app,目前正在联合京东集团内部力量进行共建,暂未对外开源。  精彩回顾
  京东App技术架构总监盖旭天为大家现场讲解京东App适配复杂度和在OpenHarmony平台的适配进展
  由于论坛上分享时间有限,很多细节无法展现,Aotu Taro目前是开源项目,欢迎大家到社区参与共建。应众多听众要求,这篇文章会细致地向大家介绍 暂未开源的JD MCube 框架在 OpenHarmony 的适配进展。  01京东App 适配现状分析
  我们对京东App 适配OpenHarmony 系统,从业务角度和技术栈角度进行了分析。  1.1 业务多样性
  目前京东App年度活跃用户5.8亿+,且90%以上都是通过客户端下单。京东App作为京东的主应用,承接了京东集团内各个BGBU的业务需求,业务形态众多,需求迭代频繁,每个迭代版本承接业务方需求3000+,对应的研发团队规模上千人,分布在北京、上海、深圳、成都、南京等职场。在功能上,涵盖用户可见的复杂业务和用户不可见的底层能力以及支撑App的周边生态。
  综合来看,京东App适配 OpenHarmony 涉及的团队和业务都非常多,适配难度也非常大。  1.2 技术栈多样性
  我们看一下京东App内所用到的技术栈。京东App内用到的技术栈也很多,主要包括原生、H5&小程序、跨端,占比分别是55%、40%、5%(其中RN、Flutter 占比较少,所以不展开介绍)。
  在占比较多的原生、小程序、H5这部分,从代码量看,原生代码行数已经达到了千万级,H5与小程序在App内代码行数百万级,所以通过重写代码来适配 OpenHarmony 几乎不可能短期完成。
  目前在原生开发方式上,我们自研的JD MCube 原生动态化框架在业务中覆盖占比近50%,而且后续我们也会持续提高JD MCube 的占比;H5 & 小程序 目前主要是使用我们的 Aotu Taro 框架开发。分析看来,通过将JD MCube&Aotu Taro 适配到 OpenHarmony 可以极大降低整个App的适配工作量。  02JD MCube 动态化框架简介JD MCube 全景图
  简单来说,JD MCube 使用统一的一套 DSL 来描述UI和事件,在各个平台上进行解析并映射成各平台的UI控件,最终渲染展示。具体可以参考我们之前发布的文章 京东App MCube动态化实践 。  03JD MCube 适配 OH 探索
  我们期望通过JD MCube 适配 OpenHarmony,为京东集团内应用快速迁移 OpenHarmony 平台提供解决方案。  3.1 技术方案对比‘
  在进行适配之前,我们先回顾下现有的 OpenHarmony UI 框架,现有的 UI 框架分为两类:类 Web UI 范式和声明式 UI 范式。(Java UI 后续不再更新维护,所以不再介绍)。
  类Web UI 开发方式主要使用 HML + JS + CSS来搭建UI页面和处理相关逻辑;声明式 UI 开发方式基于扩展的 TS 语言(Ets)来开发,开发方式更类似 Flutter,通过改变数据来改变 UI 状态。
  接着我们和 OpenHarmony 技术专家基于我们的MCube实现原理进行了技术交流,他们提供了额外的选择,利用更为底层的UI框架,使用C++相关API来完成UI的创建,再通过ETS的XComponent组件完成渲染。我们分别分析了使用这三种不同方案,应该怎么落地。
  1. 类Web UI:使用此方案,需要 OpenHarmony 提供Dom Api,类似于React 的JSX,用于动态的创建和更新View,当数据改变需要更新View属性时,需要开发者自己实现一套Diff机制来实现增量更新。
  2. 声明式UI:使用此方案,需要 OpenHarmony 提供相关的 Ets 命令式API,用于动态的创建和更新View,当数据改变需要更新View属性时,仍可以基于现有的状态管理机制做到View的自动更新,开发者不需要额外处理。
  3. C++ API:使用此方案,由于目前这一层面的API还没有对开发者暴露,需要 OpenHarmony 提供相应的开发环境,在View更新上,需要由开发者来实现状态管理。并且由于该方案使用了较为底层的API, OpenHarmony 的技术专家担心会对App及系统造成不稳定,不太建议该方案。
  基于以上的分析,我们综合对比了开发友好性、组件丰富度、UI 更新方式、以及 OpenHarmony 技术专家的建议,最终选择使用声明式UI 开发方式作为实施方案。
  3.2 落地情况及阶段性成果
  通过和 OpenHarmony 技术专家紧密配合,在临时提供的SDK上,我们使用Ets命令式API,完成了JD MCube 模板解析 -> 数据绑定 -> 视图映射 ->渲染流程,同时实现了通过修改数据源驱动视图更新的逻辑。主要流程如下图:
  关键步骤详解:1、外层容器(Column)
  首先创建一个容器,这里我们是用的 Column 组件,将模板文件解析命令发送至worker线程,在worker线程内解析模板文件并生成ViewNode Tree后,回调至主线程中。数据更新后,触发容器的build,内部解析ViewNode Tree。
  2、解析ViewNode -> View
  每个ViewNode的名字对应一个视图解析器,用于创建对应View和解析相关属性。
  ViewNode Tree 的解析入口,会递归解析ViewNode Tree,并会根据缓存来判断是要创建一个View还是更新已有View的属性。
  创建View,其实是先构建了一个Row组件,内部调用解析方法,将构建出来的View添加到该Row组件上,同时也被添加到了最外层的Column上。
  3、创建更新View,属性赋值
  以 FlexboxLayout 和 TextView 解析器为例,通过命令式API,创建出对应Flex和Text组件并对其设置相应的属性。这里需要注意的是,创建和更新的场景相应的代码是一致的,其区别只是有没有被添加到外层容器上。
  效果
  我们将xml模板文件+JSON数据通过上述流程之后,最终运行到了开发版上之后,渲染出了一个列表条目。
  目前我们在 OpenHarmony 平台上,已通过Demo验证了 JDMCube 框架适配 OpenHarmony 平台的可行性。后续仍有很多工作要做,在和 AndroidiOS 平台功能对齐上,我们的自研表达式解析引擎、二进制编解码、事件处理、模板管理、生命周期监听等等仍需要改造适配至 OpenHarmony 平台。在性能优化方面,模板文件的解析效率、使用命令式API创建和更新视图的效率也是我们发力的重点。  3.3 后续规划
  大型APP适配 OpenHarmony 是北向应用生态面临的重要课题。在技术上,京东将持续推进自研原生动态化框架JDMCube和跨端跨框架解决方案Aotu Taro适配 OpenHarmony 的进展,未来目标是作为应用低成本适配 OpenHarmony 平台的技术方案,以助力行业发展与 OpenHarmony 应用生态繁荣。

凯特王妃精致到骨子里!穿高跟鞋踢足球不怕摔着,难得活泼超可爱最近这段时间,凯特王妃跟威廉王子可以说是忙个不停,经常去参加一些公开活动,作为王室的门面代表,这对夫妻只要亮相在公众面前,永远都是那么端庄得体,尤其是凯特王妃,不管是身穿干练飒爽的这是我见过最真实的胯宽博主,用极简风演绎高级感,大方实用的美胯宽问题成为了许多女生穿衣搭配时的绊脚石,一些太过紧身的单品,不仅把胯宽问题暴露无遗,而且还会显得整个人十分壮硕,没有任何娇小感可言。即使我们拥有胯宽问题,也不必感到自卑和烦恼,不记者李可病情属于动脉栓塞,近期将返回英国做第三次手术直播吧6月24日讯近日,国安归化球员李可的伤势情况得到了球迷的关注。据记者袁野消息,李可伤情属于动脉栓塞,近期将返回英国进行第三次手术。去年赛季中期,李可因伤病退出国足集训名单,此从体操冠军到备受争议,桑兰到底是满腹委屈还是满嘴谎言?1993年,12岁的桑兰入选国家队,她天赋高,外形佳,多次赢得全国体操锦标赛全运会的女子体操金牌。1998年桑兰参加在美国举办的第四届友好运动会,赛前练习跳马,因失误桑兰出现意外,巴西甲巴西国际VS科里蒂巴,科里蒂巴客场终取一胜?弗鲁米嫩塞小胜没问题,倒是帕尔梅拉斯,太信他们的状态了,神经刀的进球模式,以后还得斟酌。今天依旧是小菜,浅看一下巴西甲,巴西国际VS科里蒂巴,另外一场美职足也有看,依旧是汇总在老地山东泰山再添强援,巴西神锋有望加盟球队,3大中锋组合指日可待北京时间6月24日,期待半年之久的中超联赛第5轮打完,强队终于找到了一些状态,不再继续迷失了。山东泰山上海申花和武汉三镇都表现出了过人的实力,目前排名联赛前三。作为卫冕冠军山东泰山首届WTT冠军赛参赛名单公布!马龙陈梦领衔出战北京时间6月24日,WTT世界乒联官方公布了消息,首届WTT冠军赛(欧洲夏季系列赛)将于7月18日至23日在匈牙利首都布达佩斯举行。目前参赛名单已确认,奥运冠军马龙陈梦将领衔出战。不输公牛王朝!勇士过去8年季后赛93胜34负,胜率高达73本赛季夺冠之后,勇士又延续了他们的王朝,并且足以和著名的公牛王朝相提并论。虽然勇士比公牛王朝少了两个总冠军,但在很多父母,勇士王朝和公牛王朝都很像,很多数据也都很接近。首先,勇士王李盈莹天赋意识团结拼搏精神俱佳,脚下移动亟待加强郎平指导打造的中国女排主攻线,婷宝莹三叉戟威震天下。东京奥运赛场洒泪告别郎导,宝莹二姝梨花带雨,最是情真意切。纵是冷血男儿,也看得心酸。进入新的奥运周期,婷宝高挂免战牌,李盈莹单剑WTT冠军赛名单公布,樊振东意外落选,马龙陈梦领衔8大主力出战北京时间6月24日,中国国乒正在威海南海备战7月份的三项重要赛事,在7月份开始国乒正式进入到出征模式,将会在布达佩斯先后迎来WTT支线赛球星挑战赛以及冠军赛,这三项赛事中,前两项大摊牌了!第1外援归队计划曝光,打乱中超争冠格局,莱科终于等到北京时间6月24日,中超联赛第六轮全面开打,对于生在大连赛区的上海海港来说,他们相比于其他两个赛区休息的时间多了好几天,对他们的备战肯定是有很大的帮助。另外,按照上海媒体的说法,他
(科技)新研究分析解释地球之水哪里来新华社北京4月14日电美国研究人员参考太阳系外行星的资料分析发现,地球上的水可能是原始大气里的氢气与地表的炽热熔岩相互作用产生的。研究人员说,这一过程足以解释地球为什么拥有如此之多张智霖被曝夜店玩得花,陈小春夫妻躺枪遭怀疑,大湾区哥哥故事多近日,一条关于某颜霸女明星与男神级艺人夫妻俩貌合神离的爆料引发了网友的热议,经过一番推理,网友们基本确定当事人就是张智霖和袁咏仪。而就在这时,张智霖又被曝光了一段夜店视频,视频中他宁静的胸许睛的臀巩俐的眼,让我看到了中年女星的性张力在阅读此文之前,麻烦您点击一下关注,既方便您进行讨论和分享,又能给您带来更多的参与感,感谢您的支持。文福星徕编辑福星徕所谓美艳不可方物的美女往往都有他们独特的优点,并且这个优点让人出道18年,39岁的李宇春没什么作品,为什么总能站C位?麻烦看官老爷们右上角点击一下关注,既方便您进行讨论和分享,又能给您带来不一样的参与感,感谢您的支持!文龙跃谭编辑龙跃谭前言范思哲官宣最新代言人,李宇春却被骂上了风口浪尖,因为品牌方气晕海归博士后,张绍刚职业生涯遭遇滑铁卢,撒贝宁当众怒怼!撒贝宁怒气冲冲的一番话揭露了张绍刚被雪藏4年的真实原因张绍刚究竟做了什么才能让北大才子撒贝宁在节目中公开怒怼并且揭露对方的真面目原来在张绍刚主持的求职类节目中曾经来了一位名字叫郭杰好事占了坏事做绝张继科事件再次暴雷,真是应了那句老话,破鼓任人槌,墙倒众人推!拍隐私视频照片,这是程冠希之流干的勾当,没想到我们的世界冠军青出于蓝。有这长远眼光其用心真可谓险恶呀!都说防道防火防小共价键共价晶体在人类所利用的物质中,无论是自然界存在的,还是人工合成的,大多数是含有共价键(covalentbond)的物质。生命活动不可缺少的物质(如氧气水糖类蛋白质维生素等),各种性能优异的价格战下3月销售谁家强?微型车下滑,埃安跻身新能源前三国内乘用车一季度销量数据正式出炉。今年前三个月,市场行情呈现山峰状走势。在经历1月份春节提前的低谷,以及2月份回暖之后,本应进一步呈现上升态势的3月份,却因为一场价格战引发整个市场iPhone14价格下跌太快!苹果也翻车,小米11系列会成为钉子户在过去,很多人认为苹果的保值率最高,远超过安卓阵营的竞品。然而,苹果推出的iPhone14系列打破了这个神话。这一系列的手机配置外观和价格都没有太大优势,因此价格一再下跌。最新消息不顾拜登威逼利诱,马斯克坚决加仓中国!背后或有高人智谷趋势Pro(IDzgtrendPlus)饶司机库克人来了,心似乎在印度。离开中国后,库克下周就会去印度。虽然中国仍是苹果的重要伙伴,但果链却要加速向印度迁移。马斯克人还没来,但xxljob介绍与使用序言对于实现定时任务功能,有很多实现方案,下面是比较常见的实现方式springboot注解(EnableScheduling)ScheduledExecutorServiceEla