极客星球 | Android SDK架构设计之路

编者按: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功能);二是定期向第三方检查机构送检,三方检查机构会按照国家最新相关规定和政策进行权威的安全检查,并输出检测报告,当前我们通过了梆梆安全和爱加密等安全机构的检测;三是我们出具了完整的合规与安全指南,根据指南可以解决隐私合规相关的问题。

官网链接:https://www.mob.com/ 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容

  • 相信做Android开发的小伙伴,肯定使用过很多第三方的 SDK,比如极光 SDK、支付宝 SDK、微博 SDK ...
    SuccessandFaile阅读 2,396评论 4 6
  • 1. 移动架构师主要工作是什么? 1.设计当前架构。包括新技术方案的指定和评审2.改进过去架构。根据业务的发展或技...
    竖起大拇指阅读 823评论 0 1
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 6,018评论 0 4
  • 公元:2019年11月28日19时42分农历:二零一九年 十一月 初三日 戌时干支:己亥乙亥己巳甲戌当月节气:立冬...
    石放阅读 6,864评论 0 2