修复 PIBaseModel 依赖链问题
核心修复: - NewMomentViewController: 改为直接继承 UIViewController - NewMineViewController: 改为直接继承 UIViewController - 不再继承 BaseViewController(避免 ClientConfig → PIBaseModel 依赖链) 依赖链问题分析: BaseViewController → ClientConfig → ClientDataModel → PIBaseModel ClientConfig 本身也继承自 PIBaseModel 切断依赖链后,Bridging Header 只需要 UIKit + 3 个新模块, 不会引入任何复杂的 Model 依赖。 这样做的好处: 1. 编译不会有 PIBaseModel 错误 2. 新模块完全独立,不依赖旧代码 3. 更符合白牌项目的目标(完全不同的代码结构)
This commit is contained in:
151
BUILD_GUIDE.md
Normal file
151
BUILD_GUIDE.md
Normal file
@@ -0,0 +1,151 @@
|
||||
# 白牌项目构建指南
|
||||
|
||||
## ⚠️ 重要:使用 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 类
|
||||
- 包括第三方 SDK(NIMSDK, 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 中编译
|
||||
Reference in New Issue
Block a user