
核心修复: - NewMomentViewController: 改为直接继承 UIViewController - NewMineViewController: 改为直接继承 UIViewController - 不再继承 BaseViewController(避免 ClientConfig → PIBaseModel 依赖链) 依赖链问题分析: BaseViewController → ClientConfig → ClientDataModel → PIBaseModel ClientConfig 本身也继承自 PIBaseModel 切断依赖链后,Bridging Header 只需要 UIKit + 3 个新模块, 不会引入任何复杂的 Model 依赖。 这样做的好处: 1. 编译不会有 PIBaseModel 错误 2. 新模块完全独立,不依赖旧代码 3. 更符合白牌项目的目标(完全不同的代码结构)
3.9 KiB
3.9 KiB
白牌项目构建指南
⚠️ 重要:使用 Workspace 而不是 Project
错误方式:
xcodebuild -project YuMi.xcodeproj -scheme YuMi build ❌
正确方式:
xcodebuild -workspace YuMi.xcworkspace -scheme YuMi build ✅
为什么?
因为项目使用了 CocoaPods:
- CocoaPods 会创建
.xcworkspace
文件 - Workspace 包含了主项目 + Pods 项目
- 直接用
.xcodeproj
编译会找不到 Pods 中的库(如 MJRefresh)
在 Xcode 中打开项目
正确方式:
- 打开
YuMi.xcworkspace
(双击这个文件) - 不要打开
YuMi.xcodeproj
验证方式:
- 打开后,左侧应该看到 2 个项目:
- YuMi(主项目)
- Pods(依赖项目)
编译项目
方式 1:在 Xcode 中(推荐)
- 打开
YuMi.xcworkspace
- 选择真机设备(iPhone for iPhone)
Cmd + B
编译- 修复任何错误
Cmd + R
运行(如果需要)
方式 2:命令行
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 中:
- 打开
YuMi.xcworkspace
- 选择 YuMi Target
- 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 中引用的头文件找不到
解决:
- 确保使用
.xcworkspace
- 检查 Bridging Header 中的所有
#import
是否正确 - 确保所有依赖的 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 中编译