@pockry
2016-12-15T17:52:48.000000Z
字数 1914
阅读 1717
移动
12月9日,中国技术开放日广州站成功举办,来自腾讯、阿里、百度、唯品会的技术专家分享了移动开发前沿技术和一线工程实践。以下是分享内容的简单整理。
微信的高级工程师周志杰分享了微信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是一个Android客户端容器化框架,主要提供了组件化、动态性、解耦化的支持。支持工程师在工程编码期、Apk运行期以及后续运维修复期的各种问题。
它的整体设计如下:
Atlas的容器化实现,即把开发App转换为开发Bundle,为Bundle设计特殊的机制和环境,让Bundle运行在Bundle runtime而非Android系统里。
Atlas的动态化实现,最主要是bundle类部署的diff算法,通过将Dex逆向为Smali,然后通过算法生成diff.dex实现修改本地代码。另外还有资源部署等问题。
百度资深研发工程师胡官钦为我们分享了百度iOS输入法性能优化的经验。
自从iOS 8支持第三方输入法以来,百度输入法就开发了iOS版本并进行不断的优化。iOS第三方输入法面临问题主要包括,键盘无法弹出、弹出不流畅、显示异常、异常消失、系统限制等等。
百度iOS输入法在性能优化过程中总结了5条方法论,包括:
胡官钦在演讲中总结了很多案例,并且以输入法皮肤为例进行了一次性能优化实操。
唯品会移动开发总监蔡镜明分享了唯品会移动平台技术。
唯品会作为做特卖的品牌电商,经常做促销活动,对内容和页面的动态化要求极高,因此采用了Hybrid开发技术。整体技术架构如下:
唯品会选择了Cordoba框架支持Hybrid开发,在Native/H5交互协议方面采用SDK代替URL,是返回结果多样化,扩展方式更灵活。
在WebView的选择上,唯品会在iOS平台使用了WKWebView代替UIWebView,在Android上则是使用了第三方的X5 WebView。通过使用这些新版和增强WebView,App性能体验得到明显提升。
在基础组件方面,包括离线缓存、异常收集上报、智能路由等,唯品会也做了专门的优化。
另外,唯品会还尝试了当前非常火热的React Native,积累了一定的实践经验。React Native和Hybrid方案相比,性能的确有明显提升,但是也存在一些坑,主要是内存方面的一些问题。
本次广州站的分享内容充实,只讲干货,受到了参会者的认同和赞扬。