iOS项目结构说明.md 4.6 KB

iOS 项目结构说明

📁 当前结构

xdz_ios/
├── BaseCore/              # Swift Package(已创建)
│   └── Sources/
├── xdz/                   # Xcode 项目
│   ├── xdz.xcodeproj
│   ├── xdz/               # 应用源代码
│   ├── xdzTests/
│   └── xdzUITests/
└── iOS移植方案.md

✅ 推荐方案:Swift Package 作为本地包(与项目平级)

这是 iOS 项目的最佳实践,原因:

  1. ✅ 模块独立,便于维护
  2. ✅ 可以在多个项目中复用
  3. ✅ 符合 Swift Package Manager 规范
  4. ✅ 与 Android/HarmonyOS 架构保持一致

最终目录结构

xdz_ios/
├── BaseCore/                    # Swift Package
│   ├── Package.swift
│   ├── Sources/
│   │   └── BaseCore/
│   │       ├── Core/
│   │       │   ├── Log/
│   │       │   ├── Storage/
│   │       │   ├── Network/
│   │       │   └── ...
│   │       └── BaseCore.swift
│   └── Tests/
│
├── BaseCommon/                   # Swift Package
│   ├── Package.swift
│   ├── Sources/
│   │   └── BaseCommon/
│   │       ├── Common/
│   │       │   ├── Auth/
│   │       │   ├── Network/
│   │       │   ├── UI/
│   │       │   └── ...
│   │       └── BaseCommon.swift
│   └── Tests/
│
├── CapabilityPush/               # Swift Package
│   ├── Package.swift
│   └── Sources/
│
├── CapabilityShare/              # Swift Package
│   ├── Package.swift
│   └── Sources/
│
└── xdz/                          # Xcode 项目(主应用)
    ├── xdz.xcodeproj
    ├── xdz/                      # 应用源代码
    │   ├── xdzApp.swift
    │   ├── ContentView.swift
    │   └── ...
    ├── xdzTests/
    └── xdzUITests/

🔧 在 Xcode 中添加本地 Swift Package

方法 1:通过 Xcode UI(推荐)

  1. 打开 xdz/xdz.xcodeproj
  2. 选择项目 → 选择 Target "xdz" → 切换到 "Package Dependencies" 标签
  3. 点击 "+" 按钮
  4. 选择 "Add Local..."
  5. 选择 BaseCore 目录
  6. 重复步骤添加 BaseCommon 和其他模块

方法 2:直接编辑 project.pbxproj(不推荐)

Xcode 会自动管理,不需要手动编辑。

📝 Package.swift 配置示例

BaseCore/Package.swift

// swift-tools-version: 5.9
import PackageDescription

let package = Package(
    name: "BaseCore",
    platforms: [
        .iOS(.v15)
    ],
    products: [
        .library(
            name: "BaseCore",
            targets: ["BaseCore"]
        )
    ],
    dependencies: [
        // 基础依赖,尽量使用系统原生
    ],
    targets: [
        .target(
            name: "BaseCore",
            dependencies: []
        ),
        .testTarget(
            name: "BaseCoreTests",
            dependencies: ["BaseCore"]
        )
    ]
)

BaseCommon/Package.swift

// swift-tools-version: 5.9
import PackageDescription

let package = Package(
    name: "BaseCommon",
    platforms: [
        .iOS(.v15)
    ],
    products: [
        .library(
            name: "BaseCommon",
            targets: ["BaseCommon"]
        )
    ],
    dependencies: [
        .package(path: "../BaseCore")  // 本地路径依赖
    ],
    targets: [
        .target(
            name: "BaseCommon",
            dependencies: [
                .product(name: "BaseCore", package: "BaseCore")
            ]
        )
    ]
)

xdz 项目中的 Package.swift(可选)

如果使用 Xcode 项目,不需要 Package.swift,直接在 Xcode 中添加依赖即可。

⚠️ 注意事项

  1. 路径问题:使用相对路径 ../BaseCore 时,确保目录结构正确
  2. Xcode 版本:需要 Xcode 11+ 支持本地 Swift Package
  3. 编译顺序:Xcode 会自动处理依赖关系
  4. 版本控制:每个 Swift Package 可以独立版本控制

🚀 验证步骤

  1. 创建 BaseCore/Package.swift
  2. 在 Xcode 中添加 BaseCore 作为本地包依赖
  3. 在 xdz 项目中 import BaseCore
  4. 编译运行,确认可以正常使用

📚 参考


结论:当前的结构(BaseCore 与 xdz 平级)是正确的,符合 iOS 项目最佳实践!