2018年11月23日,GIAC全球互联网架构大会在上海隆重召开。作为中国互联网技术领域一年一度的行业盛事,本届大会从系统架构设计、机器学习、编程语言、分布式架构等领域,甄选前沿科技企业代表分享2018年度最值得的回顾、总结的创新技术及研发实践案例,实践启示,共同探索未来的互联网构建方式。
本次大会上,Mob移动开发者服务平台MobSDK项目总监余勋杰,以【MobSDK用户接口演进】为主题,结合Mob多年的开发经验,剖析互联网应用的移动端痛点,为在场嘉宾分享:如何让用户接口实现自动化和智能化。
Mob成立于2012年,6年来已为28万开发者,38万个合作应用服务,独立设备覆盖达到96亿。推出的13款SDK产品,涵盖了第三方登录、分享、短信验证、消息推送、手游录像、用户系统、数据API等全方面的SDK需求,帮助开发者降低开发成本,提升集成效率,打造强大的数据统计后台。除此之外,Mob从深层出发,推出多维度的移动应用解决方案,帮助全球开发者们创造更大的价值。
在持续开发的解决方案中,Mob越来越深刻地认识到用户接口不仅要稳定能用,还要好用易用,做到自动化+智能化。想要达到这个目标就需要在不断压缩包体、做到安全易用、实现自动集成上不断努力。
一、 压缩包体
包体积优化是提高用户体验的最直接手段。比较推荐的是去依赖和插件化。去依赖是因为原生SDK都携带自身基础代码原生SDK太大。对于一开始比较大的包体Mob通过去掉依赖的包,实现早期的包体积快速下降。而插件化则可以让SDK具备伸缩性,能根据特定的场景增加或删除相应的模块,对控制包体效果明显。
过去几年ShareSDK在不断进化,Mob搜索插件的思想也在不断进化完善。这当中包含了早期搜索整个App的代码,搜索指定插件列表,还有使用编译前预处理工具等来搜索插件的方案。
1) 搜索整个App的代码。逻辑最自然,但是速度慢,因为一个APP当中包含了成千上万个类,扫一遍需要花费非常多的时间。
2) 搜索指定插件列表。速度快,但不能混淆指定类。在不用开线程的情况下,毫秒级别直接反射出类,可以直接实例化,但缺点是字符串是固定的,不能混淆指定类。
3) 使用编译前预处理工具。速度更快,无需混淆配置,但可读性低。
二、 安全易用
从创始以来Mob一直都非常重视安全性,但安全的概念是非常大的,基于接口泄露隐患的种种研究,Mob衍生出更多的更具体的易用概念——用设计思想和代码规范来规避安全隐患,降低接口使用难度。
1) 预防回调泄露。只要接口有泄露的风险,不管风险有多小,它总会发生。而在预防泄露方面来说,类并没有表现出比接口优越太多。最后Mob的选择是让回调跟随业务流动,操作结束自动丢弃的解决方案。
2) 降低数据解析难度。使用常规的操作回调设计思想,很难解决统一业务处理和降低数据解析难度两者的矛盾需要引入“泛型”来解决问题。
3) 实现接口现代化。适配Lambda表达式,以单方发接口为回调,细分回调场景。使用链式编码风格,链式编码风格具备逻辑顺畅、指示清晰的优点,搭配Lambda表达式更能凸显代码美观。
三、 自动集成。
比起产品革新和技术突破,让用户阅读集成文档才是最大的难题。为了让Mob的产品更好推广,更加适应用户的习惯,MobSDK在不断的升级和更新。首先可以自动引入,解析Gradle配置信息,引入所需组建,引入各种依赖库,然后自动配置,根据引入的组件,修改App的Manifest以及其他配置文件。最后自动更新,在编译期间检查组件的版本,进行必要的更新。
未来,Mob将不断丰富产品功能,不断优化和扩展插件的使用方式,基于MobSDK产品矩阵打造更多样化的产品,进一步压缩开发者们在移动开发中“手动”部分,构建更加智能化、人性化的开发模式。