输入法是一种对性能要求极高的产品,不同于普通应用开发,很多在普通应用开发看来不是问题的,在输入法看来却是比较关键。同时,由于 iOS 系统的某些限制,输入法不得不在产品功能和性能方面做出调整,以尽可能地优化用户体验。在MDCC 2016 中国移动开发者大会前夕,iOS 开发峰会演讲嘉宾——搜狗输入法 iOS 版负责人李腾杰接受 CSDN 专访,分享了其与团队在第三方输入法开发与优化方面的经验,以及搜狗输入法 iOS 版开发团队在新技术与一线项目开发相结合的尝试与实践。
请介绍一下您和目前的工作,以及关注/正在研究的技术。
李腾杰: 我目前在搜狗公司从事 iOS 平台搜狗输入法的相关研发工作,重点关注输入法关键性能指标(如键盘调起速度、内存、CPU 等)和代码架构的优化。同时,也在研究Swift3,在合适的时间点安排项目适配 Swift 3。
在 iOS 开发新的技术点方面,搜狗输入法 iOS 版开发团队有着怎样的尝试与实践?
李腾杰: 在 iOS 动态更新方案上,我们跟进了对JSPatch和React Native的调研,最后根据输入法的项目实际情况,择选 JSPatch 应用于输入法,完成了输入法热更新的工作。JSPatch 集成较为简单,是一种应用较广泛的热修复解决方案,它可以通过服务器后台下发 JavaScript 脚本,实时修改 Objective-C 方法的实现,达到修复 Bug 和动态运营的目的。
由于 JSPatch 存在性能方面的限制,实际项目中仅用于做一些轻量级代码的修复,并没有频繁的使用。考虑到安全性,输入法自行部署了服务器后台来分版本管理下发的脚本,针对键盘扩展和其容器 App 两种类型的下发脚本。同时,由于输入法键盘扩展的特殊性,受到键盘允许完全访问控制权限的影响,输入法尝试了通过键盘容器 App 来获取修复脚本,借由相同 Group 的共享目录来影响键盘。在输入法关键性能指标的优化上,我们也跟进了FBRetainCycleDetector(Facebook开源的一个内存泄漏检测解决方案)、FastImageCache(Path 团队开发的一个开源库,用于提升图片的加载和渲染速度)的调研,并运用于项目实践,优化产出效果较好,确实发现了一些代码实现中的问题,并改进了输入法换肤的稳定性。
在搜狗输入法 iOS 版研发与更新过程中,遇到过哪些比较