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

软件开发工具广义上指 辅助 开发某一类软件的相关文档、范例和工具的 集合

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

为了鼓励开发者使用其系统或者语言,许多SDK是 免费 提供的。 软件工程师 通常从目标系统开发者那里获得软件开发包,也可以直接从互联网下载,有时也被作为 营销手段 。例如,营销公司会免费提供构建SDK以鼓励人们使用它,从而会吸引更多人由于能免费为其编程而购买其构件。 SDK可能附带了使其不能在不兼容的许可证下开发软件的许可证。例如产品供应商提供一个专有的SDK可能与自由软件开发抵触。 GPL 能使SDK与专有软件开发近乎不兼容。 LGPL 下的SDK则没有这个问题。 API (Application Programming Interface,应用编程 接口 )其实就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的 命令 (动作)。其实早在 DOS 时代就有API的概念,只不过那个时候的API是以中断调用的形式(INT 21h)提供的,在 DOS 下跑的应用程序都直接或间接的通过中断调用来使用操作系统功能,比如将 AH 置为30h后调用 INT 21h就可以得到DOS 操作系统的版本号。而在Windows中,系统API是以 函数调用 的方式提供的。同样是取得操作系统的版本号,在Windows中你所要做的就是调用GetVersionEx() 函数 。 可以这么说, DOS API是“Thinking in 汇编语言 ”的,而Windows API则是“Thinking in 高级语言”的。 DOS API 是系统程序的一部分,他们与系统一同被载入内存并且可以通过 中断矢量 表找到他们的入口,那么什么是Windows API呢?要说明白这个问题就不得不引入下面要介绍得这个概念—— DLL [1] 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的 入口点 而使用的。 [1]  张志超 , 刘光富 , 单绍龙.基于Speech SDK的Windows语音助手设计与研究.计算机光盘软件与应用,2012 [2]  杨鹏.基于Android的广告与游戏推荐平台SDK的设计与实现.北京邮电大学,2012-05-01 [3] 315晚会|酷音铃声、手机铃声等知名app被曝收集用户隐私 .新浪财经.2020-07-16 [引用日期2020-07-16] [4] 2021年我国手机上网人数为10.29亿人 .央广网 [引用日期2022-03-19] [5] 警惕!一些境外SDK背后的“数据间谍”窃密 .国家安全部 [引用日期2023-10-27]