API_SDK
摘自知乎中的注解
----------------------------------------------------
要开发一个Baby,SDK(就是想要的软件功能的软件包)
API--->>>sdk上唯一的接口
----------------------------------------------------
API是一个函数,有其特定的功能,而SDK是一个很多功能函数的几何体,一个工具包
API是数据接口,SDK相当于开发集成工具环境,要在SDK的环境下来调用API.
API接口对接口过程中需要的环境需要自己提供,SDK不仅提供开发环境,还提供很多API。
简单功能调用,API调用方便快捷,复杂功能调用,SDK功能齐全。
----------------------------------------------------
SDK(software development kit),中文可译为“软件开发工具包”。
一般都是一些被软件工程师用于为特定的软件包、软件架构、硬件平台、操作系统等建立应用软件的开发工具的集合。通俗点是指由第三方服务商提供的实现软件产品某项功能的工具包。在编辑器里敲代码的时候它会自动补全代码、自动检查错误。
通常SDK是由专业性质的公司提供专业服务的集合,比如提供安卓开发工具、或者基于硬件开发的服务等。也有针对某项软件功能的SDK,如推送技术、图像识别技术、移动支付技术、语音识别分析技术等,在互联网开放的大趋势下,一些功能性的SDK已经被当作一个产品来运营。
开发者不需要再对产品的每个功能进行开发,选择合适稳定的SDK服务并花费很少的经历就可以在产品中集成某项功能。
API(application programming interface),中文可译为“应用程序编程接口”。提供用户编程时的接口,是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。DOSAPI 是“Thinking in汇编语言”的,而 Windows API 则是“Thinking in 高级语言”的,我们通常指的是Windows API ,DOSAPI是系统程序的一部分,他们与系统一同被载入内存并且可以通过中断矢量表找到他们的入口,那么关于 Windows API又是 呢?要说明白这个问题就不得不引入这个概念——DLL
DLL( Dynamic Link Library),中文译为“动态链接库”。在windows环境下含有大量 .dll格式的文件,这些文件就是动态链接库文件,其实也是一种可执行文件格式。跟 .exe 文件不同的是,.dll文件不能直接执行,他们通常由 .exe 在执行时装入,内含有一些资源以及可执行代码等。其实 Windows 的三大模块就是以DLL的形式提供的(Kernel32.dll,User32.dll,GDI32.dll),里面就含有了 API函数的执行代码。为了使用 DLL 中的 API 函数, 必须要有 API 函数的声明(.H)和其导入库(.LIB),导入库可以先这样理解:导入库是为了在 DLL 中找到 API 的入口点而使用的。
实际上SDK包含了API的定义,API定义一种能力,一种接口的规范,而SDK可以包含这种能力、包含这种规范。但是SDK又不完完全全只包含API以及API的实现,它是一个软件工具包,它还有很多其他辅助性的功能。
为了使用 API 函数,我们就要有跟 API 所对应的 .H 和 .LIB 文件,而 SDK 正是提供了一整套开发 Windows 应用程序所需的相关文件、范例和工具的“工具包”。
SDK 包含了使用 API 的必需资料,所以人们也常把仅使用 API 来编写 Windows 应用程序的开发方式叫做“SDK编程”。而API和 SDK 是开发Windows应用程序所必需的东西,所以其它编程框架和类库都是建立在它们之上的,比如VCL 和MFC,虽然他们比起“SDK 编程”来有着更高的抽象度,但这丝毫不妨碍它们在需要的时候随时直接调用 API 函数 。
----------------------------------------------------
假如你感到非常无聊想做点爱做的事,那么你大概有两种选择。 //咋听起来像当初对Grace 讲的话,弹指一挥,十年过去了 ,
第一,准备游戏机、各种外设、软件、电视等各种工具,然后玩一天游戏。这些工具结合起来就叫做Sweet Daydreaming Kit(快乐大礼包),和Software Development Kit(软件开发工具包)一样,都简称SDK。
第二,找个女朋友,让她提供Awesome P*ssy Interface(名字很污的接口),和Application Programming Interface(应用编程接口)一样,都简称API。
当然还有最后的选择就是自己从无到有创造点什么东西。但一般来说,完全从无创作是不可能的,总需要一些工具。就算是从操作系统开始做的微软,也需要Intel提供的指令集……
API 即应用编程接口(Application Programming Interface)。通常是某个系统对开发者开放的函数式编程的声明以及相关功能的二进制实现。比如:
Windows API,总的来说所有的Windows 可供代码调用的功能都以C函数声明的形式存放在<Windows.h> 以及相关的头文件中进行声明。同时提供lib 和dll 供开发者静态/动态地在自己的应用中调用这些功能的实现。
SDK 即软件开发包(Software Development Kit)。通常是为了方便开发者为系统开发应用而提供的API、开发辅助工具以及文档的集合。从这方面来说,SDK 的内涵要大于API。比如:
Windows SDK,除了包含Windows API 即<Windows.h>系列头文件以及.lib 和.dll 以外还有可供开发者查阅的文档,以在线/离线的方式向开发者提供。同时还包括一系列的工具,比如代码签名工具集,调试工具集Debugging Tools for Windows,性能工具集Windows Performance ToolKit 等等。开发者在编写代码的过程可以参考SDK 的开发文档,了解API 的功能,同时还可以使用SDK 中的工具帮助自己实现某些数据的转换、代码的声明等等。在代码编写完成之后,可以通过各种工具集对代码的稳定性、性能等等各个方面进行验证和分析。
Java SDK 简称JDK。内含有Java 定义的基础功能包,如http://Java.Io 等,这属于API的部分。在JDK的bin 目录下还有jmap、Jstat、jvisualvm 等一系列工具帮助开发者动态地分析Java 代码的运行情况。同时,JDK 中还包含了大量的文档,对Java API 和各种工具的使用有完整详细的说明。
Android SDK,iOS SDK,.NET Framework SDK 等等内涵基本上都是一样的。
-----------------------------------------------------
假设你要做一款WiFi可视门铃,APP功能有:
1. 视频对讲
2. APP开锁
3. 访客截图
4. 移动侦测
5. 触发警报
6. 人脸识别
首先,要做1-6的API, 组成了SDK, 然后根据SDK开发Project File项目文件,制作APP, 门铃上写入Firmware固件(Firmware是门铃的软件,是SDK和门铃沟通的桥梁)。
如下图: