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/
│
├── 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:机器人端接收命令并执行。
用户只需要调用最上层接口,而不用了解下面几层的实现细节。