SDK是什么?

时间:2024-11-08 11:43:11

最近项目中总是说SDK,第一次接触,今天特来查明。
SDK
中文名:软件开发工具包
英文名:Software Development Kit

是一些项目的软件开发工程师为特定的平台,硬件平台,操作系统,软件框架等开发的开发工具集合以应用于应用软件开发。
软件开发工具包括广义上指辅助开发某一类软件的相关文档,范例和工具的集合。
软件开发工具包是一些被 software engineer用于为特定的软件包,软件框架,硬件平台等创建的开发工具包,里面包含特定平台需要使用的code 示例,方便开发人员熟悉怎么使用当前的开发平台,里面也有当前开发平台需要使用的API和相应的使用文档,SDK是和平台的系统绑定在一起的,编译时同时编译完成。
SDK是硬件平台厂商提供的软件开发支持包,方便客户快速在其硬件平台基础上面开发应用程序,并且SDK里面有相应的例程,并且硬件厂商还提供了相应的库,比如提供打印机影像处理平台的卓然,有Inferno平台,就提供Jbig/pipeline等相应的库。
比如做影像处理平台的美满科技,提供的SDK里面就包含image pipeline/PIE/PIP等等。

1. SDK是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合。它可以简单的为某个程序设计语言提供应用程序接口API的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件。SDK还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。
**2.**最开始的时候,API的集合我们就称之为SDK,例如mac提供的API集合就称之为mac SDK。随时间的演化,现在的SDK指的是以一组API作为输入,以另外一组Api作为输出的中间件。
**3.**例如,新浪微博提供了一组Http请求形式的Api。由于现如今构造Http请求也算是一件麻烦事,所以逐渐就有了“新浪微博IOS SDK”。这个SDK封装了新浪微博的Http接口,提供了一组Objective C或者Swift形式接口。

在这里插入图片描述

系统与SDK

DLL(Dynamic Link Library,动态链接库,格式为.dll)也是一种可执行文件,跟.exe文件不同的是,.dll文件不能执行,它通常由.exe在执行时装入(运行时加载的动态库),内含有一些资源以及可执行代码(API函数的执行代码)等。为了使用DLL中的API函数,我们必须要有API函数的声明(.H)和其导入库(.LIB),导入库是为了在DLL中找到API的入口点而使用的。
所以,为了使用API函数,我们就要有跟API所对应的.H和.LIB文件,而SDK正式提供了一整套开发Windows应用程序所需的相关文件,范例和工具的“工具包”(就是使用这要工具包,我们可以很快的在其平台上面编写出应用程序,直接操作平台的各种设备,而不需重新编写操作设备的函数或驱动或算法,只专注与我们产品的应用程序的逻辑就可以了)。由于SDK包含了使用API的必需资料,所以人们也常把仅使用API来编写Windows应用程序的开发方式叫做“SDK编程”。

(URL Scheme):

iso是一个封闭的系统,苹果选择沙盒来保障用户的隐私和安全,App只能访问自己的沙盒,但同时也阻碍了应用间合理的信息共享。沙盒机制是一种安全体系,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不可以访问其他地方的内容。所有的非代码文件都保存在这个地方,比如图片,声音,属性列表和文本文件等。
应用程序通过各个APP设计的符合苹果的统一规范的URL Scheme,来实现信息的传递。URL Scheme是为方便app之间互相调用而设计的。如果一个APP需要提供一个共别的APP访问的功能或者数据,那么必须在APP定义一个相对应的URL Scheme。你可以通过一个类似URL的链接,通过系统的OpenURL来打开该app,并可以传递一些参数。
每个URL必须能唯一标识一个APP,如果你设置的URL与别的APP的URL冲突,此时,你的APP不一定会调用起来,原因是当APP在安装的时候就已经在系统里面注册了此APP的URL Scheme,如果你的URL Scheme与其他的一致但是是后安装的,那么系统不会调用你的APP,因为你的APP设置的URL Scheme被覆盖了。

:

在Android平台上开发Android App,我们必须从官网下载Android SDK,然后利用这套SDK提供给的API来调用系统能力,比如我们通过Android SDK来调用系统屏幕一直[常亮]的功能,如果没有这个工具箱提供的这个工具,那就无法实现这个功能了。
所以说SDK在嵌入式开发中是一种平台厂商提供给第三方的一种开发软件包,里面包含对开发板硬件的访问操作,一些针对第三方业务的算法操作,比如影印机的图像处理算法,DMA传输模块等等,里面包含了很多动态库或者静态库,还有就是针对该平台针对应用场景编写的使用范例,第三方用户可以使用平台SDK提供的这些便利,快速的实现自己的产品,节省了时间,降低了开发的成本。

SDK就是针对某一应用场景和开发版平台提供的demon/库等让应用程序员或软件公司快速实现自己产品的开发包。
就先windows开发中,微软提供了大量的API一样,就像安卓中的SDK一样,可以使用提供好的API快速实现自己应用软件。