SDK究竟是什么?
最近经常听到同事或开发同事讲到SDK,所以挺好奇SDK到底什么?
所以百度了一下,搜索到一篇文章,讲解了很详细,现在跟大家分享一下
转载链接:SDK究竟是什么? - 知乎 (zhihu.com)
SDK是什么?
SDK,即Software Development Kit的缩写,译作软件开发工具包。软件开发工具包是一个覆盖面相当广泛的名词,你甚至可以这么理解:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做SDK。
看到这儿你可能没懂SDK究竟是什么,别着急,慢慢往下看~
相信有过java学习经历的小伙伴们都知道,要运行java需要先在电脑上安装jdk,而jdk其实就是java SDK 。其安装过程就是下载一个EXE(Windows下)的应用程序,看起来好像jdk是一个应用程序。
然而实际上这个应用程序只是jdk的安装向导,它通过后台操作帮你在电脑上安装了Java的运行环境、工具和Java基础的类库,以上这些东西组合起来才是JDK的核心内容。
再举一个例子,我们的手机每天都会收到许多来自APP或系统的新闻推送、促销活动广告、短信验证码等等,它们大多都属于法规条文里规定的“第三方应用或服务”。
正是这些集成在APP里的第三方工具包,能够协助APP更加高效率、低成本地实现注入导航、支付、统计、广告等一系列功能。SDK就是这个例子里说到的第三方应用或服务。
相信通过以上两个例子,大家已经明白SDK究竟是什么了,自然也能明白,SDK并不单单是一个开发工具或程序。
SDK与API的区别
如果你还记得前边文章中企通查为大家介绍过的API,可能会有点疑惑:API可以调用第三方程序,SDK也可以使用第三方的软件,这两者之间有什么区别吗?
简单地讲,API是前端调用后端数据的一个通道,就是我们俗说的接口,通过这个通道可以无需调用源代码直接访问到后端的数据。
而SDK相当于是一个开发者集成的环境,API则是基于SDK之下的数据接口,可以在SDK的环境之下调用API数据。
你可以把SDK想象成一个虚拟的程序包,在这个程序包中有一份做好的软件功能,这份程序包几乎是全封闭的,只有一个小小接口可以联通外界,这个接口就是API。
SDK的组成
一个完整的SDK应该包括以下内容:
1.接口文件和库文件
笼统地说就是先前提到过的API。通过将底层的代码进行封装保护,提供给用户一个调用底层代码的接口。
2.帮助文档
用来解释接口文件和库文件(即API)的功能,以及介绍相关的开发工具,操作示例等。
3.开发示例
即简单的成品DEMO展示,包括源代码。
4.实用工具
通常是指用来协助用户进行二次开发的工具,比如二次开发向导、API 搜索工具、软件打包工具等。
SDK与信息安全
目前在国内互联网环境中大部分的SDK都是免费的,为了鼓励开发者使用其系统或者语言,许多SDK是免费提供的。
软件工程师通常从目标系统开发者那里获得软件开发包,也可以直接从互联网下载。
图:来源于《常用第三方SDK手机使用个人信息测评报告》
从SDK的被使用情况来看,App对SDK有较强的依赖性,SDK安全俨然已经成为整个移动互联网生态中极其关键的一环,它们收集哪些信息、如何使用和保护这些信息也就十分重要。
因此,由第三方SDK引入的安全问题也不容忽视。比如由于开发者的安全能力水平有限而导致的SDK安全漏洞;或是开发者故意预留“后门”,以便收集用户信息或执行越权操作。
截至目前,国内对于第三方SDK超出必要范围收集其他信息尚没有明确的相关条文规定。
奥德塔动态大数据资源中心基于互联网+大数据+人工智能技术构建,通过分布式数据采集集群、数据特征提取、机器学习和深度学习算法模型、NLP文本分析等技术实现了数据的实时更新、高度关联、动态下载、主动推送,为企业采购风控、销售客户评估、Al精准获客、精准招商、投融资、高校科研机构、政府事业单位提供了全方位的数据支持和数据应用解决方案;基于数据资源中心和分析专家团队为客户提供了行业产业分析报告、发展趋势报告和相关指数报告等专业咨询服务支持。