# QGVAPlayer SDK 开发环境（本仓库）

## 1. 项目结构（开发视角）
- `QGVAPlayer/QGVAPlayer.xcodeproj`: SDK 主工程（`QGVAPlayer` framework）
- `QGVAPlayerDemo/QGVAPlayerDemo.xcodeproj`: ObjC Demo（子工程依赖 SDK）
- `QGVAPlayerDemoSwift/QGVAPlayerDemoSwift.xcodeproj`: Swift Demo（子工程依赖 SDK）
- `QGVAPlayer.podspec`: Pod 发布配置

两个 Demo 都是直接依赖本地 `QGVAPlayer.xcodeproj`，适合边改 SDK 边验证。

## 2. 一次性环境准备
在仓库根目录执行：

```bash
bash scripts/dev/setup_sdk_dev.sh
```

脚本会做：
- 检查 Xcode / `xcrun`
- 检查并尝试安装 `MetalToolchain`
- 准备仓库内 `./.deriveddata` 构建目录
- 校验三个 xcodeproj 可被识别

## 3. 日常开发流程（推荐）
1. 修改 SDK 源码：`QGVAPlayer/QGVAPlayer/**/*`
2. 编译回归 Demo：
```bash
bash scripts/dev/build_demo.sh all
```

可选只编译单个 Demo：
```bash
bash scripts/dev/build_demo.sh objc
bash scripts/dev/build_demo.sh swift
```

3. 在 Xcode 中运行 App 验证：
- 推荐直接打开根目录 workspace：`QGVAPlayerDev.xcworkspace`（可同时看到 SDK + ObjC Demo + Swift Demo）
- 在 workspace 中使用共享 Scheme：`QGVAPlayerDemo` / `QGVAPlayerDemoSwift`
- 不建议优先单独打开 `*.xcodeproj`（会看不到完整联调上下文）

## 4. 备注
- 工程内已调整：`QGVAPlayer` 与 `QGVAPlayerDemo` 的 `IPHONEOS_DEPLOYMENT_TARGET` 为 `12.0`（兼容新 Xcode）。
- `build_demo.sh` 里已做命令行覆盖：ObjC Demo 使用 `12.0`（规避 `libarclite`），Swift Demo 使用 `14.5`（匹配 SceneDelegate API）。
- 如果命令行提示 `metal` 不可用，先执行一次：
```bash
xcodebuild -downloadComponent MetalToolchain
```
