# Unity Framework 升级指南

本指南说明如何在导出新的真机 UnityFramework 后，将其升级到 Pod 库中。

## 前置条件

- 已从 Unity 导出新的 iOS Framework（真机版本）
- 该 Framework 包含 arm64 架构

## 快速升级（推荐）

### 使用自动化脚本

```bash
cd /Users/apple/Desktop/work/flutter_unity_pod
./upgrade_framework.sh /path/to/new/UnityFramework.framework
```

脚本会自动完成以下步骤：
1. ✅ 验证新 Framework 的架构
2. 📦 备份当前 XCFramework
3. 🔨 编译模拟器空壳版本
4. 🔄 合并真机和模拟器版本
5. 📥 替换旧的 XCFramework

## 手动升级步骤

如果需要手动升级，请按以下步骤操作：

### 1. 替换真机 Framework

```bash
# 进入 Pod 仓库
cd /Users/apple/Desktop/work/flutter_unity_pod

# 备份当前版本（可选）
cp -r UnityLibrary/UnityFramework.xcframework backup/

# 删除旧的 XCFramework
rm -rf UnityLibrary/UnityFramework.xcframework
```

### 2. 运行构建脚本

```bash
# 先将新的 framework 放到临时位置
cp -r /path/to/new/UnityFramework.framework /tmp/

# 修改 build_xcframework.sh 中的路径
# 将 DEVICE_FRAMEWORK 变量改为新的 framework 路径

# 运行构建脚本
./build_xcframework.sh
```

### 3. 更新版本号（如果需要）

编辑 `UnityFramework.podspec`：

```ruby
s.version = '1.0.8'  # 更新版本号
```

### 4. 提交到 Git

```bash
# 添加所有更改
git add -A

# 提交
git commit -m "更新 Unity framework 到版本 x.x.x

- 更新游戏资源到最新版本
- 修复 xxx bug
- 添加 xxx 功能"

# 打标签（使用与 podspec 相同的版本号）
git tag 1.0.8

# 推送到远程
git push origin main
git push origin 1.0.8
```

## 在主项目中使用新版本

### 使用本地路径（开发测试）

在主项目的 `ios/Podfile` 中：

```ruby
pod 'UnityFramework', :path => '/Users/apple/Desktop/work/flutter_unity_pod'
```

然后运行：
```bash
cd ios
rm -rf Pods Podfile.lock
pod install
```

### 使用 Git 仓库（正式发布）

在主项目的 `ios/Podfile` 中：

```ruby
pod 'UnityFramework', :git => 'https://gitea.sdws.shop/xim/flutter_unity_pod.git', :tag => '1.0.8'
```

然后运行：
```bash
cd ios
rm -rf Pods Podfile.lock
pod install
```

## 验证升级

### 1. 验证 XCFramework 结构

```bash
# 查看 XCFramework 包含的平台
xcodebuild -checkFirstLaunchStatus \
  /Users/apple/Desktop/work/flutter_unity_pod/UnityLibrary/UnityFramework.xcframework
```

应该看到：
- ✅ ios-arm64（真机）
- ✅ ios-arm64_x86_64-simulator（模拟器）

### 2. 测试模拟器构建

```bash
cd /path/to/main/project
flutter build ios --simulator --debug
```

### 3. 测试真机构建

```bash
cd /path/to/main/project
flutter build ios --release --no-codesign
```

## 常见问题

### Q: 升级后模拟器无法运行？

A: 检查模拟器空壳是否正确编译：
```bash
cd /Users/apple/Desktop/work/flutter_unity_pod
file UnityLibrary/UnityFramework.xcframework/ios-arm64_x86_64-simulator/UnityFramework.framework/UnityFramework
```

应该显示包含 `arm64` 和 `x86_64` 架构。

### Q: 升级后真机无法运行？

A: 检查真机 framework 是否包含所有必需的文件：
```bash
ls -la UnityLibrary/UnityFramework.xcframework/ios-arm64/UnityFramework.framework/
```

应该包含：
- Headers/
- Data/
- UnityFramework（二进制文件）
- Info.plist
- Modules/

### Q: Git 推送失败（权限不足）？

A: 联系仓库管理员配置写权限，或者先在本地测试通过后再推送。

## 版本管理建议

### 版本号规则

遵循语义化版本：`major.minor.patch`

- **major**: Unity 主版本升级（如 2021 -> 2022）
- **minor**: 游戏功能更新、重大修改
- **patch**: Bug 修复、小优化

### 示例
- `1.0.7`: 初始 XCFramework 版本
- `1.0.8`: 修复 bug
- `1.1.0`: 添加新游戏
- `2.0.0`: Unity 版本升级

## 自动化 CI/CD（可选）

如果希望自动化升级流程，可以创建 CI 脚本：

```yaml
# .github/workflows/upgrade-framework.yml
name: Upgrade Unity Framework

on:
  workflow_dispatch:
    inputs:
      framework_url:
        description: 'Unity Framework 下载 URL'
        required: true

jobs:
  upgrade:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v3

      - name: Download Framework
        run: |
          curl -L ${{ github.event.inputs.framework_url }} -o framework.zip
          unzip framework.zip

      - name: Upgrade Framework
        run: ./upgrade_framework.sh ./UnityFramework.framework

      - name: Commit and Tag
        run: |
          git config user.name "CI Bot"
          git config user.email "ci@example.com"
          git add -A
          git commit -m "Auto upgrade framework"
          git tag 1.0.${{ github.run_number }}
          git push origin main --tags
```

## 回滚步骤

如果升级后出现问题，可以快速回滚：

```bash
# 查看备份
ls backup/

# 恢复备份
cp -r backup/backup_YYYYMMDD_HHMMSS/UnityFramework.xcframework \
      UnityLibrary/

# 回退 git 提交
git reset --hard HEAD~1

# 删除标签
git tag -d 1.0.x
git push origin :refs/tags/1.0.x
```

## 支持

如有问题，请联系开发团队或查看：
- 项目 README
- Unity 导出文档
- CocoaPods 官方文档
