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

3.9 KiB
Raw Blame History

白牌项目构建指南

⚠️ 重要:使用 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 中打开项目

正确方式

  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命令行

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 HeaderYuMi/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 中编译