编者按:7月15日晚,由MobTech袤博科技主办的一档线上技术直播分享栏目【Coder Park】第一季第二讲《挪动端新风向》顺利在云端举办,客户端负责人文军分享了MobTech袤博科技Android SDK架构设计之路,从0到1开发及迭代过程中遇到的一系列难题,独特探讨其解决思路和SDK开发架构降级。
以下为分享内容:
MobTech袤博科技开发者服务历时9年,现已笼罩寰球近155亿+挪动端设施,业务笼罩营销、金融、商业天文等多个垂直行业,同时为政府业务提供反对。对于App开发者来说,会常常面临架构选型以及SDK接入的一些痛点和问题,明天从“SDK架构设计”这个主题登程,分享MobTech袤博科技如何系统化打造SDK服务。
▌浅谈SDK
SDK是软件开发工具包的缩写,它的次要作用次要包含以下方面。一是提供软件必备性能,二是升高软件开发和保护老本,三是极大缩短软件开发周期,四是当今挪动互联网腾飞的X因素,能够说没有SDK挪动互联网不会倒退这么迅速。
SDK服务蕴含以下方面:一是提供SDK根底业务性能,如受权分享、推送、一键登录等;二是提供欠缺SDK的集成工具和文档,不便开发疾速接入;三是须要提供三方开放平台反对,除了对Android和iOS原生App开发反对外,还须要提供像Unity、Cocos、Uniapp、Flutter、APICloud等平台反对;四是须要提供7x24小时的在线服务,保障能及时响应开发者的各种问题。
▌Mob SDK架构
那么在解读MobSDK架构前,咱们先来全面理解一下MobSDK。想必很多开发者理解咱们,都是从ShareSDK开始,咱们自2012年起,通过这款产品关上了挪动开发者的市场,在ShareSDK引领市场的同时,咱们陆续开发了MobPush、一键登录、短信验证码、MobLink等系列产品。MobPush这款产品自上线以来,通过了3年工夫的一直优化和降级,目前在全方位推送性能和推送指标上都达到行业第一梯队程度,并且完全免费。秒验SDK则提供了当下比拟风行的一键登录性能,上线3年多,物美价廉且失去多方好评。目前产品推出9周年感恩回馈流动,为新老用户带来了超多优惠福利,感兴趣能够点击“浏览原文”理解。
MobSDK的整体架构按性能反对分为三局部,第一局部是SDK根底性能,第二局部是集成工具反对,第三局部是三方开放平台反对,每一部分和模块都是反对横向扩大的。
第一局部SDK根底性能架构可分为三层,第一层是SDK业务层,第二层是通用性能层,第三层是根底工具汇合层。SDK业务层将各业务之间相互独立开,这样每个性能SDK之间是互相独立的,不便迭代和保护。通用性能层会将一些通用的性能从各SDK中抽离进去,独自为一个模块。根底工具汇合层提供了根底工具框架,是通过长期积攒的,稳定性较强,也独立出了新的模块。
第二局部是集成工具,这一块也是尤为重要。首先要让开发者接入进来,那么就须要提供更加快捷接入形式,除了传统集成文档之外,咱们提供了0代码集成工具,像gradle插件、cocoapods、maven仓库、三方开放平台组件(如Flutter组件、APICloud组件、UnityPackage等)。
第三局部是三方开发平台反对,针对Unity、Cocos、Uniapp、Flutter、APICloud等平台,咱们提供了开源的桥接代码和组件反对,不便所有挪动开发者都能接入SDK。
▌从0到1开发
个别从0设计一款SDK,总体上能够分为5个步骤:基础架构的设计、凋谢API接口设计、业务性能框架设计与开发、根底外围库设计与开发、打包与公布。
第一步是基础架构设计,一个好的架构可次要从可读性、可扩展性、可维护性三个方面进行思考,即功能模块间互相独立,升高耦合度,保障构造清晰易于保护。通常咱们能够把SDK架构简略分为两个档次:业务层和通用性能层。业务层能够独立成业务模块,包含凋谢API接口和业务性能实现,能用性能层能够分为两个模块,包手通用功能模块和根底工具模块。
第二步是凋谢API接口设计,是间接凋谢给开发者调用的,所以常常要转化角色。针对如何调用这个接口,如何用起来更方便快捷,并且不必去思考任何场景和问题,总结了以下几个要点。
1.API接口命名须要标准,且通俗易懂;
2.接口输出参数尽量少,如有必要参数,须要做好参数校验;
3.接口尽量保障是非阻塞的,这样不影响开发者失常业务逻辑解决;
4.接口调用日志须要清晰明了,便于调试;
5.接口后果最好是间接返回,尽量少的应用回调,如有必要,能够在回调办法命名上明确回调所在线程,如在主线程回调,能够应用onResultInMainThread这种形式来命名回调办法。另外应用回调时须要思考内存透露问题,因为开发者有可能是应用匿名外部类的形式进行回调传参,这时如果调用程序的生命周期完结时回调还没有回来,就须要被动移除回调,避免内存透露,所以应用回调时还须要提供移除回调的办法。
第三步是业务性能框架设计,不要适度设计,依据具体的业务需要来设计即可,不要为了一些将来很小概率产生的需要变动提前设计。
第四步是根底外围库设计与开发,在外围库提炼过程中须要保障性能间相互独立,升高耦合度。
最初是打包与公布,能够通过jenkins主动获取代码和执行编译打包,最终公布到maven上,能够大大降低人为本地打包出错的危险。
▌SDK次要问题及解决路径
SDK开发次要面临以下问题:SDK包体大小、兼容适配、四方依赖问题、隐衷合规问题。
对于SDK包体大小,首先是代码肯定要精简,不适度设计,代码撰写需尽量最优雅最简洁的,其次混同,实践上除了四大组件以及凋谢API接口外,其它的都须要进行混同。兼容适配次要有4个层面的兼容问题:零碎版本兼容、厂商兼容、屏幕兼容、以及新老版本兼容。零碎版本兼容咱们须要适配android 4.0以上的所有版本,个别官网每年Q3会公布一个新的版本,在新零碎正式公布前咱们须要做好适配,个别咱们会在Q1-Q2钻研并实现新零碎的适配,做法先是先整体钻研新零碎的变更,并圈出与SDK相干的重点变更,最初依据官网指南,进行相干适配批改与测试;厂商兼容,这块次要通过机型兼容笼罩测试来进行性能适配,个别会笼罩5大厂商的支流机型;屏幕兼容,次要中波及界面相干的适配和测试;新老版本兼容,须要确保所有SDK版本都是向下兼容的,保障SDK发新版本后,开发者能够不必批改一行代码就能间接更新到新版本SDK。
四方依赖指的是依赖的开源框架(如supportv4包、OkHttp等)、开放平台(如QQ分享、微信分享)、开发平台(如Flutter、Unity、Cocos等)。首先须要去开源依赖,不依赖任何三方工具包,齐全基于原生的android.jar进行开发。对于依赖的四方开放平台和反对的开发平台,咱们须要进行更新监控,以及定期更新,保障提供的根底性能能失常运行。隐衷合规次要关注官网隐衷调整、利用市场隐衷政策、以及国家网络信息安全政策。通常咱们能够走第三方平安检测机构进行权威检测,以及相干适配批改。
针对隐衷合规这块,MobSDK次要有三方面:一是隐衷政策申明,MobTech袤博科技针对SDK业务性能,出具了相应的隐衷政策,确保SDK性能在非法合规的场景下应用。(对隐衷适配这块也设计了隐衷管制API,在用户未提交隐衷受权前,是不会做任何网络申请和API调用的,批准受权后,才会初始化相干SDK性能);二是定期向第三方查看机构送检,三方查看机构会依照国家最新相干规定和政策进行权威的安全检查,并输入检测报告,以后咱们通过了梆梆平安和爱加密等平安机构的检测;三是咱们出具了残缺的合规与平安指南,依据指南能够解决隐衷合规相干的问题。
-------------------------------------------★对于咱们★--------------------------------------
MobTech袤博科技作为使用大数据技术帮忙企业拥抱数字时代的强力助推器,使用卓越的创新力和当先的大数据技术,帮忙企业将数据转化为营销经营的洞察力。
将来,MobTechch袤博科技将积极探索大数据深度利用及倒退,以客户需要为导向,贴合更多利用场景探寻市场未知的可能性,为全行业用户构建谐和欠缺的数据智能生态。