SDK,即Software Development Kit的缩写,译为软件开发工具包。即辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做SDK。

一、SDK的概念

SDK即“软件开发工具包”,软件开发工具包一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。简单讲,就是通过第三方服务商实现产品功能的软件工具包。

二、APP与SDK的区别?

APP开发更偏向于用户层面,从UI展示到业务逻辑处理,全程处理用户的行为。

SDK开发偏向于功能方面,注重功能的开发实现。

三、SDK与API的区别?

API也是可以调用第三方的程序,SDK也可以使用第三方的软件。

SDK相当于是一个开发者集成的环境,API则是数据接口,API是基于SDK之下的,可以在SDK的环境之下调用API数据。

SDK包括了API的定义,API是定义了一种能力的属性,是一种接口的规范,并且,SDK也包含了API的能力和规范,还有一些其他的辅助功能,同是缺少一部分API的能力。

四、 SDK 设计原则

1.核心原则:要稳定,不能引起客户APP的崩溃。

许多APP都需要集成 SDK ,这就要求SDK的核心原则不能引起客户 APP 的崩溃。一旦SDK的出现引起崩溃的BUG,这将对众多APP造成灾难性的影响,如果出现这种情况,是非常致命的。所以对于Android SDK开发来说,要注意 try...catch 的使用、对象的检查等等。

2.SDK设计原则

降低用户的上手难度,易于理解;SDK代码易于维护。

(1)接口易用性

一个好SDK不好用,关键就看接口的设计是否简单易用,对于接入方来说他不会关注你的实现细节,能用一个API接口搞定的业务,坚决不用两个。注意控制接口的数量。

另一方面,**注意接口的命名。**一个好的API接口的命名能够让调用者见名思意,做到不需要借助帮助文档就能使用的程度就说明这个接口命名是成功的。比如对于Android中设置点击事件的接口setOnClickListener。

(2)命名规范要统一

对于SDK开发来说,统一命名规范很重要,最好的状态是**接入方看到接口命名就能知道是哪家厂商的 SDK。**就是 SDK 的命名规范统一,形成自己公司的品牌效应。

(3)跨端接口尽量保持一致

对于同一套SDK,尽量保持各端接口命名、实现逻辑要一致。

(4)尽量不依赖第三方库

为了避免与调用方由于使用相同的库引起的冲突,增加调用方集成的工作量,降低集成方的体验。

开源库的不断更新,所以SDK需要及时保持更新,会增加额外的维护的工作量。

由于引入开源库,出现问题排查困难。

(5)SDK包尽量小

小而精

小是指包的体积要尽可能的小。避免造成接入方的APP增加很大,不然会引起接入方的不满,甚至下架。

精是指功能要专注。比如我们的 SDK 是用于埋点的,那里面设计提供很多常见的工具类显然是不合适的。

(6)兼容性

新老接口兼容:主要是由于最初需求考虑不完善,导致后面进行方案优化时引起接口的变更,使之前的接口成为历史的老大难问题,最终造成删除难度大。

新功能兼容性(接入新功能的 App 和未接入新功能的 App。)

3.SDK的集成

对于Android来说,我们提供通过maven、gradle依赖引入等方式,也是推荐的集成方式。但是对于一些接入方由于网络的限制,无法直接依赖maven,这里就需要提arr包或源码来集成。

------------------------------------------------------------------------------------------------------------------------------

简单粗暴!

感谢ლ(°◕‵ƹ′◕ლ)!!!

【Android】SDK是什么?相关推荐

  1. Android SDK 路径修改

    今天早上感觉电脑有点卡 就修改了SDK的安装路径 这里记录下现在的修改方法 现在android studio 安装的时候sdk  默认下载路径是c盘  AppDate -->android -- ...

  2. Android SDK Manager 的介绍

    android版本下面 Documentation for Android SDK --->帮助文档 SDK Platform   --------->SDK平台 ARM EABI v7a ...

  3. jenkins android sdk,Jenkins为什么找不到Android SDK?

    有趣的是错误消息行 C:\Program Files x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(567,2): 包含空格 ...

  4. Unity导出apk出现的问题,JDK,Android SDK,NDK,无“安装模块”

    导出apk失败 使用unity导出apk文件,会出现提示:需要合适版本的JDK.Android SDK和Android NDK,要找到.下载和安装好合适的版本非常耗费时间, 网上很多教程指出可以直接在 ...

  5. ubuntu安装Android SDK,adb,fastboot

    1,Eclips先安装:ADT: https://dl-ssl.google.com/android/eclipse/ 2,由于是64bit的系统,而Android sdk只有32bit的程序,需要安 ...

  6. android相机采集sdk,Android相机在Android SDK怪怪

    我使用相机首次,像大多数第一次的问题接踵而至......Android相机在Android SDK怪怪 我有我的活动肖像,但我的相机是面向非常怪异.它从字面上翻转了图像.因此,如果我从顶部粘住我的手指 ...

  7. eclipse+adt+android sdk,64位Ubuntu 11.10下Android开发环境的搭建(JDK+Eclipse+ADT+Android SDK详细)...

    Ubuntu 11.10 下 Android开发完全安装另一篇: 平台: 操作系统:ubuntu11.10 1.在ubuntu11.10下的ubuntu软件中心中有自带的eclipse,但是这里我们不 ...

  8. 百度推送 android7.1,【SDK版本更新】Android SDK 5.7.1

    [SDK版本更新]Android SDK 5.7.1 2017-07-19 Change Log: 1. 优化PushService竞争逻辑,提高服务稳定性: 2. 新增失败日志上传,用于优化绑定流程 ...

  9. Android SDK Tools Setup 提示 “ java se development kit not found”

    使用 installer_r11-windows.exe:安装Android SDK. 使用exe安装会自动检测是否配置好JDK. 当安装和配置完JDK后,运行安装程序依旧会提示 java se de ...

  10. Android SDK 2.3与Eclipse最新版开发环境搭建(一)

    一. 背景和准备 1. Android简介 Android是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统.中间件.用户界面和应用软件组成,号称是 ...

最新文章

  1. 消息总线(Spring Cloud Bus)
  2. PowerBuilder窗口之间传递多参数的方法
  3. jenkins+findbugs+checkstyle+PMD静态代码检查(二)
  4. 013_序列内建函数
  5. 左神算法进阶班5_3求公司的最大活跃度
  6. PyInstaller 生成exe文件
  7. 论文笔记_S2D.29_2017_CVPR_多尺度连续CRFs作为序列深度网络的单目深度估计
  8. SpringBoot集成Jsoup爬虫——三级列表
  9. 【CSDN】博文导入微信公众号
  10. JS实现获取今天星期几
  11. 成都拉升12名,长沙提升3位,最新全球城市排名出炉
  12. 2018浙大计算机考研经验
  13. 使用PADS绘制排线的细节笔记
  14. 在家谱中查找关系远近
  15. 电脑版微信聊天记录和小程序视频播放黑屏,但有声音,qq和其浏览器视频播放正常。如何解决?
  16. 以太网网络变压器的作用
  17. 简单入门排序算法(直接插入排序,折半插入排序,希尔排序,冒泡排序,堆排序,归并排序)
  18. 456. 132 模式
  19. MYSQL常用语法命令,MySQL中delete,drop和alter分别是用来删除什么的?有什么区别?删除了以后可以恢复吗?
  20. 单点登录:统一登录与退出

热门文章

  1. C++ 写的地图控件,支持google 百度 在线离线地图
  2. python是跨平台的 以及 py、pyc、pyo
  3. 机器视觉技术助力工业物联网发展,起到核心作用。
  4. 每日时报,以前端技术体系为主要分享课题
  5. 【JSON解析】JSON解析
  6. 大学计算机基础实验指导第一章答案,(教材)大学计算机基础实验指导与习题解答...
  7. 先电iaaS云计算基础服务平台部署
  8. 单芯片快速以太网MAC控制器DM9000介绍
  9. linux HTB 队列限速
  10. 计算机专业个人年度总结,计算机教学年度个人工作总结