HarmonyOS鸿蒙Next中SDK和API的区别是什么?

HarmonyOS鸿蒙Next中SDK和API的区别是什么? 使用场景有限制吗?能否互相替代?

15 回复

很多开发者刚开始会把 SDK 和 API 当成一回事,但实际上它们的层级不同。

一句话概括:

API 是“接口规范”,SDK 是“开发工具包”。

SDK 里面通常包含 API,但 API 不一定有 SDK。


先用一个鸿蒙开发的例子理解

API

例如:

import { router } from '@kit.ArkUI'

router.pushUrl({
  url: 'pages/Detail'
})

这里的:

router.pushUrl()

就是 API。

API定义了:

你传什么参数
我返回什么结果
如何调用

相当于一份能力说明书。


SDK

例如你安装的:

HarmonyOS SDK

里面包含:

  • ArkUI API
  • Account Kit API
  • Push Kit API
  • 编译器
  • 模拟器
  • 调试工具
  • 文档
  • 示例代码

这些整体才叫:

HarmonyOS SDK

SDK 是开发工具集合。


一个形象比喻

假设你买车:

API

是方向盘、油门、刹车

规定:

踩油门加速
踩刹车减速

属于使用接口。


SDK

是整个汽车维修工具箱

里面有:

扳手
螺丝刀
诊断仪
说明书
维修手册

帮助你造车和修车。


二者关系

通常:

SDK
 ├─ API
 ├─ 示例代码
 ├─ 工具链
 ├─ 文档
 └─ 调试工具

所以:

SDK > API

SDK 是大集合。

API 是其中一部分。


能否互相替代?

一般不能完全替代。


场景1:只有API

例如:

DeepSeek API
OpenAI API
高德地图 Web API

给你的是:

https接口
REST接口

你自己写:

fetch()
axios()
request()

调用。

这种情况:

只有API
没有SDK

完全没问题。


例如:

const res = await fetch(url)

直接调用接口。


场景2:API + SDK

例如:

华为推送

你可以:

直接调用REST API

也可以:

接入 Push Kit SDK

SDK已经帮你封装好了:

认证
签名
错误处理
重试
缓存

开发效率更高。


场景3:只能SDK

例如:

HarmonyOS Camera Kit
ArkUI
Audio Kit

这些能力直接依赖系统框架。

你不可能自己发HTTP请求:

调用相机
调用麦克风
打开Ability

必须依赖 HarmonyOS SDK。


实际开发怎么选?

优先SDK

例如:

华为账号登录
推送
地图
支付

如果官方提供SDK:

优先SDK

原因:

  • 文档完善
  • 错误处理完整
  • 版本兼容性好
  • 更新简单

API适合

例如:

AI大模型
天气服务
企业后台
微服务

这类:

HTTP API

反而更灵活。


鸿蒙开发中最容易混淆的一个概念

很多人会说:

HarmonyOS API 23
HarmonyOS API 24

这里的 API 不是接口。

而是:

SDK版本等级

例如:

{
  "targetSdkVersion": "6.1.0(24)"
}

这里的:

API 24

表示:

SDK能力等级

不是:

router.pushUrl()

这种编程接口。

这是鸿蒙、Android里经常让新手混淆的地方。


对于你经常接触的 HarmonyOS 开发来说,可以简单记忆:

名称 本质 示例
API 功能接口 router.pushUrl()、audio.createRenderer()
SDK 开发工具包 HarmonyOS SDK、Map Kit SDK、Push Kit SDK
关系 SDK包含API 一个SDK里往往有成百上千个API
能否替代 一般不能 SDK通常依赖API,但API不一定需要SDK

所以你在开发中看到:

Map Kit SDK
Push Kit SDK
Account Kit SDK

其实本质上都是:

SDK(工具包)
    ↓
暴露很多API给你调用

这是最准确的理解。

更多关于HarmonyOS鸿蒙Next中SDK和API的区别是什么?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


先说区别:

1. API(Application Programming Interface)

是什么:系统提供的功能调用接口(如音频、相机、UI、网络、Sendable 等)。

作用:告诉你能调用什么功能、怎么调用。

版本标识:API Version(如 API 23)

例子:audio.createAudioCapturer()、Sendable、TaskPool

2. SDK(Software Development Kit)

是什么:完整开发工具包

包含:编译器、调试器、系统镜像、全套 API、工具链、库文件。

作用:让你能开发、编译、运行、打包鸿蒙应用。

版本标识:HarmonyOS Version(如 6.1.0)

关系:一个 SDK 对应一个固定的 API 版本

再简单说一下使用场景和限制:

开发必须依赖 SDK,没有 SDK 无法编译运行。

功能调用必须用 API,API 决定你能用哪些能力。

高版本 API 功能不能在低版本 SDK 上运行。

API 是随 SDK 一起升级的,不能单独升级 API。

完整。SDK必须提供API供SDK使用者调用。

SDK是第三方给你用的内容,是一种统一的含糊的说法。里面可以包括各种功能,函数,方法。

api 是函数的统称,你要想调用某个功能,需要执行某个函数,这个函数就可以称之为api。

SDK是实现功能的基础,就像一个游乐场,API是开发接口,就像游乐场的每个游玩项目的入口,从入口进去才可以使用里面的设施(软件功能)。

API 是接口契约,SDK 是工具包。可以简单理解为:API 告诉你“能调用什么、参数和返回值是什么”;SDK 则通常包含 API 封装、库文件、类型声明、示例、文档、调试或构建工具等。

使用场景上,调用系统能力或平台服务时,你实际写代码调用的是 API,但往往需要先安装对应 SDK,才能拿到编译依赖、类型定义和运行所需库。两者不能完全互相替代:只有 API 文档没有 SDK,可能无法编译或缺少工具链;只有 SDK 不看 API,也不知道正确调用方式和约束。

实际开发中建议按平台文档选择对应版本 SDK,再以 API 参考确认具体接口、权限、设备限制和起始 API 版本。

HarmonyOS的分布式文件系统让我在多设备间传输文件变得轻松无比。

软件开发的两个核心。互相关联。不能相互替代,

一句话简单明了,sdk 包含 api。多个api接口打包成一个库就是sdk了。

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17,

API 是键盘 / 鼠标(接口),SDK 是整台电脑 + 全套外设 + 驱动工具包

SDK是第三方给你用的内容,是一种统一的含糊的说法。里面可以包括各种功能,函数,方法。

api 是函数的统称,你要想调用某个功能,需要执行某个函数,这个函数就可以称之为api。

首先 SDK和API不能互相替代;
** SDK**是一个完整的开发工具集合,它包含了开发鸿蒙应用所需的各种资源,如API库、开发工具(如编译器、调试器)、文档、示例代码等;

** API**是SDK中的核心组成部分,是一组预定义的函数、协议和工具,让开发者能够调用系统或服务提供的特定功能,而无需了解其内部实现细节

在HarmonyOS Next中,SDK(软件开发工具包)是完整的开发资源集合,包含API、编译工具、调试器、模拟器及示例代码等。API(应用程序编程接口)是SDK中定义的具体功能接口,用于调用系统服务或组件。简单说,SDK是工具箱,API是工具箱中的具体工具。

在HarmonyOS Next中,SDK(软件开发工具包)是包含开发、调试、打包等工具及文档、示例、运行时库的完整集合,而API(应用程序编程接口)仅指可供开发者调用的具体功能接口集合。API是SDK的组成部分之一,但SDK还包含编译器、模拟器、调试工具等。
使用场景上,SDK用于搭建开发环境、构建应用、模拟运行;API则是在代码中调用来实现特定功能,如界面渲染、数据存储、设备能力等。两者有明显边界,不能互相替代。没有SDK则无法开发应用,没有API则无法实现具体功能逻辑。

回到顶部