docs(plans): 合并 iOS SPM 修复回执

This commit is contained in:
Zhou Weidong committed 2026-10-17 16:33:11 +08:00
commit c8c085b4e0
2 files changed
+95 -1

No files matched your search

+28 -1
View File
@@ -233,10 +233,37 @@ Running Gradle task 'assembleDebug'... 6.6s
设备侧截图、触觉感知结果与系统低电量测试由用户执行。
#### 6.7 已知边界
#### 6.7 iOS Xcode SPM 构建修复
- `Runner.xcscheme` 新增 “Bootstrap Flutter SPM Package” PreAction:
按 `FLUTTER_ROOT → PATH → $HOME/flutter → /opt/homebrew` 兜底解析
Flutter,执行 `flutter pub get`,找不到时明确报错并非 0 退出。
- 原有 “Run Prepare Flutter Framework Script” 保留,并改为同一兜底链解析
Flutter root 后执行 `xcode_backend.sh prepare`。
- `xmllint --noout` 通过;`xcodebuild -list` 可识别 Runner scheme 与全部
SPM source packages。
- 在已有 SPM 包时完整执行:
`xcodebuild -project ios/Runner.xcodeproj -scheme Runner -configuration Debug -sdk iphoneos build`
结果为 `BUILD SUCCEEDED`;日志确认执行 PreAction,输出
`Resolving dependencies...`、`Got dependencies!`。
- 删除 `ios/Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage`
后立即运行同一 `xcodebuild`,Xcode 在 “Resolve Package Graph” 阶段先失败,
尚未运行 PreActions:
`Could not resolve package dependencies ... folder doesn’t exist`。
因此 **scheme-only 修复无法覆盖“包从未生成”的首次冷启动**;
该冷启动自动生成场景标记为未通过验证。
- 当前可靠口径:新克隆、`flutter clean` 或手动删除 ephemeral 后,先执行一次
`flutter pub get`,再从 Xcode GUI 运行;正常构建期间 PreAction 会继续刷新包。
- 修复提交:`cc037a2956848128c4899df1f5092fea44d3620b`
`fix(ios): 刷新 Flutter SPM 包后再准备框架`
- 合并:`ac706a4`,已推送 ReelShort `develop`。
#### 6.8 已知边界
- 未增加震动开关;触觉遵循系统设置。
- 不做忘记密码、Google/Apple 登录、隐私勾选或新 tab。
- Xcode 首次包图解析早于 scheme PreActions;完全无 SPM 包时仍需先运行
`flutter pub get`,本轮未通过 scheme 实现冷启动自动生成。
- K4 未开始。
---
+67
View File
@@ -1870,3 +1870,70 @@ To http://git.reelshort2.com/jianghaifeng/ReelShort.git
```
解读:K6 已合并并推送,author/committer 均为 Zhou Weidong,未操作 main。
### 20.7 iOS Xcode SPM 构建修复(K6 收尾)
叙述:只修改 `Runner.xcscheme` PreActions。新增 Python 无关的 shell
兜底链解析 Flutter,先 `flutter pub get`;原 prepare action 保留,并改为
同一路径解析后执行 `xcode_backend.sh prepare`。
XML 校验:
```
$ xmllint --noout ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
(无输出,退出码 0)
```
清理 ephemeral 后直接 xcodebuild:
```
$ rm -rf ios/Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage
$ xcodebuild -project ios/Runner.xcodeproj -scheme Runner -configuration Debug -sdk iphoneos build
Resolve Package Graph
the package at '.../FlutterGeneratedPluginSwiftPackage' cannot be accessed
xcodebuild: error: Could not resolve package dependencies
```
解读:Xcode 在运行 scheme PreActions 之前先解析 Package Graph,因此
“包目录完全不存在”的首次冷启动无法仅靠 scheme PreAction 自动生成。
这是 Xcode 执行顺序限制,不是 XML 语法错误。
使用 `flutter pub get` 恢复包后:
```
$ flutter pub get
Got dependencies!
$ xcodebuild -list -project ios/Runner.xcodeproj
Resolved source packages:
FlutterGeneratedPluginSwiftPackage: .../ios/Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage
...
```
完整重建精简日志:
```
$ xcodebuild -project ios/Runner.xcodeproj -scheme Runner -configuration Debug -sdk iphoneos build
Resolve Package Graph
Resolved source packages:
Run pre-actions
export SCHEME_ACTION_NAME="Bootstrap Flutter SPM Package"
Resolving dependencies...
Got dependencies!
** BUILD SUCCEEDED **
```
解读:SPM 包存在时,PreAction 能成功刷新依赖,prepare 和完整 iPhoneOS
Debug 构建通过并完成签名。冷启动自动生成未通过验证,用户仍需在
新克隆/`flutter clean`/手动删除 ephemeral 后先运行 `flutter pub get`。
Git:
```
cc037a2956848128c4899df1f5092fea44d3620b
fix(ios): 刷新 Flutter SPM 包后再准备框架
0cedaab..ac706a4 develop -> develop
```
解读:scheme 修复已合并推送;author/committer 均为 Zhou Weidong。