查看原文
其他

没去现场?一文 Get 云栖大会「移动专场」精华内容~含PPT下载

淘系技术 淘系技术 2020-02-20

出品|阿里巴巴新零售淘系技术部


2019年9月27日,「杭州云栖大会-淘系技术嘉年华」移动端侧技术专场,在云栖小镇举办,现场爆满 200+开发者齐聚,共同进行了一次面对面的技术交流。


我们荣幸的邀请到 5 位技术大咖,为开发者们分享新鲜前沿的移动端技术深耕实践与创新探索,助力开发者打造自己的最佳应用。分享内容包含淘宝端智能演进和思考、Swift 5 时代的机遇与挑战、Flutter原理与闲鱼深度实践、业务开放与技术闭环:小程序架构设计与实践、What's New in Android Development 等众多全球前沿移动端话题!接下来让我们一起回顾本次大会的精彩瞬间~

福利一

关注「淘系技术」微信公众号,回复“大会”即可获得完整版 PPT 下载链接,赶快下载吧~

福利二

转发文章到朋友圈,集齐 30 个赞后,私信给小编,即可有机会获得「淘系技术」定制双肩背包(10月1日开奖)

精彩内容


随着来自阿里的资深技术专家兼金牌主持人——白衣 进行的开场介绍和暖场,活动正式开始。


阿里巴巴淘系技术部 资深技术专家 白衣

 01 、淘宝端智能演进和思考


阿里巴巴淘系技术部 资深技术专家 吕行

今天分享的内容主要包括三部分,第一是端智能整体趋势和淘宝应用现状,第二是淘宝在应用端智能过程中面临的问题和挑战以及我们的应对和解决思路,我们构建了端到端的完整技术体系,第三是开源推理引擎 MNN 的最新情况。



端智能已经成为淘宝的核心基础能力,并且集团也有 20+ 以上的 App 在使用端智能,单拿手淘来说,就有 10+ 以上场景,线上运行模型 25 个以上,每天机器学习和深度学习运行次数超过 500 亿次。特别像手淘里面的核心场景,搜索推荐也在利用端智能做实时用户意图识别,从而做更加精准的搜索推荐,在今年双十一中端智能也会有更大范围更多场景的应用。


我们先来看一下淘宝端智能的完整技术体系,这是我们的技术大图,主要有三部分组成:


  • 客户端引擎&框架:包括机器学习算法库,深度学习推理引擎 MNN,算法快速迭代的Pyton VM 容器,以及上层的算法能力集合和行业解决方案。 


  • 离线配套工具:包括模型转换,模型压缩工具,以及配套的性能测试,调试工具等。


  • 云端平台:包括模型转换和压缩服务,以及模型管理,部署,运维监控的各种系统。



我们 2017 年 10 月正式启动 MNN ,经历 2018 年双十一的洗礼,今年双十一有更大规模的应用。这里有几个关键数字,手淘每天 MNN 推理次数远大于 2 亿次,Crash 占比 <0.1% ,开源之后不完全统计业界应用 >20 个,累计修复 issue >260 。另外 MNN 依托手淘复杂的业务场景,以及业务对支持低端设备和低端系统的诉求,MNN 已经稳定支撑手淘端智能业务在几百款移动设备上规模化应用。可以说,MNN 是经过多场景海量计算验证的,它的稳定性和可靠性值得信赖的。

我们愿景是构建一个功能完善、性能极致、简单易用的端侧推理引擎 MNN,并能够在行业获得广泛使用,希望能有更多同学能够参与进来。

 02、Swift 5 时代的机遇与挑战

知名 iOS 开发者 NSHipster 中文译者 小鱼

今天主要跟大家讨论这样几个小问题,第一Swift 5代表着什么?第二 Swift 5 在社区中应用的情况跟我们真实开发环境中是什么样的过程和现状?第三是一个实际的问题,在实际开发中我们应该怎么面对 Swift 5 的决定性的因素?第四是基于上面讨论的三个话题的结果去看一下在新的时代有什么新的路线和新的大的发展方向值得我们去探索。


Swift 5 带来了什么?稳定的 ABI:5.1 版本后,我们可以用不同 Swift 支持的第三方框架编辑成同一个 APP,这是成熟语言的标志,只有这个才能让不同的框架和代码为你所用,在使用时也会减少大家的顾虑。


Swift 官方的 kanban ,我收集的数据有 11159 个,有 6474 个标记已被处理,我甚至每天看到官方的情况,大概 3 到 4 小时就会有官方来回复开发者告诉你们最新的 bug ,开发过程遇到什么问题也不用担心,官方态度是非常快速的去修复这些问题。


上图的数据是我从网上收集的数据,收集的数据的指标 Y 轴是快速的数量,蓝色的线是 Objective-C ,橙色的线头 Swift ,大概从 2016 年开始,Swift 的数据已经超过了 Y 轴数据,现在的有一种取而代之的快速发展趋势,这个说明社区中更多的开发者习惯把精力放在 Swift 的上面,而不是放在 Objective-C 上。



有人说我们这个是跨平台的,如果大家仔细观察右面形式的话,其实也是非常的像 Swift 5 的 DSL ,也像 SwiftUI DSL 一样,可以完成同样的语法的简便形式,这样大家要达成统一的时候,在双平台都可以用原生的语言去实现,而不在依赖 DSL 的翻译,整个研发和运行效率都会大大的提升,未来新的挑战和机遇是我们都用自己平台的语言而不是不依赖 JS 去解析。



   03、Flutter 原理与闲鱼深度实践


 Flutter 官方成员 阿里巴巴技术专家 正物


今天将主要为大家分享三方面,第一是 Flutter 的原理,第二我们在闲鱼里面怎么用Flutter,最后介绍我们在深度方面的一些探索。



Flutter 的高性能和优秀的跨端一致性是由它的设计决定的。在操作系统之上,Flutter 的设计分为三个层次,分别是平台相关的Embedder层,主要向上提供用于绘制的 Surface ,线程和事件循环机制。其上是 C++ 编写的 Engine ,这部分包括用于渲染的 Skia ,用于文本的 Text ,以及 Dart 。Engine 中的 Dart 包括了 Dart Runtime ,  GC , 在 Debug 模式下还包括了一个虚拟机。Engine 上面是面向开发者的 Dart 编写的 Flutter 框架,这部分包括了完整的 UI 库,其中包括针对 Android 的 Material Design 风格的 Widget ,针对 iOS 的 Cupertino 风格的 Widget 。Embedder 提供了一个平台相关的画布,供上层平台无关代码去绘制,这种形如使用游戏引擎的方式写应用的设计天然保证了 Flutter 的优秀的跨端一致性。


我们常用四个词去描述Flutter。美观,一方面 Flutter 提供了丰富的 Widget ,他的组合式 API 也使得开发者可以更灵活地创建自己的 Widget 。开发效率高 & 运行速度快, Dart 语言是为数不多的同时支持 JIT 和 AOT 的语言,开发期的 JIT 使得其支持了亚秒级的热重载特性,发布后的 AOT 模式使得其运行速度快。开放, Flutter 不仅代码开源,整个 Flutter 的工作流也完全遵循开源项目的工作流程。



要考虑 Flutter 在闲鱼中的实际业务落地,我们需要考虑几个阶段的问题。包括前期的调研去了解其是否易用、完备、健壮;研发时我们要考虑混合开发体系的问题,以及如何去连接生态,扩展 Flutter ,并最终在产品上落地。开发完之后,我们需要去解决线上质量的问题,这里主要考虑设备兼容性和稳定性。相关地,还有我们实践中遇到的问题以及如何去快速解决问题和背后的逻辑。



除了业务上的实践以外,我们对于 Flutter 的深度实践主要有四个方面的工作。针对 Engine 层面,我们主要需要解决 Android 碎片化带来的兼容稳定性的问题, iOS 上主要是图片视频相关的内存性能优化。在 Dart 层面,主要围绕着 Flutter 的中间表示 Dill(Dart Intermediate Language) 之上的一些工作,包括我们已经发布的 AOP 框架 AspectD ,已经我们正在进行中的 JSON ,反射等。在 Flutter 层面,我们也有一些上层的开发框架,包括性能测试用的APM,混合页面管理的 flutter_boost ,以及应用层开发框架 flutter_redux 。此外,我们还在做UI转代码的工作,这种情景下,输入是一张图片,通经布局/组件/属性识别生成中间 DSL 并最终翻译成 Flutter 表示。

04、小程序架构设计与实践


蚂蚁金服终端技术部 资深无线开发专家 霂之


近几年小程序也非常火,互联网厂商都有自己的小程序,下面阿里巴巴资深无线开发专家——霂之给大家带来小程序的架构设计与实践。


极低开发成本:尽量用最少的代码来写一个软件,可以让大家在一周之内完成一个相当的工业化、可发布的,大规模应用的产品。我们一直希望能用更快的方式让大家的业务能够上线,让大家顺利的进入阿里经济体。
 
高用户转化:我们可以给更多开发者更多的流量入口,实现多个平台,多个端,多个场景的触达和投放。我们也希望帮助大家做智能化的营销,通过小程这种技术栈,支付宝和阿里经济体内的其他应用可以更容易理解开发者的产品,实现更高质量的营销和投放。



丰富业务能力:使用小程序开发体系的好处,很多功能大家可能不需要再开发。例如多媒体,端智能以及其他的解决方案,开发者可以不用自己开发一个工业级的功能。支付宝将其打包好,提供给大家,用一些简单的,可能是 DSL ,可能是大家喜欢的方式来供大家使用。



技术上最大的两个话题:DSL 和 IDE 工程体系。支付宝希望大家有比较舒适的开发体验,所以开发者要写什么样的 JS 代码和 DSL 标签是很重要的问题。
 
关于 DSL 我们做了很多内部讨论,争论集中在于性能、稳定性以及书写的成本。描述式的写法会让开发者舒适。但对于性能的优化,稳定性,切片的实施难度会上升。使用命令式的写法会降低一些开发者自由度,但也意味着基础设施的实现难度下滑。最终支付宝和阿里经济体都选择了描述式的写法,而由支付宝为大家保证更好的性能,也为大家保证更好的应急手段和用户体验。



流畅的直播,短视频的实现实际上是相当困难的。此外还要求我们开发者可能需要使用自己的视屏播放组件与 web 技术做混合渲染,这也是相当困难的。直播和短视频的场景,对于视频的播放的清晰度,对于各种网络条件的感知,需要有一定的控制能力,直接使用浏览器的原生解决方案并没有太大的优势。


支付宝为开发者推出了一个短视频和直播小程序组件,性能上可以对标业界一流的视频播放能力,请大家关注支付宝开放平台,关注更多高附加值的组件。


05、What’s New in Android Development

Google 技术推广工程师 陈卓

9 月初谷歌发布了 Android 10 正式版,对开发者来说,它到底带来了哪些改变?Google技术推广工程师 陈卓将会从三个方面为大家讲解,Android 10、Android Jetpack 和 Android Studio 3.5。

Android 10:在很多方面增强了隐私保护,防止用户的隐私信息被泄露,如应用无法获得不可重置的硬件 ID、禁止在后台启动 activity 等; 也在用户界面方面做了很多创新和改进,如实现了系统级的统一手势导航、深色主题、折叠屏支持等;还做了很多系统层面的改进,如 TLS 1.3 支持、BiometricPrompt 的改进、更好的编解码器等。

Android Jetpack:根据 2019 年的开发人员调查报告,在中国 60% 的专业开发人员使用了 Android Jetpack。最近的 Jepack 更新包括:一个新的 CameraX 开发库,帮助相机类应用开发者方便地实现常用的基本相机功能;Jetpack Security Library 按照标准的 AES-256GCM 规范对文件和 SharedPreferences 进行加密;Jetpack Benchmark Library 帮助开发者轻松地对 Kotlin 或 Java 代码进行性能基准测试;架构组件(Architecture Components)中的更新等。

Android Studio 3.5:上个月谷歌正式将 Android Studio 3.5 宣布为稳定版本,它通过支持离线组件、内存堆大小的动态设置、客户端的内存泄露分析工具、构件速度提升、Apply Changes 等根本性的改进,为广大开发者提供更顺畅的开发体验。


总而言之,我们号召开发者 现代化您的应用,关注应用的性能、功耗、安全、隐私等方方面面,并最大化地利用最新的设备特性、系统功能、开发语言、开发环境和开发库等资源,打造出安全高效、体验卓越的优秀应用!


最后


本次的「杭州云栖大会-淘系技术嘉年华」移动端侧技术专场,我们与众多开发者共度了一个美好的上午,未来我们将会继续向前,在移动端技术不断实践与创新探索,助力开发者打造自己的最佳应用。


精彩回顾



在看点这里

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存