Spotube 中文文档 下载 App

Spotube 插件开发入门——Kotlin/JS + Zipline 环境搭建

前置要求

根据 Spotube 官方插件文档 docs.spotube.cc/getting-started,插件开发需要:

工具最低版本推荐
Kotlin2.0+IntelliJ IDEA 自带
Gradle8+IntelliJ IDEA 自带
JDK17+推荐 OpenJDK 17 或 21
IDEIntelliJ IDEA / Android Studio任何支持 Kotlin 的 IDE
Spotubev5.1.0+(含 v5.1 的 AudioAPI)开发和测试插件用

为什么是 Kotlin/JS

Spotube 插件用 Kotlin Multiplatform 的 JS target——Kotlin 代码编译成 JavaScript,在 Zipline(Kotlin/JS runtime)里运行。相比 Dart/Flutter 扩展:

环境搭建步骤

1. 装 JDK 17+

# 推荐用 Temurin 或 Corretto
# macOS / Linux
brew install --cask temurin17

# Windows(winget)
winget install Microsoft.OpenJDK.17

2. 装 IntelliJ IDEA

IntelliJ IDEA Community 版免费,下载后:

  1. Settings → Plugins → 确认 "Kotlin" 插件已启用(默认就是)
  2. Settings → Build → Gradle → Gradle JVM → 选刚装的 JDK 17

3. 克隆 Spotube 示例插件仓库

Spotube 官方在仓库里提供了一个完整的插件示例:

git clone KRTirtho/spotube
# 示例在 js_plugin_example/ 目录下

或直接克隆示例目录(GitHub 的 Subdirectory 方式)。打开项目后 Gradle 会自动下载依赖(plugin_interfaces、zipline、spotube-gradle-plugin)。

4. 跑通第一个构建

在项目根目录执行:

./gradlew spotubePlugin

构建产物会在 build/distributions/ 下出现 .smplug 文件——这就是你的第一个可安装插件!

项目结构(来自 js_plugin_example)

my-plugin/
├── build.gradle.kts
├── plugin.json
└── src/
    └── jsMain/
        └── kotlin/
            └── myplugin/
                ├── main.kt              # 插件入口
                └── plugin_apis/
                    ├── core/            # CoreAPI 实现
                    ├── audio/           # AudioAPI 实现
                    ├── lyrics/          # LyricsAPI 实现
                    ├── scrobble/        # ScrobbleAPI 实现
                    └── metadata/        # MetadataSearchAPI 实现

关键 Gradle 依赖

Spotube 插件需要三个 Maven Central 依赖:

依赖Group ID目的
plugin_interfacesdev.krtirtho.spotubeSpotube 宿主定义的插件 API 接口 + 数据模型
ziplineapp.cash.ziplineKotlin/JS 插件 runtime
spotube-gradle-plugindev.krtirtho.spotube.gradle-plugin把 Kotlin/JS 编译产物 + plugin.json 打包成 .smplug

plugin_interfaces 版本号跟随 Spotube 主版本——v5.1.0 对应 v5.1.x,v5.0.0 对应 v5.0.x。

快速验证

  1. 构建得到 .smplug → 在 Spotube 插件页点"上传本地插件"
  2. 启用插件 → Spotube 立即加载
  3. 插件如果实现了 MetadataSearchAPI → 搜索某首歌看结果里有没有你的插件返回的
  4. 插件如果实现了 AudioAPI → 播放看音频流是不是来自你的插件

一切正常 = 开发环境就绪。

参考