SDK是啥?与API的关系?

zhyjc6于2019-10-16发布 约1592字·约3分钟 本文总阅读量

关于API与SDK?

维基百科&百度百科这么说

什么是API?什么是SDK?它们之间又有什么关系,有什么相同之处和不同之处?下面是“百科”的回答:

SDK

软件开发工具包Software Development Kit, SDK)一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合。

它或许只是简单的为某个编程语言提供应用程序接口的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件。一般的工具包括用于调试和其他用途的实用工具。SDK还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。

​ ——维基百科

软件开发工具包是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合,一般而言SDK即开发 Windows 平台下的应用程序所使用的SDK。它可以简单的为某个程序设计语言提供应用程序接口API的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件。一般的工具包括用于调试和其他用途的实用工具。SDK还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。

​ ——百度百科

API

与因特网相连的端系统提供了一个应用程序接口Application Programming Interface,API;又称为应用程序编程接口)是软件系统不同组成部分衔接的约定。

​ ——维基百科

API(Application Programming Interface,应用程序接口)是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。 目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问原码,或理解内部工作机制的细节。

​ ——百度百科

拼命解释

说到API和SDK,很多朋友容易把他们弄混,所以我们在这里把它们放在一起说一下:

1、 仔细的解释

你可以把SDK想象成一个虚拟的程序包,在这个程序包中有一份做好的软件功能,这份程序包几乎是全封闭的,只有一个小小接口可以联通外界,这个接口就是API。

如果我们现在短视频中增加某个功能(比如美颜、萌颜、云存储)但又不想自己亲手去做这个功能,我们可以选择使用这个“SDK”软件包,我们把我们的程序连接上API接口,就可以使用SDK软件包里的功能了。(有点类似于饮料和吸管的感觉)

2、 简洁的解释

重新梳理一下就是:

SDK=放着你想要的软件功能的软件包

API=SDK上唯一的接口

如果你想在自己的短视频app上开发一些SDK软件包中已有的功能,你可以把自己的短视频软件与SDK包上的API接口连接起来,以获得开发包中的功能。

3、 形象的解释

有一杯饮料,它的名字叫做“SDK”。饮料上插着吸管,吸管的名字叫“API”。我们把你的嘴唇叫做“短视频软件”如果你想让SDK饮料杯里的饮料进到你嘴里(让软件拥有SDK中的功能),你必须通过API这根吸管来实现(通过API连接你的软件和SDK软件开发包),否则你就喝不到饮料。

4、不正经解释

源自知乎问题:SDK和API的区别?

如何获取SDK?

软件工程师通常从目标系统开发者那里获得软件开发包。为了鼓励开发者使用其系统或者语言,许多SDK是免费提供的。SDK经常可以直接从互联网下载。有时也被作为营销手段。例如:甲产品或许会免费提供构件SDK以鼓励人们使用它,从而会吸引更多人由于能免费为其编程而购买其构件。

SDK可能附带了使其不能在不兼容的许可证下开发软件的许可证。例如一个专有的SDK可能与自由软件开发抵触。而GPL能使SDK与专有软件开发近乎不兼容。LGPL下的SDK则没有这个问题。

一些经典的SDK