讲师介绍

郝仁杰,高德地图无线开发专家。在7月13日落幕的2019年ArchSummit峰会上就高德地图近几年的App架构演化和实践进行了分享。

背景概述

高德是国内领先的数字地图内容、导航和位置服务解决方案提供商,端上分手机和车机两条主线。近年来,高德业务迅猛发展,人员规模急速扩张,代码量急剧膨胀,如何提高团队高效并行作战的能力,端架构在一致性和动态性方面做了很多尝试:从最初的双端原生单体架构,到地图引擎下沉C++,再到动态UI框架的建设,收到了一定的成效,但面对业务持续的高速发展,依然还有很多方面需要继续完善。

为了让业务开发有节奏的进行,项目上每年会制定一些公车计划。公车就是每个App版本,货物就是对应的产品功能,货物组装就是功能开发,公车计划即每年的发版计划,公车按照指定的时间来,把组装好的货物拉走。但由于双端代码差异较大、耦合严重、复用率低、职责不清晰、平台工具简陋等问题,公车并无法按照计划拉走货物,货物组装慢且质量差,迫使公车等待,导致整个版效周期长达3个月,崩溃率也高达万分之八,公车变成了伪公车。

执行方案

为了使伪公车变为真公车,需要解决双端差异问题、代码耦合问题和平台工具落后等问题,来提高稳定性、并行性和高效性。2018年端上通过双端融合、组件化和研发中台建设来达到目标。

双端融合采用下沉C++、上漂动态UI和双端拉齐的方式来实现。下沉C++,实现了跨端的同时提高了性能;上漂动态UI同样实现了跨平台,且降低了开发门槛,让开发更简单,效率更高,同时也为未来动态化做好铺垫;双端拉齐更多的是借鉴双端的优势做到融合,同时保留双端的差异作为扩展,做到尽量保持一致的同时,也很好地兼容了Android/iOS平台的特性。

组件化参考了手淘Atlas、BeeHive和网易LDBusMediator等成熟的容器方案并融合了高德自身的业务特点和设计思考,定义了容器、模块、微应用、微服务和页面路由。借鉴了Android组件化设计思想,让业务专注于自身需要的服务,而无需关注其它。

通过架构的分层、分组,让模块的归属、职责清晰化。

容器为模块提供了其内部的结构框架、架构分层、分组让模块找到自己的位置,二者结合实现了端上的组件化,解耦了代码、提高了功能的复用率,也为业务并行开发打下基础。

研发中台建设根据当前的公车流程,结合组件化方案进行细分,制定了新的产、研、测、项详细流程,并将流程中台化,降低了风险、提高了效率、实现了研发并行。

实践收益

双端融合,解决一致性问题,提高了App的稳定性;组件化,解决代码耦合、提高复用率;研发中台建设,将流程自动化、标准化,同时结合组件化,实现了开发阶段的并行,做到了真公车。发版周期缩短了一半。

通过针对性代码质量治理,加以平台管控,使得崩溃率从万分之八降低到十万分之八。

通过工具升级、组件化后基于产物的集成,打包时间从40mins+降低到8mins。

未来展望

2018年,高德客户端通过一系列架构治理,从伪公车变成了真公车,但这只是近几年架构演进的一个阶段性成果。未来,我们要发挥动态UI的优势,让业务真正动态化起来,从公车时代跨入到Feature Team时代,让公车变成一条条公路,每个Feature Team就是一个小汽车,按照自己的节奏装好货物后,就可以在修好的公路上自由的行驶,更好地做到灵活、并行和高效!

结语

欢迎大家扫描高德技术公众号关注更多高德技术及细节,也欢迎大家加入高德,与我们一同探索高德地图App架构的演化之路!

原文链接
本文为云栖社区原创内容,未经允许不得转载。

ArchSummit分享 | 高德地图App架构演化与实践相关推荐

  1. 如何实现在H5里调起高德地图APP?(下)

    这一篇文章将告诉您,如果直接打开高德地图APP,并展示路线规划.适合有定位的移动设备,可以查询到从"我的位置"到目的地的路径规划,并直接导航. 场景二.调起高德地图的路线规划功能 ...

  2. 百度高德位置定位服务器,调用百度、高德地图App,百度地图网页版,App定位

    1.首先判断是否安装了目标地图App //判断是否安装目标应用 public static boolean isInstallByread(String packageName) { return n ...

  3. 高德地图哪个语音包最好_高德地图app怎么录制语音包?高德地图将自己的语音用作导航语音包的方法介绍...

    高德地图是一款中国专业的手机地图,拥有全面的地点信息,特色语音导航.智能路线规划,是我们常用的一款移动地图导航工具,用高德地图语音导航,可以听到很多明星的导航语音播报,当然你也可以自己录制语音包.那么 ...

  4. H5页面中调起高德地图app,如果未安装应用,则提示用户安装

    一.需求: 在之前做的项目中,有个需求是,点击"去这里"的按钮,会调起高德地图app,并导航至目的地,如果用户未安装高德地图app,则提示用户需先下载 二.代码部分 1.获取目标地 ...

  5. 前端调用高德地图app、百度地图app

    前端调用高德地图app.百度地图app 说明:这里只说明了前端如何调用app地图,没有代码,测试机上高德地图.百度地图.腾讯地图,都已经安装好了,如果没有安装,调起app地图会没有反应,至于如何验证手 ...

  6. 如何实现在H5里调起高德地图APP

    这一篇文章将告诉您,如果直接打开高德地图APP,并展示路线规划.适合有定位的移动设备,可以查询到从"我的位置"到目的地的路径规划,并直接导航. 场景二.调起高德地图的路线规划功能 ...

  7. H5页面调起高德地图APP/百度地图APP

    直接通过链接跳转即可唤起高德地图APP或者百度地图APP,示例如下: var s = startAddressInfo;//起点地址信息var e = endAddressInfo;//终点地址信息i ...

  8. Android调用高德地图app语音导航

    直接调用高德地图app进行导航 首先,要先进入高德开放平台,注册登录以后,创建自己的APP,然后会生成appkey 高德开放平台网址: http://lbs.amap.com/ 然后下载jar包导入项 ...

  9. HTML5唤起高德地图APP示例

    一.高德地图唤起链接 高德地图APP唤起链接(ios): iosamap://path?sourceApplication=&slat=&slon=&sname=&dl ...

最新文章

  1. Javapinyin4J实现中文名转拼音
  2. 【Java源码分析】Android-LruCache源码分析
  3. lucene底层数据结构——底层filter bitset原理,时间序列数据压缩将同一时间数据压缩为一行...
  4. SetTimer和KillTimer详解
  5. HBase 在人工智能场景的使用
  6. ajax跨域请求的问题
  7. 如何设计安全的用户登录功能
  8. UML类图与类间六种关系表示
  9. 腾讯云ubuntu18安装图形化界面
  10. Github | 如何用神经网络识别系外行星?
  11. 单实例数据库迁移到rac环境(四)下
  12. python导入类有红线_解决Python中导入自己写的类,被划红线,但不影响执行的问题...
  13. nagios介绍及Server安装(三)
  14. oracle-jde操作界面,JDE项目系统基础培训.ppt
  15. 基于Sentinel-2(哨兵2)遥感卫星的植被覆盖度提取
  16. Adaptive Supply Chain: Demand–Supply Synchronization Using Deep Reinforcement Learning翻译
  17. html 消息滚动,以HTML实现消息滚动
  18. Cesium中使用Sampler3D,3D纹理,实现体渲染
  19. 可达性分析算法-针对的对象
  20. 朴素贝叶斯分类算法--终极奥义

热门文章

  1. windows。forms.timer设置第一次不等待_面试官:换人!他连 TCP 这几个参数都不懂(一)...
  2. python如何输入多行数据合并_python 实现将txt文件多行合并为一行并将中间的空格去掉方法...
  3. python 线程退出_python线程退出
  4. android fragment 管理器,Android Fragment 與 Fragment管理器
  5. 下列不属于PHP开发优势的是,php开发的优势有哪些?
  6. 怎么创建数据表的实体类和业务类_微服务项目第13天:商品分类业务的实现
  7. mysql odbc.ini_关于unixodbc中odbc.ini和odbcinst.ini的介绍
  8. python 知乎 合并 pdf_一键下载:将知乎专栏导出成电子书
  9. 从中师到博士,我的22年...
  10. 【福利赠书】命题专家点评中国研究生数学建模之现状