在 DeepSeek Harness (DSH) 的生态中,开发者经常需要让智能体处理具体的构建任务。本地环境配置繁琐,不同项目依赖版本不一,容易导致“在我机器上能跑”的问题。这个插件解决了“在任意 DSH 会话中,直接将安卓项目文件夹构建为 APK”的问题。它由 memories-coder 维护,遵循 MIT 协议。
核心功能¶
插件主要提供以下能力:
- 工程识别:自动识别 Gradle 安卓工程,支持
settings.gradle、settings.gradle.kts和build.gradle,可选支持 Gradle Wrapper。 - 工具链下载:自动准备构建所需的工具链。优先使用系统环境变量(
JAVA_HOME、ANDROID_HOME等),否则自动下载 Temurin JDK(默认 17)、Android cmdline-tools、platform-tools、build-tools 和 platform 到会话工作目录下的.android-build文件夹中,不污染用户目录。 - 构建与输出:运行
assemble<Variant>(默认debug,支持release)构建产物,并将 APK 复制到指定输出文件夹。 - 非 ASCII 路径处理:当工程路径包含非 ASCII 字符(如中文)时,插件会自动将工程和 SDK staging 到 ASCII 临时目录进行构建,构建完成后将 APK 复制回原输出文件夹,无需手动处理。
- 缓存机制:所有下载的工具链、Gradle 发行版以及依赖缓存(
GRADLE_USER_HOME)均存储在下载文件夹中,支持复用,减少重复下载。
安装¶
安装此插件需要 DSH 环境已安装 pnpm 并在 PATH 中。
方法一:使用 DSH 自然语言指令
最简单的方式是直接对 DSH 下达指令:
帮我安装这个DSH插件:https://github.com/memories-coder/DSH-plugin-android-apk.git
方法二:手动安装
在 DSH 宿主机器上执行以下命令(请将 <插件路径> 替换为实际路径):
dsh plugin --profile web add "<插件路径>/DSH-plugin-android-apk-main"
说明:
dsh plugin实际是在 profile 目录里执行pnpm add <spec>,然后把声明了dsh.bundle.patch的包加入dsh.profile.bundles。
注意:安装后必须重启 DSH 才能生效。
使用方法¶
安装完成后,可以通过自然语言指令或显式调用工具函数来使用。
自然语言指令:
直接对 DSH 说:
把 `xxx` 文件夹构建成 APK
显式调用工具:
build_android_apk(project="myapp", variant="debug", clean=false)
参数说明:
| 参数 | 说明 | 默认值 |
|---|---|---|
project |
安卓工程文件夹路径(相对路径基于会话工作目录) | 必填 |
variant |
Gradle 变体(debug / release) | debug |
clean |
是否先 clean 全量重建 | false |
downloadDir |
工具链下载目录 | <workspace>/.android-build |
apkOutputDir |
APK 复制目录 | <workspace>/apk |
gradleVersion |
无可用 Wrapper 时下载的 Gradle 版本 | 8.9 |
compileSdk |
覆盖自动检测的 compileSdk | 自动检测,未知时 34 |
配置与注意事项¶
插件支持通过 cordis.patch.yml 里的 config 进行全局配置。例如:
config:
defaultVariant: debug
jdkMajor: 17
gradleVersion: "8.9"
注意事项:
1. 依赖网络:Gradle 依赖(AGP、AndroidX)从 dl.google.com 拉取,网络受限时可能超时。插件会自动尝试镜像回退,但建议配置代理以保证速度。
2. JDK 版本:默认使用 JDK 17。如果工程需要 JDK 8 或 11,请修改 config 中的 jdkMajor 或提前配置好 JAVA_HOME。
3. pnpm 要求:dsh plugin 命令依赖于 pnpm。
4. 非 Windows 支持:插件同样支持非 Windows 宿主(通过 gradlew/gradle 脚本 + tar 解压)。
5. 构建失败排查:如果遇到构建失败,请检查 pnpm 是否可用,并确认安装后已重启 DSH。