Files
real-e-party-iOS/BUILD_GUIDE.md
edwinQQQ bf31ffda51 修复 PIBaseModel 依赖链问题
核心修复:
- NewMomentViewController: 改为直接继承 UIViewController
- NewMineViewController: 改为直接继承 UIViewController
- 不再继承 BaseViewController(避免 ClientConfig → PIBaseModel 依赖链)

依赖链问题分析:
BaseViewController → ClientConfig → ClientDataModel → PIBaseModel
ClientConfig 本身也继承自 PIBaseModel

切断依赖链后,Bridging Header 只需要 UIKit + 3 个新模块,
不会引入任何复杂的 Model 依赖。

这样做的好处:
1. 编译不会有 PIBaseModel 错误
2. 新模块完全独立,不依赖旧代码
3. 更符合白牌项目的目标(完全不同的代码结构)
2025-10-09 18:49:44 +08:00

152 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 白牌项目构建指南
## ⚠️ 重要:使用 Workspace 而不是 Project
**错误方式**
```bash
xcodebuild -project YuMi.xcodeproj -scheme YuMi build ❌
```
**正确方式**
```bash
xcodebuild -workspace YuMi.xcworkspace -scheme YuMi build ✅
```
## 为什么?
因为项目使用了 **CocoaPods**
- CocoaPods 会创建 `.xcworkspace` 文件
- Workspace 包含了主项目 + Pods 项目
- 直接用 `.xcodeproj` 编译会找不到 Pods 中的库(如 MJRefresh
## 在 Xcode 中打开项目
**正确方式**
1. 打开 `YuMi.xcworkspace`(双击这个文件)
2. 不要打开 `YuMi.xcodeproj`
**验证方式**
- 打开后,左侧应该看到 2 个项目:
- YuMi主项目
- Pods依赖项目
## 编译项目
### 方式 1在 Xcode 中(推荐)
1. 打开 `YuMi.xcworkspace`
2. 选择真机设备iPhone for iPhone
3. `Cmd + B` 编译
4. 修复任何错误
5. `Cmd + R` 运行(如果需要)
### 方式 2命令行
```bash
cd "/Users/edwinqqq/Local/Company Projects/E-Parti"
# 清理
xcodebuild -workspace YuMi.xcworkspace -scheme YuMi clean
# 编译(真机)
xcodebuild -workspace YuMi.xcworkspace -scheme YuMi \
-destination 'generic/platform=iOS' \
-configuration Debug \
build
```
## Build Settings 配置验证
在 Xcode 中:
1. 打开 `YuMi.xcworkspace`
2. 选择 YuMi Target
3. Build Settings → 搜索框输入以下关键词并检查:
| 设置项 | 期望值 | 状态 |
|--------|--------|------|
| **Swift Objc Bridging Header** | `YuMi/YuMi-Bridging-Header.h` | ✅ 已配置 |
| **Swift Version** | `Swift 5` | ✅ 已配置 |
| **Defines Module** | `YES` | ✅ 已配置 |
## 常见错误排查
### 错误 1: `'MJRefresh/MJRefresh.h' file not found`
**原因**:使用了 `.xcodeproj` 而不是 `.xcworkspace`
**解决**:使用 `.xcworkspace` 打开和编译
### 错误 2: `SwiftGeneratePch failed`
**原因**Bridging Header 中引用的头文件找不到
**解决**
1. 确保使用 `.xcworkspace`
2. 检查 Bridging Header 中的所有 `#import` 是否正确
3. 确保所有依赖的 Pod 都安装了
### 错误 3: `Cannot find 'HttpRequestHelper' in scope`
**原因**Bridging Header 路径未配置
**解决**已修复Build Settings 中设置了正确路径
## 当前项目配置
### 文件结构
```
E-Parti/
├── YuMi.xcworkspace ← 用这个打开!
├── YuMi.xcodeproj ← 不要用这个
├── Podfile
├── Pods/ ← CocoaPods 依赖
├── YuMi/
│ ├── YuMi-Bridging-Header.h ← Swift/OC 桥接
│ ├── Config/
│ │ └── APIConfig.swift ← API 域名配置
│ ├── Global/
│ │ └── GlobalEventManager.h/m ← 全局事件管理
│ └── Modules/
│ ├── NewTabBar/
│ │ └── NewTabBarController.swift
│ ├── NewMoments/
│ │ ├── Controllers/
│ │ │ └── NewMomentViewController.h/m
│ │ └── Views/
│ │ └── NewMomentCell.h/m
│ └── NewMine/
│ ├── Controllers/
│ │ └── NewMineViewController.h/m
│ └── Views/
│ └── NewMineHeaderView.h/m
```
### Swift/OC 混编配置
**Bridging Header**`YuMi/YuMi-Bridging-Header.h`
- 引入所有需要在 Swift 中使用的 OC 类
- 包括第三方 SDKNIMSDK, AFNetworking
- 包括项目的 Models、Managers、Views
**Build Settings**
- `SWIFT_OBJC_BRIDGING_HEADER = YuMi/YuMi-Bridging-Header.h`
- `DEFINES_MODULE = YES`
- `SWIFT_VERSION = 5.0`
## 验证配置是否成功
编译成功后,应该能在 Console 看到:
```
[NewTabBarController] 初始化完成
[APIConfig] 解密后的域名: https://api.epartylive.com
[GlobalEventManager] SDK 代理设置完成
```
---
**更新时间**: 2025-10-09
**状态**: ✅ 配置已修复
**下一步**: 使用 YuMi.xcworkspace 在 Xcode 中编译