# 安装 SDK

选择你所用语言的原生包管理器。Go、JavaScript 和 C/C++ 直接使用作为基础的 Go、JS/WASM 和 CGo SDK。其他语言的包封装的正是这几套实现。

**发布状态：**规范名称 `@urnetwork/sdk` 和新的各语言包正在等待发布。下面的命令就是该发布版的安装契约；每份语言指南也说明了如何在本地构建包。套接字示例需要一个包含新套接字 API 的发布版。

| 语言 | 原生安装方式 | 指南 |
| --- | --- | --- |
| C | `vcpkg add port urnetwork-sdk` | [C 指南](/docs/examples/c) |
| C++ | `vcpkg add port urnetwork-sdk` | [C++ 指南](/docs/examples/cpp) |
| C# | `dotnet add package URnetwork.SDK` | [C# 指南](/docs/examples/csharp) |
| Go | `go get github.com/urnetwork/sdk/v2026@latest` | [Go 指南](/docs/examples/go) |
| Java | `implementation("io.ur:urnetwork-sdk:<version>")` | [Java 指南](/docs/examples/java) |
| JavaScript | `npm install @urnetwork/sdk` | [JavaScript 指南](/docs/examples/javascript) |
| Kotlin | `implementation("io.ur:urnetwork-sdk:<version>")` | [Kotlin 指南](/docs/examples/kotlin) |
| Python | `pip install urnetwork-sdk` | [Python 指南](/docs/examples/python) |
| Ruby | `gem install urnetwork-sdk` | [Ruby 指南](/docs/examples/ruby) |
| Rust | `cargo add urnetwork-sdk` | [Rust 指南](/docs/examples/rust) |
| Swift | `.package(url: "https://github.com/urnetwork/sdk-swift", exact: "<version>")` | [Swift 指南](/docs/examples/swift) |
| TypeScript | `npm install @urnetwork/sdk` | [TypeScript 指南](/docs/examples/typescript) |

这些不带限定的命令会选择默认/稳定发布版。要安装预览版，请使用 `npm install @urnetwork/sdk@nightly`、`pip install --pre urnetwork-sdk`、`dotnet add package URnetwork.SDK --prerelease` 或 `gem install urnetwork-sdk --pre`。Cargo、Maven 和 SwiftPM 可以钉住确切的预览版本。预览版的包名与稳定版的包名相同。

## Android 上的 Java 和 Kotlin

请使用 `io.ur:urnetwork-sdk-android:<version>`，而不是桌面 JVM 的坐标。Android AAR 由 gomobile 构建；桌面 Java/Kotlin 在 CGo 运行时之上使用 JNA。Swift 使用现有的 Apple XCFramework。

## 包内容

Python wheel、Ruby gem、NuGet 包和桌面 JVM 包都自带它们所支持的原生库。Rust crate 在构建时下载一个钉住版本、经过校验和验证的原生资产，并把它嵌入可执行文件。使用方既不需要 Go 编译器，也不需要手动下载 DLL。支持范围仅限该发布版所包含的平台；Linux 包会注明各自的 libc 下限。

npm 包内含与之配对的 Go/WASM 运行时和 TypeScript 声明，并附有可运行的 Node 和浏览器示例。两者都使用一台已配置的托管 Device。浏览器原生的 fetch API 没有自定义套接字工厂；它的 Axios 请求适配器和 Direct Sockets 示例，见该语言的 HTTP 集成指南。

## 示例与套接字行为

打开[示例浏览页](/docs/examples)，查看每种语言的安装 README、`socket/README.md` 运行指南和可执行源文件。内核套接字与 Device 套接字有何区别，见[套接字](/docs/socket)，其中包括 UDP 在 IPv4 和 IPv6 上竞速发送第一个数据报时可能出现的重复投递。

从源码安装、钉住版本以及使用其他包管理器，请参阅上面的各语言指南。C/C++ 配方发布在一个已配置的第一方 Conan 远端或 vcpkg Git 注册表中；运行上面的命令之前，先添加一次该远端/注册表。要收录进上游的公共集合，需要其维护者接受。各语言指南包含这项设置，以及本地 CMake 归档安装。
