6月24日参加infoq举办的GMTC移动技术大会,并做了一场演讲,还参加了晚上的Swift3.0闭门交流会议,受益很多。
6月24日上午是全体大会,首先是手机淘宝的长恭,微信的赵原,京东的王永杰做了移动未来开发展望的开场演讲。然后是Facebook早期员工覃超做了Facebook App演进过程的演讲,主要介绍了Facebook App各个版本的技术实现和经验总结,印象比较深的有下面几点:要选择对用户优化的技术而不是对开发团队优化的技术;现在FacebookApp已经是通过appurl scheme跳转的组件化项目,主要是iOS原生技术实现,Facebook已经有1000多iOS工程师,整个项目只有一个codebase,使用Mercurial做版本管理,git已经太卡了,使用Buck编译项目;新技术的接受曲线,到达高潮后会有一个低谷,然后走向正常的发展阶段。
然后是Square的邵震的演讲Mobile Growth的方法和实践,是近几年流行的增长黑客相关的实践,介绍了Growth实践中的一些心得,最重要的是留存,工程师驱动,通过高层战略推动底层执行。然后介绍了一些A/B Testing系统的实践。Deep Link的趋势和使用,就是通过一些网页链接进入App。
下午的演讲分三个分会场,我主要参加了Swift分会场和插件化分会场。Swift分会场第一场是傅若愚的Swift函数式编程,函数式编程是个不太容易讲的话题,主要是涉及的概念比较多,这个演讲有比较易懂的方式介绍了函数式编程。
Swift分会场第二场是我的演讲From Java/Android To Swift iOS,主要是分享Android开发者如何快速上手Swift开发,以及一些Swift项目经验和开源框架,还介绍了Swift3.0的一些新特性,感兴趣的可以下载ppt看看。
然后去了插件化专场,听林光亮介绍了Small插件化插件,他主要先分析了Android插件化的各种技术和插件化框架,然后介绍了small插件化框架的实现思路和技术实现。这个插件化方案我感觉是目前比较合理的,技术上也比较先进,希望后面项目能用上。
最后是聚划算的朴诚介绍聚划算的Luaview动态化开发实践,LuaviewSDK提供了一种动态化能力,适合原生App的某些页面嵌入动态内容,性能很好,和React Native,weex等插件化方案比较,是一种更轻量的插件化方案。
25日上午参加的是架构演进专场,第一场是手机天猫解耦之路,介绍了天猫iOS App演进过程和组件化开发技术,通过BeeHive框架实现解耦依赖,统跳协议解耦界面,印象深刻的是活用了Web服务器的UrlRewrite技术,通过正则表达式Rewrite URL。
第二场是滴滴李贤辉滴滴iOS组件化优化与实践。介绍了滴滴iOS App组件化的背景,70个开发人员,7条业务线,70万代码。代码冲突多,发布困难。介绍了一些组件化的专项技术,业务线接入,页面结构,导航管理组件,共享地图组件,灰度系统apollo等,干货很多,值得回去仔细研究学习。
上午第三场是iOS遗留代码重构,从CoreData迁移到Realm说起。介绍了抽象分支的概念,通过抽象层替换旧代码模块。特性开关,4种实现方式,如后台服务,ab test框架。通过适配器模式透明支持coredata和RealmDB持久化服务。最后介绍了Realm的坑,不支持集联删除,不支持多态,难以理解的反向关联。遗留代码的重构确实是个麻烦的事情,这个演讲对iOS项目的重构有一定参考价值。
下午参加了性能优化专场,第一场是微信叶润桂的演讲《微信客户端怎样应对弱网络》。前面主要介绍介绍了针对TCP/IP协议的移动网络优化,介绍了各种算法。然后讲解了微信发图片协议合并优化,上传图片后,由图片服务器直接通过内网和业务服务器通信。低成本重传,降低重传的包大小,或使用流式协议。渐进式图片,有损上传和下载。最后安利了后面打算开源的Mars跨平台开源网络组件。
第二场是杨刚的360手机卫士性能优化之路,首先介绍了性能优化的各种问题,lint和Findbugs,自有代码检测工具,基于jenkins平台的检测系统。aspectj重写器,实现网络静态埋点的例子。然后介绍了性能监控,进程的冷热启动等。由于360手机卫士总是优化手机杀其他App的进程,这兄弟提问环节被问的比较郁闷。
最后听的演讲是支付宝App的性能稳定性和运维实践,介绍了支付宝App3个阶段的架构演进,性能优化实践和超级App的运维体系介绍。
整个大会大概有30多场演讲,很多都是各大公司的实践经验分享,干货很多,对我来说帮助比较大的是安卓的插件化和iOS的组件化开发,由于业务发展需要,这些技术后面需要逐步引入了。