> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kontext.so/llms.txt
> Use this file to discover all available pages before exploring further.

# 安装

> 把视频 SDK 加入你的 Android 项目，在启动时初始化，并了解它在你的 manifest 中添加了什么。

> [!NOTE]
>
> 你需要一个[发布方账号](https://docs.kontext.so/zh/publishers.md#启动方式很简单)来获取 `publisherToken`。

## 1. 添加 SDK

SDK 发布在 Maven Central。确认仓库中有 `mavenCentral()`，然后在应用模块的 `build.gradle.kts` 中添加依赖：

```kotlin theme={null}
dependencies {
    implementation("so.kontext:video:0.1.0")
    implementation("so.kontext:video-media3:0.1.0")   // 可选：ads.track(exoPlayer)
}
```

`video-media3` 是 [Media3](https://developer.android.com/media/media3) 播放器（`ExoPlayer`、`MediaController`）的适配器。你的内容在这样的播放器中播放时添加它；使用的是你应用自己的 Media3 版本。请固定确切版本：SDK 在 1.0 之前，新的次版本可能改变 API，由你决定何时升级。

> [!NOTE]
>
> SDK 依赖 [KontextKit](https://github.com/kontextso/kontextkit-android)，一组共享的 Android 基础组件（安装 id、设备信息、广告标识符、同意）。Gradle 会自动拉取。两者都不需要你添加 R8 规则：其中没有任何东西通过反射访问。

## 2. 启动时初始化

在你的 `Application.onCreate` 中调用一次 `initialize`。它保存配置并在后台联系服务器；没有任何东西等待它。

```kotlin theme={null}
import so.kontext.video.Configuration
import so.kontext.video.KontextVideo

class App : Application() {
    override fun onCreate() {
        super.onCreate()
        KontextVideo.initialize(this, Configuration("<your-publisher-token>"))
    }
}
```

在 manifest 中用 `<application android:name=".App" …>` 注册这个类。想知道结果，传入一个监听器，或在协程中调用 `awaitInitialization()`：

```kotlin theme={null}
KontextVideo.initialize(this, Configuration("<your-publisher-token>")) { state -> … }

val state = KontextVideo.awaitInitialization()
```

第二次调用会被忽略。初始化完成前发出的广告请求只是等待它，所以你可以立即创建 `VideoAds`。

> [!NOTE]
>
> 请在主线程上调用 `KontextVideo`、`VideoAds` 和 `VideoAd`，这在 Activity、Fragment、Compose 和 `lifecycleScope` 中是默认的。监听器和回调也在主线程上送达。

### 配置

```kotlin theme={null}
Configuration("<your-publisher-token>") {
    logLevel = Configuration.LogLevel.WARNING   // NONE、ERROR、WARNING、INFO、DEBUG
}
```

集成期间使用 `LogLevel.DEBUG`；它会把每次请求、每个广告和每个事件记录到 Logcat，标签为 `KontextVideo`（`adb logcat -s KontextVideo`）。

## 3. SDK 在你的 manifest 中添加了什么

无需配置：manifest merger 会为你添加这些。

* `INTERNET` 和 `ACCESS_NETWORK_STATE`，用于广告请求和连接类型。
* `com.google.android.gms.permission.AD_ID`，让 SDK 能在 Android 13 及以上读取广告标识符。没有运行时弹窗；SDK 从 Google Play 服务读取它，观众选择退出时不发送任何标识符。见 [IFA 与 ATT](https://docs.kontext.so/zh/video/guides/ifa.md)。
* SDK 用于线性广告的自有 Activity。

Android 没有 App Tracking Transparency，也没有 SKAdNetwork：没有 `Info.plist` 步骤，也没有需要添加的归因标识符。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.