打造百亿量级、亿级日活SDK的十大关键要点

一个好的SDK应该具有易用性、稳定性、轻量、灵活的特色,而个推做为国内第三方推送市场的早期进入者,一直致力于为开发者提供高效稳定的推送SDK。html

通过十年的深耕与创新,个推夯实了行业地位。截止2019年6月,个推SDK累计安装量超440亿,日活独立设备数达4.3 亿,并成功服务了人民日报、新华社、微博、马蜂窝、酷我音乐等一系列明星APP。辉煌数据的背后是强大的技术支撑。前端

这期文章,咱们特意采访了个推Android 资深开发敬瑜,以个推推送SDK为例,来聊聊打造大型SDK的关键技术点。java

做者 个推Android 资深开发 敬瑜react

01 开发 SDK 和 开发APP 有什么联系?git

APP 和 SDK二者关系密切,APP是SDK的主要载体, SDK 则是 APP开发所需的重要工具。从研发者的角度来看,SDK开发和 APP开发均属于 Android 顶层应用开发,并没有本质区别,二者的目的均是要提供产品给客户使用;但从商业角度来说,APP 是to C 的产品,用户是广大群众;而 SDK 则是to B 的产品,用户为广大开发者,二者在运营模式上有所不一样。github

02 SDK 开发最关键的点是什么?react-native

SDK没有UI交互,用户使用 APP 时并不会感知到SDK 的存在。可是做为APP的重要部分,SDK的性能直接影响着APP的性能,也间接影响着用户在使用APP时的体验和感觉。总结个推推送SDK的开发经验,咱们认为SDK开发最须要注意的是其稳定性。api

做为一款第三方 SDK,稳定性是第一要素,咱们要保证推送SDK在不一样环境下(APP、终端设备等)都能正常运行。要想保障稳定性,复杂环境的兼容是关键。减小使用非 SDK 接口也有助于提高稳定性。安全

除了稳定性外,如下几个问题对于打造优质SDK也很重要。网络

03 SDK 版本适配以及厂商兼容状况如何?

个推 SDK 支持 Android 端和 iOS 端,如下文章均使用 Android 端来举例。

截止目前,Android 系统从07年发布初版至今,经历了屡次迭代,Android Q为其最新版本。个推Android SDK 支持 Android 2.3及以上版本,几乎能够在市面上现存的全部Android 版本上运行。

1)版本适配
APP 主要在手机上运行,若想 APP 在 Pad、电视之类的智能设备上运行,则基本须要单独适配,也就是说,APP 会根据其使用环境调试相应的版本。而 SDK 的运行环境相对复杂,咱们根本不知道本身开发的 SDK 会在什么样的环境下运行,多是手机、Pad、电视,也多是车载设备,甚至是冰箱等智能家居设备。这类设备的 Android 系统版本从 2.3至10.0 不等。咱们在开发SDK 的时候须要尽可能地向下兼容。为此,个推推送 SDK 依旧保留着对 Android 2.3 系统的兼容。

2)厂商兼容
一个成熟的 SDK 势必要保证在不一样的厂商设备上正常运行,尤为是当SDK 内部涉及到Android 四大组件时须要特别注意厂商的兼容性,注意其是否会限制固定 action 的广播使用及限制固定类名 service 的启动。而若是 SDK 开发涉及到 Android framewrok 的引用,某些功能可能会失效。好比AndFix 的底层实现依托于 Art/Dalvik 虚拟机的架构,可是大部分厂商会对虚拟机进行定制,修改底层 ArtMethod 结构,这时,AndFix将没法在修改过虚拟机的设备上生效。

因此在 SDK 开发过程当中咱们要尽可能避免Android Framework 的引用。个推在使用Android 四大组件的时候,会要求开发者提供自定义 Service,其Service 只须要继承个推默认的便可,这样能够保证 SDK 在不一样厂商上均能正常运行。

04 怎么看待如今市面上的 SDK普遍支持多混合开发这一现象?

大前端开发是必然的趋势,如今新推出的产品会优先使用混合开发,保证一套代码能够在多个终端上运行。所以,一个成熟的 SDK 有必要对不一样的语言框架进行适配。目前,个推 SDK 不只支持 Android、iOS系统,还支持混合开发,如unity3d cocos2dx react-native flutter cordova apicloud等。具体见个推实验室

05 Android SDK 是否会使用开源项目?

不会使用。
有如下几点考虑:

  • 使用开源项目会增长包的体积;
  • 不能保证开源项目支持复杂的终端环境;

-客户的 APP可能已使用开源项目,将致使编译失败;

06 如何适配海外市场环境?

开拓Google Play 市场是各大互联网公司的长远规划之一。个推Android SDK Google Play版本自发布以来,积极适配复杂的海外环境,为海外App消息的稳定下发提供强大的支撑和保障。为了有更好的用户体验,个推推送 SDK 还在国外众多地方布置了机房,以保证推送的到达率。另外,个推推送SDK还须要对 Google Play 制定的各类规则进行适配,以及还要考虑不一样国家不一样版本机型的适配问题。这要求咱们在开发过程当中尽可能使用 Google 生产的手机进行调试与测试。

07 SDK 如何下降手机电量、流量的消耗?

为了给用户更好的使用体验,咱们会尽量地下降SDK对电量以及流量所形成的消耗。为此,咱们不会使用蓝牙这类电量消耗较高的工具。此外,咱们还会采用多链路合并技术来节约流量。

为了准确地了解所耗电量、流量的下降状况,咱们还会作一个全面的测试。每次发版以前,咱们都会采用严格的测试标准,使用特定的 APP 进行电量压测。为了尽量地排除外来因素的干扰,保证测试的准确性,咱们每每会使用集成了个推推送 SDK 的 APP来测量。常见测量 APP 的方式有Batterystats & bugreport和Battery Historian。具体细节能够自行查阅 PowerProfile.java 和 power_profile.xml 的使用与原理。

08 如何自主检测 SDK 的异常?

通过近 10 年的优化与升级,个推推送 SDK 的异常状况已经控制在一个很是很是低的水平,但由于 Android 市场碎片化很是严重,SDK 在如此碎片化的环境下运行不免会出现各类意想不到的突发状况,为此咱们专门开发了SDK运行自查系统,相似于精简版的 bugly。该内部产品与 SDK 相辅相成,能够自主检测 SDK 的异常状况,并在发现异常后主动上报。其次,在代码层面,咱们也作了一些防控,避免 SDK 由于异常而致使没法正常使用。另外,咱们还成立了技术支持团队,服务广大的开发者,按期回访客户,帮助解决客户遇到的问题。

09 开发SDK还有什么是须要注意的么?

SDK开发过程当中,咱们还须要注意安全性。安全性不只仅表明网络数据交互的安全、本地数据存储的安全,也涉及到 SDK 的加固、混淆、第三方安全软件审核。举例来讲,个推 Android SDK 提供了四大组件的对接,SDK 内部会特别注意,避免这些组件被反序列化攻击。为了让开发者更加放心地使用咱们的SDK,咱们公司内部创建了严格的安全管理机制,来保障SDK的安全性。

10 对 SDK 开发者有何建议?

其实从 Android APP 诞生开始,SDK 的开发就从未中断过。SDK 开发者与 APP 开发者的工做内容基本相同,可是开发 SDK 更注重对 Java 语言以及 Android 底层的理解。若是你们想从事Android SDK 开发,建议多研究 Java 的相关知识,深刻理解 Android framework 层。

开发SDK并不难,难的是如何让本身开发的 SDK 在复杂的环境下稳定运行。这须要咱们对 SDK 的架构有一个比较清晰的认知,并对前文所提到的问题进行认真思考。

多年来,个推 SDK始终以服务开发者为己任,持续为用户提供优质的体验。为了进一步提高推送后台的保活能力,个推已发布 2.13.3.0版本,并对 Android Q 进行了适配,请前往个推文档中心下载http://docs.getui.com/downloa...,即刻体验。

在这里插入图片描述

相关文章
相关标签/搜索