什么是SDK?

SDK(Software Development Kit,软件开发工具包)本质上是一套帮助开发者快速开发某个软件、平台或设备应用的工具集合

可以把 SDK 理解成一个已经封装好的"工具箱",开发者不用自己从零开始造轮子,只需要调用 SDK 提供的接口即可。

一、SDK 里面通常有什么?

一个完整的 SDK 一般包含下面这些内容:

组成 作用
API(接口) 给开发者调用的函数或类
库文件(.lib、.a、.dll、.so) 已经编译好的功能实现
头文件(.h、.hpp) 声明接口,供程序编译
文档 告诉开发者如何使用
Demo 示例 演示 SDK 的使用方法
配置文件 参数配置
工具程序 调试、测试、生成代码等工具

例如一个机器人 SDK:

RobotSDK/

├── include/

│ Robot.h

│ Navigation.h

│ Battery.h

│ Voice.h

├── lib/

libRobotSDK.so

├── examples/

│ demo.cpp

├── docs/

API.md

└── config/

robot.json

二、SDK 的作用

把复杂的底层实现封装起来,让别人通过简单的接口就能完成开发。

例如控制机器人移动。

没有 SDK:

APP

TCP Socket

JSON协议

发送数据

机器人解析

驱动电机

开发者需要:

建立 TCP

设计协议

拼 JSON

发包

收包

超时处理

重连

状态同步

工作量非常大。

有 SDK 后:

cpp 复制代码
Robot robot;

robot.connect();

robot.moveForward(0.5);

SDK 内部已经完成了:

moveForward()

生成JSON

TCP发送

等待ACK

错误处理

日志

返回结果

开发者根本不用关心底层。

三、SDK 和 API 的区别

很多人容易混淆这两个概念。

API 是接口

例如:

cpp 复制代码
robot.connect();

robot.move();

robot.stop();

这些函数就是 API。

API 是"怎么调用"

SDK 是整个工具包

SDK 包含:

API

动态库

文档

Demo

工具

可以理解成:

SDK

├── API

├── 库

├── 文档

├── 示例

└── 工具

所以:

API 是 SDK 的一部分。

**四、**为什么公司要开发 SDK?

假设一家机器人公司生产机器人。

如果没有 SDK:

每个客户都要:

研究通信协议

自己写TCP

自己写JSON

自己解析状态

自己做重连

不同客户都会重复做同样的事情。

如果公司提供 SDK:

客户直接:

cpp 复制代码
Robot robot;

robot.connect();

robot.gotoPoint(...);

几分钟就能开始开发。

因此 SDK 能:

降低开发门槛

缩短开发周期

隐藏底层实现

保持接口统一

减少使用错误

提高兼容性

五、SDK 的内部一般是怎样实现的?

以机器人 SDK 为例,可以分为几层:

用户程序

Robot(公开接口)

┌──────────┴──────────┐

▼ ▼

Navigation Motion

Voice Battery

CommandService

Protocol(JSON)

TcpClient

Robot

各层职责如下:

Robot:对外统一入口。

Navigation / Motion / Voice:按功能划分模块,提供易用的 API。

CommandService:将业务请求转换成具体命令。

Protocol:负责协议封装与解析(如 JSON、Protobuf)。

TcpClient:负责网络通信、重连、收发数据。

Robot:机器人端接收命令并执行。

用户只需要调用最上层接口,而不用了解下面几层的实现细节。

相关推荐
独断万古他化2 个月前
大模型接入指南:API、本地部署与 SDK 三种接入
大模型·llm·api·sdk
SunnyRivers3 个月前
快速入门 openai agents sdk
openai·sdk·agents
熊猫钓鱼>_>3 个月前
GenUI:从“文本对话”到“可操作界面”的范式转移
开发语言·人工智能·agent·sdk·vibecoding·assistant·genui
うちは止水3 个月前
linux yocto bitbake构建系统生成SDK包
linux·sdk·yocto·bitbake
humors2213 个月前
各厂商工具包网址
java·数据库·python·华为·sdk·苹果·工具包
LcGero3 个月前
Cocos Creator 三端接入穿山甲 SDK
sdk·cocos creator·穿山甲
AmyLin_20014 个月前
【pdf2md-3:实现揭秘】福昕PDF SDK Python 开发实战:从逐字符提取到 LR 版面分析
开发语言·python·pdf·sdk·markdown·pdf2md
AmyLin_20014 个月前
【pdf2md-1:开篇】高保真PDF转MarkDown附源码(标题/表格/图片全还原)
python·pdf·github·sdk·pdf2md·文档工具
明哥说编程4 个月前
用 C# 扩展 Dynamics 365 Copilot:自定义插件与场景
sdk·dynamics 365·插件开发·copilot 扩展·dataverse 数据交互