diff --git a/Vendor/WechatSDK/README.md b/Vendor/WechatSDK/README.md index d9297bb..d9b7e4c 100644 --- a/Vendor/WechatSDK/README.md +++ b/Vendor/WechatSDK/README.md @@ -1,14 +1,35 @@ # WechatOpenSDK -**本目录刻意不放二进制**:项目以 **SPM** 接入微信 OpenSDK(Tencent 官方维护),不走 Vendor xcframework。详见 `docs/SDK-Integration-Guide.md §A.1`。 +> 闭源 SDK,按 daoqi `CLAUDE.md` ADR-006 走 **Vendor `.xcframework`** 路径。 +> +> 历史选型对比:曾考虑 Tencent 官方 SPM(`https://github.com/Tencent/WechatOpenSDK-XCFramework`),但该仓库**不存在**(404);社区 wrapper(`yanyin1986/WechatOpenSDK`、`anotheren/WechatOpenSDK`)存在但非 Tencent 官方维护,仓库一旦停更/删除即为定时炸弹,被否决。 + +## 二进制来源 | 项 | 值 | |---|---| -| 来源 | Tencent 官方 SPM 仓库 | -| SPM URL | `https://github.com/Tencent/WechatOpenSDK-XCFramework` | -| 推荐版本 | `2.0.5` 或更新(SDK1.x 有 ITMS-90809 历史包袱,避免) | +| 官方下载页 | | +| 推荐版本 | OpenSDK **2.0.5** 或更新(避免 1.x 的 ITMS-90809 历史包袱;新外壳不上 App Store 仍建议用 2.x,与 msext 行为差异最小) | +| 包形态 | `OpenSDK*_NoPay.zip`(不含支付能力,符合本项目需求) | +| 解压产物 | `WechatOpenSDK.xcframework`(含 ios-arm64 + ios-arm64_x86_64-simulator slice) | | 模块名 | `WechatOpenSDK`(`import WechatOpenSDK` / `#import `) | -| 替代二进制 | 项目方曾下载 `WechatOpenSDK-NoPay.xcframework` 到 `docs/res/`,**改 SPM 后不再使用**,可保留作为离线备份 | + +## 放置路径 + +``` +ylgamehall/ +├── Vendor/ +│ └── WechatSDK/ +│ ├── README.md ← 本文件 +│ └── WechatOpenSDK.xcframework/ ← 用户从官方下载后放这里 +``` + +## Xcode 接入 + +参 `docs/SDK-Integration-Guide.md §A.1`。要点: + +- Target → General → Frameworks, Libraries, and Embedded Content → `+` → Add Files → 选 `Vendor/WechatSDK/WechatOpenSDK.xcframework` +- **Embed 选 `Embed & Sign`**(xcframework 是动态库,与 AMap 静态 `.framework` 的 `Do Not Embed` 不同) ## 凭证 diff --git a/docs/SDK-Integration-Guide.md b/docs/SDK-Integration-Guide.md index 05ee751..2ab4694 100644 --- a/docs/SDK-Integration-Guide.md +++ b/docs/SDK-Integration-Guide.md @@ -10,20 +10,25 @@ ## A. 用户手动 Xcode 步骤(必做 3 件事) -> **选型偏好**:尽量 SPM 远程依赖;只有官方未提供 SPM 的才走 Vendor 二进制。 -> 当前结果:**微信 + 七牛走 SPM**(pbxproj 仅多 2 个 `XCRemoteSwiftPackageReference`,与现有 ZIPFoundation 一致);**高德走 Vendor**(官方未提供 SPM)。 +> **选型偏好**:官方 SPM 优先;闭源 / 无官方 SPM 的走 Vendor 二进制(社区 SPM wrapper 不计入官方,仓库一旦停更即为定时炸弹,按 daoqi `CLAUDE.md` ADR-006 否决)。 +> 当前结果: +> - **七牛走官方 SPM**(`https://github.com/qiniu/objc-sdk`,活跃维护) +> - **微信走 Vendor**(Tencent 不维护官方 SPM;社区 wrapper 风险高,回 Vendor 与 AMap 统一处置) +> - **高德走 Vendor**(官方未提供 SPM) +> > 这 3 件事都是 Xcode UI 操作,无法 AI 自动完成。完成后 `BuildProject` 即激活所有真实路径。 -### A.1 添加微信 OpenSDK(SPM 远程依赖) +### A.1 添加微信 OpenSDK(Vendor 手动) -> 项目方下载的 `WechatOpenSDK-NoPay.xcframework` 已撤出 `Vendor/`;改用 Tencent 官方 SPM 仓库。 +> Tencent 官方至今未维护 SPM 仓库(`Tencent/WechatOpenSDK-XCFramework` 不存在,404);社区 wrapper(yanyin1986 / anotheren)非官方,被否决。改走 Vendor `.xcframework`,与 AMap 同款处置方式。 -1. Xcode → File → **Add Package Dependencies...** -2. 右上搜索框粘贴:`https://github.com/Tencent/WechatOpenSDK-XCFramework` -3. **Dependency Rule** 选 **Up to Next Major Version** → `2.0.5`(或更新;避免 1.x 的 ITMS-90809 历史包袱) -4. Add Package → 弹窗里 Library 选 `WechatOpenSDK` → Add Package -5. 确认 ylgamehall target 已勾选 -6. ⌘B 编译 +**预先准备**:从腾讯开放平台下载 `OpenSDK*_NoPay.zip`(推荐 2.0.5+),解压取出 `WechatOpenSDK.xcframework`,放到 `Vendor/WechatSDK/`。下载页与详细说明见 `Vendor/WechatSDK/README.md`。 + +1. 选中 `ylgamehall` Target → General → Frameworks, Libraries, and Embedded Content +2. 点 `+` → Add Other → Add Files +3. 选 `Vendor/WechatSDK/WechatOpenSDK.xcframework` +4. **Embed** 列选 **Embed & Sign**(xcframework 是动态库,与下面 AMap 的 `Do Not Embed` 不同,别错) +5. ⌘B 编译 ### A.2 添加高德定位 framework × 2(Vendor 手动,无 SPM 替代) @@ -210,7 +215,7 @@ bridge.register("prepareaudio") { _, callback in | 文件 | 状态 | 说明 | |---|---|---| -| SPM `WechatOpenSDK-XCFramework` | ⏳ 待用户在 Xcode Add Package Dependencies | 见 §A.1,Tencent 官方仓库 | +| `Vendor/WechatSDK/WechatOpenSDK.xcframework` | ⏳ 等用户放置 | 项目方从腾讯开放平台下 `OpenSDK2.0.5+_NoPay.zip` 解压 → 放进 `Vendor/WechatSDK/` → 按 §A.1 Embed & Sign | | `Source/SDK/WeChat/WeChatSDK.swift` | ✅ 已写 | `register()` + `handleOpenURL` 包 canImport | | `Source/SDK/WeChat/WeChatManager.swift` | ✅ 已写 | authorize / shareLink async wrapper + WXApiDelegate | | `Source/Login/WeChatAuth.swift` | ✅ 已写 | OAuth2 客户端直拼 sns/oauth2 + userinfo + 7 字段 |