在 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。