xdz_ios/
├── BaseCore/ # Swift Package(已创建)
│ └── Sources/
├── xdz/ # Xcode 项目
│ ├── xdz.xcodeproj
│ ├── xdz/ # 应用源代码
│ ├── xdzTests/
│ └── xdzUITests/
└── iOS移植方案.md
这是 iOS 项目的最佳实践,原因:
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/
xdz/xdz.xcodeprojBaseCore 目录BaseCommon 和其他模块Xcode 会自动管理,不需要手动编辑。
// 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"]
)
]
)
// 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")
]
)
]
)
如果使用 Xcode 项目,不需要 Package.swift,直接在 Xcode 中添加依赖即可。
../BaseCore 时,确保目录结构正确import BaseCore结论:当前的结构(BaseCore 与 xdz 平级)是正确的,符合 iOS 项目最佳实践!