微信号:infoqchina

介绍:有内容的技术社区媒体

微信Mars、手淘Atlas、百度iOS输入法、唯品会移动平台技术,中国技术开放日广州站精彩回顾

2016-12-16 08:00 徐川

12月9日,中国技术开放日广州站成功举办,来自腾讯、阿里、百度、唯品会的技术专家分享了移动开发前沿技术和一线工程实践。以下是分享内容的简单整理。

微信Mars之高质量网络连接探索

微信的高级工程师周志杰分享了微信Mars跨平台终端组件。

Mars 是微信官方的终端基础组件,是一个使用 C++ 编写的业务性无关,平台性无关的基础组件。目前已接入微信 Android、iOS、Mac、Windows、WP 等客户端。现正在筹备开源中,它主要包括基础库COMM、通用日志模块XLOG、网络诊断模块SDT、信令传输网络模块STN四个部分。

它的架构如下:

本次演讲主要分析了STN信令传输网络,与目前常用的网络组件如AFNetworking、Retrofit、OkHttp相比,STN是跨平台的,基于Socket层的信令网络,主要用于小数据传输。它的特点包括:

  • 提供长连、短连两种网络通道

  • 贴合移动互联网的网络层解决方案

  • 贴合移动终端的平台特性:前后台、活跃态、休眠、省电、省流量等

在Mars STN的连接策略上,面临诸多困难,如Connect超时的选择,需要同时考虑到可用性和网络敏感性,而官方提供的默认实现因为运营商和平台差异等等实际上不可用。这部分需要根据对不同平台的了解制定灵活的策略。除此之外,还有连接效率、复合连接等等问题。

连接超时机制对于IM来说也是一个坑点,STN通过分层设计和多级超时来解决这个问题。

Mars预计春节前开源,并且保持项目持续维护更新。

Atlas:手淘灵活的容器框架

淘宝资深测试开发工程师李龙(查郁)分享了手淘容器框架Atlas.

Atlas是一个Android客户端容器化框架,主要提供了组件化、动态性、解耦化的支持。支持工程师在工程编码期、Apk运行期以及后续运维修复期的各种问题。

  • 在工程期,实现工程独立开发,调试的功能,工程模块独立。

  • 在运行期,实现完整的组件生命周期的映射,类隔离等机制。

  • 在运维期,提供快速增量的更新修复能力,快速升级。

它的整体设计如下:

Atlas的容器化实现,即把开发App转换为开发Bundle,为Bundle设计特殊的机制和环境,让Bundle运行在Bundle runtime而非Android系统里。

Atlas的动态化实现,最主要是bundle类部署的diff算法,通过将Dex逆向为Smali,然后通过算法生成diff.dex实现修改本地代码。另外还有资源部署等问题。

百度iOS输入法性能优化

百度资深研发工程师胡官钦为我们分享了百度iOS输入法性能优化的经验。

自从iOS 8支持第三方输入法以来,百度输入法就开发了iOS版本并进行不断的优化。iOS第三方输入法面临问题主要包括,键盘无法弹出、弹出不流畅、显示异常、异常消失、系统限制等等。

百度iOS输入法在性能优化过程中总结了5条方法论,包括:

  • Don't do it。例如在日志和错误处理中少用断言,容易阻塞进程。去除多余的视图层级和操作。

  • Don't do it again。通过缓存来增强性能,包括缓存频繁使用的对象、创建开销打的对象、中间结果等等。

  • Do it faster。系统提供了不同的API来提供类似的功能,但这些API之前有性能差异,需要选择合适的数据结构和算法,以及系统API。另外对于计算量大的操作需要进行硬件加速。

  • Do it before。对于某些耗时操作,需要进行预处理。

  • Do it later。对于从服务器获取数据,可以选择延迟加载、异步加载等。

胡官钦在演讲中总结了很多案例,并且以输入法皮肤为例进行了一次性能优化实操。

和时间赛跑的移动电商演进

唯品会移动开发总监蔡镜明分享了唯品会移动平台技术。

唯品会作为做特卖的品牌电商,经常做促销活动,对内容和页面的动态化要求极高,因此采用了Hybrid开发技术。整体技术架构如下:

唯品会选择了Cordoba框架支持Hybrid开发,在Native/H5交互协议方面采用SDK代替URL,是返回结果多样化,扩展方式更灵活。

在WebView的选择上,唯品会在iOS平台使用了WKWebView代替UIWebView,在Android上则是使用了第三方的X5 WebView。通过使用这些新版和增强WebView,App性能体验得到明显提升。

在基础组件方面,包括离线缓存、异常收集上报、智能路由等,唯品会也做了专门的优化。

另外,唯品会还尝试了当前非常火热的React Native,积累了一定的实践经验。React Native和Hybrid方案相比,性能的确有明显提升,但是也存在一些坑,主要是内存方面的一些问题。

本次广州站的分享内容充实,只讲干货,受到了参会者的认同和赞扬。

 
InfoQ 更多文章 云计算巨头鏖战正酣,Google如何挑战AWS的霸主地位? 以互联网金融为例,谈谈技术创业三部曲 最新高清IT职业技能图谱:架构师、H5、DBA、移动、大数据、运维... 阿里李纯:从架构师到CTO,成长没有一蹴而就 当互联网金融遇到区块链……
猜您喜欢 JAVA | java的基本语法之基本语法格式,注释、关键字、标示符 2016年3月4日,今日石油资讯 Apache\/Nginx通过UserAgent屏蔽蜘蛛和采集 [精校版]Using Swift with Cocoa and Objective-C--互用性--Cocoa数据类型 怎样在技术面试中刷掉牛逼的程序员