# 开发环境：新机初始化

在一台新机上从零把项目跑通的总入口。本仓库**不含任何依赖**（`node_modules`、`src-tauri/target`、`relay/node_modules`、Android `build`/`.gradle` 等均已剔除），依赖按下面各步自行安装。

各部分按需，只做桌面开发只看第 1、2 节即可。分主题的细节见同目录其余文档（01 桌面编译 / 02 移动端编译 / 03 中继 / 04 微信 / 05 移动端使用）。

## 1. 放置项目

把项目放到任意目录，下文记作 `<PROJECT>`（例如 `D:\dev\CCGUI`）。

> 注意：`build-mobile-html.ps1`、`build-android.ps1` 目前把项目路径**写死为 `F:\CCGUI`**（另有 JDK / Gradle 的本机绝对路径）。若你的 `<PROJECT>` 不是 `F:\CCGUI`，跑脚本前必须改，见第 4 节。桌面开发（第 2 节）不受影响。

## 2. 桌面端（必需）

1. 装工具链：
   - Node.js 20 LTS：<https://nodejs.org>
   - Rust stable：<https://rustup.rs>，装后 `rustup default stable`
   - Microsoft C++ 生成工具（含 MSVC 与 Windows SDK）；WebView2 运行时（Win10/11 通常已内置）
2. 装前端依赖（`<PROJECT>` 根）：`npm install`
3. 开发运行：`npm run tauri dev`
4. 编译发布包：`$env:CARGO_BUILD_JOBS=2; npm run tauri build`
   - Rust crates 首次构建自动拉取，无需手动装。
   - 产物：`src-tauri/target/release/bundle/nsis/*.exe`

细节见 [01-桌面端-编译.md](01-桌面端-编译.md)。发布前记得三处版本号同步（`package.json` / `src-tauri/Cargo.toml` / `src-tauri/tauri.conf.json`）。

## 3. Claude Code 符号索引（可选，仅影响开发体验）

本项目用一个名为 `ccgui-index` 的 MCP 服务给 Claude Code 提供本仓库的符号索引。它复用 CCGUI 桌面程序自带的 `--mcp-index` 模式，因此需要先有一个可执行的 `ccgui.exe`（装了发布版，或本地 `tauri build` 出来的）。

1. 复制 `.mcp.json.example` 为 `.mcp.json`。
2. 改两处为本机实际值：
   - `command`：指向已安装的 `ccgui.exe`（一般在 `%LOCALAPPDATA%\CCGUI\ccgui.exe`，即 `C:\Users\<你>\AppData\Local\CCGUI\ccgui.exe`）。
   - `args` 里的 `--project`：指向 `<PROJECT>` 的绝对路径。
3. `.mcp.json` 含机器绝对路径，不入库（已在忽略之列）。不配也不影响编译运行，只是 Claude Code 少了符号索引。

## 4. 移动端 APK（可选）

1. 装工具链：
   - JDK 17（设 `JAVA_HOME` 指向其安装目录）
   - Android SDK，compileSdk 34（Android Studio 或 cmdline-tools）
   - Gradle 8.x（实测 8.7 通过）
2. 配置本机 SDK 路径：复制 `android/local.properties.example` 为 `android/local.properties`，把 `sdk.dir` 改成本机 SDK 路径（如 `sdk.dir=D\:\\Android\\Sdk`）。
3. **签名（可选）**：复制 `android/keystore.properties.example` 为 `android/keystore.properties`，按实际填写密钥库路径与口令（该文件与 `.jks` 均不入库）。不配也能出包——`release` 自动回退 debug 签名，仅供自测，不要对外分发。
   - 要正式发布签名包：先生成自己的密钥库（命令见 [02-移动端-编译.md](02-移动端-编译.md)），再在 `keystore.properties` 里指向它。
4. **改脚本里的硬编码路径**（新机必做）：
   - `build-mobile-html.ps1`：把全部 `F:\CCGUI` 改成 `<PROJECT>`。
   - `build-android.ps1`：把 `F:\CCGUI` 改成 `<PROJECT>`；把 `$env:JAVA_HOME` 改成本机 JDK 17 路径；把 `F:\Android\gradle-8.7\bin\gradle.bat` 改成本机 gradle 路径（或 PATH 里有 `gradle` 时直接用 `gradle`）。
   - 可移植改法参考：脚本内用 `$PSScriptRoot` 定位项目根、用 `(Get-Command gradle).Source` 取 gradle，避免写死。
5. 一键出包：`./build-android.ps1`，产物为 `<PROJECT>\out\CCGUI-mobile-<版本>.apk`（out/ 不入库；版本号自动跟随 `package.json`）。

细节见 [02-移动端-编译.md](02-移动端-编译.md)、手机端用法见 [05-移动端-使用.md](05-移动端-使用.md)。

## 5. 公网中继（可选，服务器侧）

中继部署在自己的 VPS（Node + 前置 Caddy），电脑侧零额外安装。步骤见 [03-中继-部署与使用.md](03-中继-部署与使用.md)。

## 快速自检

- 桌面：`npm run tauri dev` 能起窗口。
- 打包：`npm run tauri build` 出 NSIS 安装包。
- 移动：改完脚本路径后 `./build-android.ps1` 出 APK。
