告别加班 移动APP研发提速利器之EMAS跨平台解决方案

简介:

又到周末了,大家手头的工作完成的怎么样啦?还没有完成的继续加油鸭!想要告别加班,给大家推荐一个移动APP研发提速利器。本文根据2018杭州云栖大会移动研发平台EMAS专场,阿里巴巴产品专家言沛的主题演讲《移动APP研发提速利器之EMAS跨平台解决方案》整理成文。

4cc53374aa5106986d299f47acd522289ca6427f

在座各位应该都是移动APP研发负责人,大家平常工作中最关心的一点是研发成本。就像我之前在群里看见有人提问说开发一个手机淘宝首页大概要多少钱,计算钱这个问题有点复杂,会受你聘请的程序员工资多高的影响,所以我把这个问题改一下,改成开发一个手机淘宝的首页大概要多少工时,大家来猜一下?我结合自身的经验和请教了相关同事,如果只是做视觉还原的工作,大概也需要五天。

那有没有再快一点的办法,来实现页面的开发?大家第一个想到的应该是H5的方案。没错,因为H5方案开发一次可以在多端投放。而且由于它技术框架的原因,单端开发速度也比APP快。我问过专业的H5前端工程师,他说开发一个手淘首页只要1.5天。

但是,我们知道业务方对移动APP的研发诉求不仅仅是快,而是著名的“既要、又要、还要”,就是既要迭代快,又要性能好,还要用户体验顺畅。H5方案可以满足第一点的需求,但是它有它无法回避的劣势。举例来说对内存的控制比较差,当一个列表比较长的时候会占用比较多的内存。第二是页面的流畅性比较差,直观的感受就是你的手指在屏幕上快速来回滑动的时候,屏幕响应速度慢,技术上来说就是帧率低。第三是动画流畅性,特别是大区块中,做动画会有卡顿的感觉。有没有一个办法既能保持H5的优点,又能克服那些缺点?答案是有的,那就是Weex。

1dea76a85f209f18f5fb8b35517d52365df8cc38

我介绍一下Weex的原理。Weex可以把前端编写的代码编译成JS Bundle,通过服务器下放到手机,最关键的是在iOS或者安卓环境下是采用Native渲染。如果用Weex实现手淘首页,大概也需要1.5天的样子。大家可以用手机淘宝扫一下屏幕上的二维码,体验一下用Weex简单拷贝的手淘首页。

3d85b12ccc6fde5b77482e63450e5b4dadd62418

传统移动APP开发的时候其实还有一个痛点,就是版本迭代的问题。因为APP的迭代和更新是依赖用户来不来更新,很难保证用户都愿意及时更新你最新的版本,所以造成线下版本碎片化比较严重。Weex天生支持动态更新,可以随时发版,可以保障每次打开都是最新的版本。

刚才介绍了Weex各种优点,到底有哪些APP使用了Weex的技术?我相信这也是大家比较关心的。

首先,Weex诞生于手机淘宝。在这里分享一个小花絮,就是Weex技术在手淘落地的第一个场景是什么,落地的第一个场景就是“双十一”的会场列表,就是一堆全是商品的列表页。我们这个技术一上来就用在“双十一”的场景上,说明我们当时的开发对自己的技术非常有自信。

我们来看一下数据。双促会场从之前99%用Weex实现到最近100%用Weex实现;第二是行业导购,从之前小部分频道业务用Weex来实现也到现在的100%都用Weex来实现。行业导购业务包括有好货、买遍全球、每日好店等业务。如果大家熟悉淘宝,它们都是在手机首页上主推的频道业务。如果大家用过这些业务,会发现它们的体验做得非常棒,甚至你根本体会不出来它是否用Weex实现;第三是交易链路和基础业务,比如说店铺、淘宝、足迹等等,这些业务从之前完全没有用Weex来实现到现在大概有6个页面用Weex来实现。其实这些页面是非常底层、核心的业务,也可以用Weex来实现,没有任何问题。

64d302f6f54684b357e3dacabaa1b88f9897eb10

除了手机淘宝之外,阿里还有很多其他的APP也用Weex实现,我在这里截取一部分APP的LOGO,大家可以发现大家平常在用的比较多的阿里集团的APP都基本上采用Weex的技术。我在这里想简单介绍一下飞猪。

飞猪有它自己的独立客户端,在手淘里面也有一个比较重要的入口,它的要求都已经不仅仅是跨端了,而是到了一个跨APP投放的需求。飞猪在之前的时候也是用H5来实现的,为了提高用户体验,所以他们针对H5的方案也做了非常多的优化。但是Weex的技术推出之后,飞猪同学体验到Weex的技术优势之后全面拥抱了Weex的技术,把之前H5页面纷纷转向Weex来实现。现在在飞猪业务里面,几乎已经很难找到用H5实现的页面。在这个过程中,他们也做了很多的技术沉淀,比如说Weex UI开源组件就是由他们的团队负责的。

Weex不仅仅是阿里巴巴的Weex,它也是apache上的开源项目。我这里截取apache项目里面的一些基础数据,包括star、fork、contributors。其实Weex这个项目做过一次代码迁移,从阿里巴巴的仓库迁到apache项目上,所以如果把这两个项目的数据加起来,肯定会比这个更多一些。同时,Weex也是阿里巴巴所有开源项目里面Star数最多的开源项目。

866d57c9054f273c1778cf3df030ab0c39ebd91a

既然是开源的Weex,那么除了阿里巴巴集团之外,业界又有不少APP用了Weex的技术。这些APP都是在我们的Weex官网上自主提交的信息,我这里截取了一小部分。我觉得使用了Weex而没有提交的APP,可能也不在少数。

c9aaa49e3799c628055c2d9d11ce7271c4cffdcd

刚刚讲了各种Weex的优势,这么牛,有人想问Weex到底还有什么不足之处?就像人无完人,Weex也有一点点不足的地方。Weex支持的样式和语法是满足W3C标准,但是并不是所有的W3C标准都支持,所以这就有学习成本。以我自己为例,从小白开始学习到上手简单的页面开发,大概需要花我7天的时间。但是7天之后,就可以体验全新的移动APP研发模式。

当你学会了 Weex 这个技术,也想用Weex开发自己的APP的时候,你会怎么做?如果按照Weex的官网教程下来,可以构建出你的APP,但这可能会花费比较长一点的时间。而且我们知道生产环境下对一个APP的研发要求,不仅仅是在你本地的电脑上构建一个包就可以了,所以针对这种场景的完整解决方案,我们的EMAS跨平台产品就此诞生。

a44ac0369ea615b744f31e7c23bd19fb510e834a

EMAS跨平台产品矩阵大概包括开发者社区、IDE、商业组件、DevOps,应该说覆盖了从研发、调试、测试、发布、运维完整的生命周期的管理需求。

我们首先看一下开发者社区。做过研发的都知道如果我们要学习掌握一门新的技术,仅仅是文档还是不够的,最好是能看到一些前人的经验总结以及丰富的生动的demo供我参考。所以我们在Weex官网基础上补充了它所不具备的东西,主要目的是帮大家降低学习Weex的成本。开发者社区,有后续取代现在官网的计划。

9b9b021ad8180ef9bc5b4e484b5ac407b5776758

然后是EMAS studio,这是我们推出的第二代Weex IDE,基于VisualStudio Code定制开发,在这里你可以完成新建项目、编码、调试、预览等等,所有的功能都在IDE里面完成,就不需要IDE和浏览器之间来回切换。特别是调试功能,通过手机扫IDE里面的二维码建立debug服务,可进行单步调试,对定位端上遇到的问题是非常有帮助的。

当我用了专业的开发者工具,以我的经验来看还有一个点比较影响我开发业务的时间,那就是有没有组件可以供我使用。Weex内置组件以及Weex UI开源组件可以满足常规业务的开发,但深入到有行业特征属性的时候,比如说手势密码或者是雷达图等就有所缺失了。所以我们把一些具有行业特征属性的组件封装在一起供商业客户使用,帮助大家提高用Weex实现业务的效率。

df79d315b8624b599e5a42ebbb389926379e2600

刚才提到了社区、IDE、组件,都是为了帮我们快速用Weex实现自己的业务,但我们最终想要拿到的是什么?可不仅仅是一个Weex的代码或者是Js Bundle,而是一个稳健的实实在在的APP。跨平台DevOps就可以实现这个工作,在这里可以实现DEMO生成、云构建、灰度发布、正式发布、测试等都可以在DevOps上完成。

c6656ab098118a0c64455e539924bcdb21254c38

如果从功能点上划分,大概可以分成四点:业务管理、代码监控、产品发布和监控运维,每一项又包含很多的小点,我列在PPT上了,不一一展开念。我想具体解读几个亮点。首先是我们建议业务按照合理的逻辑进行拆分,按模块管理来降低业务之间的耦合度;第二,利用云构建能力,对APP进行持续交付;第三,利用我们所提供的预加载能力,可以把资源提前加载到手机里,提高页面秒开率,提高用户体验;第四,通过后台监控平台来看APP运行状况,做到对代码质量心中有数。

00d1d3557076cf34e7053841ddb85a5b109748e8

前面提到了这四个产品,如何把它们串联起来来完成APP的研发?为了给大家一个更加直观的感受,我画了这张图。图里面绿色代表了研发流程,蓝色代表了我们所提供的产品。总结来看,EMAS Studio、开发者社区和组件都是围绕在Weex端,帮助大家更快用Weex实现自己的业务。在native层我们可以参考devops上生成的DEMO工程,稍微修改下,就可以满足你自己的需求,这一块的开发工作量非常少,最后在DevOps上完成构建、发布。

刚才介绍了产品,我们再来讲一下有哪些客户使用了我们的跨平台产品。这里出于对客户隐私的保护,不具体讲哪个APP。可以看到覆盖餐饮、交通、金融、能源、地产和教育行业等,行业的覆盖度还是比较广。有一个新零售的客户要对他的超级APP进行重新开发,大概包含了零售的业务提供、互动、短视频、社交等等很多的功能。他们最后技术选型采用Weex去实现,再配合跨平台提供的能力,大概一共用了6个开发,花了大概三个月的时间,完成了120多个复杂页面的开发。而这时间不仅仅是开发,从学习开始一直到发布。另外,因为Weex所做的页面也可以以H5的方式打开,所以他们顺便还做了公众号项目里面10来个页面的改造升级。

前面讲了很多Weex的优势和对weex开发的支持,那我们的跨平台仅仅是Weex吗?答案肯定是“不是”的。我们深谙行业里面还有很多业务是用H5来实现的,所以我们后续会推出兼容H5的方案,第二是最近比较流行的Flutter方案,我们也是在学习和研究之中。应该说对未来主要流行的跨平台的技术方案,我们都会保持密切的关注,在合适的时候推出相应的产品。

3分钟,了解阿里巴巴企业移动研发平台EMAS:

956bda05039fb134dfdad61d618d2d228c8b3466



原文发布时间为:2018-10-26
本文作者:码先森
本文来自云栖社区合作伙伴“ 淘宝技术”,了解相关信息可以关注“ 淘宝技术”。
相关文章
|
6月前
|
Web App开发 iOS开发
无法安装此app,因为无法验证其完整性 ,解决方案
无法安装此app,因为无法验证其完整性 ,解决方案
|
XML Java Android开发
Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案
Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案
1333 0
Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案
|
1月前
|
前端开发 Android开发 iOS开发
应用研发平台EMAS使用 aliyun-react-native-push 库接入推送和辅助通道,推送都可以收到,但是在App切到后台或者杀掉进程之后就收不到推送了,是需要配置什么吗?
【2月更文挑战第31天】应用研发平台EMAS使用 aliyun-react-native-push 库接入推送和辅助通道,推送都可以收到,但是在App切到后台或者杀掉进程之后就收不到推送了,是需要配置什么吗?
32 2
|
2月前
|
Web App开发 iOS开发
无法安装此 app, 因为无法验证其完整性 ,解决方案
无法安装此 app, 因为无法验证其完整性 ,解决方案
|
4月前
|
监控 数据可视化 安全
智慧化工地SaaS平台源码,PC端+APP端+智慧数据可视化大屏端,源码完全开源不封装,自主研发,支持二开,项目使用,微服务+Java++vue+mysql
智慧化工地SaaS平台源码,PC端+APP端+智慧数据可视化大屏端,源码完全开源不封装,自主研发,支持二开,项目使用,微服务+Java++vue+mysql
98 0
|
4月前
|
API 开发工具 iOS开发
在应用研发平台EMAS中,ios的推送有没有办法在app端设置在收到通知后是否展示的逻辑
在应用研发平台EMAS中,ios的推送有没有办法在app端设置在收到通知后是否展示的逻辑
33 1
|
8月前
|
Android开发
Android > Project with path ‘:audiovisualize‘ could not be found in project ‘:app‘. 异常解决方案
Android > Project with path ‘:audiovisualize‘ could not be found in project ‘:app‘. 异常解决方案
42 0
|
9月前
|
机器学习/深度学习 自然语言处理 小程序
阿里云EMAS-专家测试服务,提供项目兼容性测试,适合APP等项目测试
如何确定自己的APP等项目是否能在阿里云服务器上运行,是很多用户在购买阿里云产品完成业务上云之前比较关心的问题,为此,阿里云提供了EMAS-专家测试服务,一站式移动测试平台,用户只需提交测试需求,即可轻松体验高质量专家团队测试服务。
205 0
阿里云EMAS-专家测试服务,提供项目兼容性测试,适合APP等项目测试
【uni-app】使用外部组件不显示报错组件未找到解决方案
前言 大家好,今天和大家分享一下uni-app使用外部组件不显示报错的一个解决方案,希望能够帮助到大家。
|
9月前
|
搜索推荐 数据库连接 API
【uni-app】errMsg : navigateTo:fail can not navigateTo a tabbar page报错解决方案
前言 大家好,今天在进行uni-app项目开发时,在进行页面跳转的时候报了一个错误,一开始觉得只是个小报错就没有仔细看这个报错,直接就到页面检查看是不是跳转没写好,但是检查了后发现没有问题就以为是没有配置路由,但是全部都检查过后发现都没有问题,就去看了一下报错,看了一下报错就发现了问题所在,下面就来看看这个报错和解决方法吧。

热门文章

最新文章