一、SDK简介
SDK全称 Software Development Kit,即软件开发工具包。通常是辅助开发某个软件而抽出剥离的特定功能软件包。与App开发的不同,SDK通常更偏向功能的开发实现,App则是从用户层面到业务逻辑,全程处理用户的行为。
二、SDK核心原则
- 稳定性: 崩溃率≤4‰
SDK作为嵌入在App里面的一部分,可能会被多个App集成使用,这必须要求SDK性能稳定,没有崩溃。通常开发中,多做一些校验判断,以及可能出现异常的地方进行捕获(注意线程内部产生的异常,需要在线程内部进行捕获)。
通常业界App的崩溃率在4‰左右,提供代码质量是一方面,增加线上异常捕获是一方面。通过线上异常的反馈,迭代修复增进稳定性。
2.安全性:无安全风险、遵守规范
SDK必须没有安全风险,如注入、包含病毒、违反隐私规范等可能导致App被应用市场下架的风险。
常见的如:js注入风险,上架GP等应用市场可能需要遵守相关规定,海外市场如安全隐私条例等。
3.高性能:内存占用小、无经常性卡顿
一些公司对上线产品有严格的性能检测指标,对于集成的SDK也有相应的标准要求。SDK尽可能的占用较小的内存,不会造成性能的卡顿等。
4.体积小:减少或避免直接依赖三方库
SDK包要小而精,避免造成接入方包体积过程。包体积过大,下载耗时长,不利于广告转化。
策略:尽量不依赖第三方开源库(可以进行功能裁剪接入)、 使用混淆等
5.对外接口要求
5.1 简单易用性
接口尽量简单,接口数量不会太多。减少使用方集成接入成本。
5.2 命名规范统一
命名除了编码上的命名规范,所见即所得外,最好形成统一的风格,能一眼看出是哪家厂商的SDK,好的规范能形成口碑,促进提升品牌效应。
5.3 跨端接口尽量保持一致
对于同一套SDK,尽量保持各端的接口命名、实现逻辑一致,减少接入过程中的困惑,减少技术支持成本,给人较好的接入体验。
5.4 接口兼容性:新老接口的兼容、新功能兼容
新版本尽可能的兼容老版本,避免已经集成的开发者在接入新版本后,出现问题,提高新版本的推进铺量速度。
6.高健壮性、高鲁棒性
要尽可能的提高程序的健壮性、鲁棒性。对于依赖服务端、开发者、或用户配合的各种环境,我们要有各种冗长兜底的逻辑,假定各种依赖环境异常,我们也务必要保证程序的稳定性,尽可能的采用兜底方案,减少对业务的损失。
三、SDK集成与维护
1.集成方式:灵活多样
SDK集成方式尽可能灵活方便。对于Android,可以采用maven,gradle依赖引入,或者直接提供jar、aar包来集成。
2.集成指南
对于SDK的集成步骤,使用步骤,版本更新说明,API接口介绍等,应用详细的文档说明。常见的官方文档包括:
- 概要
- 集成前准备
- 获取SDK
- 初始化
- 使用说明
- 测试说明
- 集成建议&常见问题
- changeLog
- 其他须知
3.集成测试
可以提供检测集成工具,帮助开发者检验是否正确接入。或者必要的测试步骤以及结果说明引导开发者完成集成测试。
四、SDK开发经验
1.埋点要全
对于SDK内部的各种行为,流程,尽可能的加入埋点。通过埋点,为业务方数据分析提供支持。
2.灵活配置化:铺量至少2周
SDK由于需要App的集成,依赖App的发版周期,导致铺量时间长。所以对于SDK内的业务支持,尽可能采用灵活的方式实现,如配置化,H5化。
3.SDK架构图
架构图画的比较简单,有一点点问题,如bid模块的存储地方,暂不修改,仅供参考
架构.png
网友评论