共计 3386 个字符,预计需要花费 9 分钟才能阅读完成。
编者按: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 等平台反对;四是须要提供 7 ×24 小时的在线服务,保障能及时响应开发者的各种问题。
▌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 袤博科技将积极探索大数据深度利用及倒退,以客户需要为导向,贴合更多利用场景探寻市场未知的可能性,为全行业用户构建谐和欠缺的数据智能生态。