SDK,即Software Development Kit的缩写,译为软件开发工具包。即辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做SDK。
SDK即“软件开发工具包”,软件开发工具包一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。简单讲,就是通过第三方服务商实现产品功能的软件工具包。
APP开发更偏向于用户层面,从UI展示到业务逻辑处理,全程处理用户的行为。
SDK开发偏向于功能方面,注重功能的开发实现。
API也是可以调用第三方的程序,SDK也可以使用第三方的软件。
SDK相当于是一个开发者集成的环境,API则是数据接口,API是基于SDK之下的,可以在SDK的环境之下调用API数据。
SDK包括了API的定义,API是定义了一种能力的属性,是一种接口的规范,并且,SDK也包含了API的能力和规范,还有一些其他的辅助功能,同是缺少一部分API的能力。
许多APP都需要集成 SDK ,这就要求SDK的核心原则不能引起客户 APP 的崩溃。一旦SDK的出现引起崩溃的BUG,这将对众多APP造成灾难性的影响,如果出现这种情况,是非常致命的。所以对于Android SDK开发来说,要注意 try...catch 的使用、对象的检查等等。
降低用户的上手难度,易于理解;SDK代码易于维护。
一个好SDK不好用,关键就看接口的设计是否简单易用,对于接入方来说他不会关注你的实现细节,能用一个API接口搞定的业务,坚决不用两个。注意控制接口的数量。
另一方面,**注意接口的命名。**一个好的API接口的命名能够让调用者见名思意,做到不需要借助帮助文档就能使用的程度就说明这个接口命名是成功的。比如对于Android中设置点击事件的接口setOnClickListener。
对于SDK开发来说,统一命名规范很重要,最好的状态是**接入方看到接口命名就能知道是哪家厂商的 SDK。**就是 SDK 的命名规范统一,形成自己公司的品牌效应。
对于同一套SDK,尽量保持各端接口命名、实现逻辑要一致。
为了避免与调用方由于使用相同的库引起的冲突,增加调用方集成的工作量,降低集成方的体验。
开源库的不断更新,所以SDK需要及时保持更新,会增加额外的维护的工作量。
由于引入开源库,出现问题排查困难。
小而精
小是指包的体积要尽可能的小。避免造成接入方的APP增加很大,不然会引起接入方的不满,甚至下架。
精是指功能要专注。比如我们的 SDK
是用于埋点的,那里面设计提供很多常见的工具类显然是不合适的。
新老接口兼容:主要是由于最初需求考虑不完善,导致后面进行方案优化时引起接口的变更,使之前的接口成为历史的老大难问题,最终造成删除难度大。
新功能兼容性(接入新功能的 App
和未接入新功能的 App
。)
对于Android来说,我们提供通过maven、gradle依赖引入等方式,也是推荐的集成方式。但是对于一些接入方由于网络的限制,无法直接依赖maven,这里就需要提arr包或源码来集成。
------------------------------------------------------------------------------------------------------------------------------
简单粗暴!
感谢ლ(°◕‵ƹ′◕ლ)!!!