在 Xcode 中,Swift Package 需要通过以下方式添加依赖:
cd xdz_ios/xdz
open xdz.xcodeproj
xdz(左侧导航栏最顶部)xdz../BaseCommon 目录并选择注意:BaseCommon 已经依赖了 BaseCore,所以添加 BaseCommon 后会自动传递依赖 BaseCore,不需要单独添加 BaseCore!
重复步骤 2,但这次选择 ../CapabilityPush 目录。
注意:CapabilityPush 已经依赖了 BaseCore,所以添加 CapabilityPush 后也会自动传递依赖 BaseCore。
如果你的 xdz 项目也使用 Swift Package Manager,可以创建 Package.swift:
// swift-tools-version: 5.9
import PackageDescription
let package = Package(
name: "xdz",
platforms: [
.iOS(.v15)
],
dependencies: [
// 只需要依赖 BaseCommon 和 CapabilityPush
// BaseCore 会通过传递依赖自动引入
.package(path: "../BaseCommon"),
.package(path: "../CapabilityPush")
],
targets: [
.executableTarget(
name: "xdz",
dependencies: [
// BaseCommon 已经依赖了 BaseCore,所以会自动传递
.product(name: "BaseCommon", package: "BaseCommon"),
// CapabilityPush 已经依赖了 BaseCore,所以会自动传递
.product(name: "CapabilityPush", package: "CapabilityPush")
]
)
]
)
cd xdz_ios
xcodebuild -workspace xdz.xcworkspace -list 2>/dev/null || \
mkdir -p xdz.xcworkspace/xcshareddata/swiftpm && \
cat > xdz.xcworkspace/contents.xcworkspacedata << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:xdz.xcodeproj">
</FileRef>
<FileRef
location = "self:BaseCore">
</FileRef>
<FileRef
location = "self:BaseCommon">
</FileRef>
<FileRef
location = "self:CapabilityPush">
</FileRef>
</Workspace>
EOF
open xdz.xcworkspace
在 BaseCommon/Sources/BaseCommon/Common/Network/NetworkHelper.swift 中:
import BaseCore // 应该可以正常导入
在 CapabilityPush/Sources/CapabilityPush/Push/Impl/PushServiceImpl.swift 中:
import BaseCore // 应该可以正常导入
在 xdz/xdz/xdzApp.swift 中:
import BaseCommon // 直接导入 BaseCommon(会自动包含 BaseCore)
import CapabilityPush // 直接导入 CapabilityPush(会自动包含 BaseCore)
// 如果需要直接使用 BaseCore 的接口,也可以导入
import BaseCore // 可选,因为 BaseCommon 已经包含了
解决方案:
解决方案:
Package.swift 中的路径是否正确(相对路径)
xdz_ios/
├── BaseCore/
├── BaseCommon/
├── CapabilityPush/
└── xdz/
解决方案:
创建一个检查脚本:
#!/bin/bash
# check_dependencies.sh
cd "$(dirname "$0")"
echo "=== 检查 Swift Package 结构 ==="
echo ""
echo "1. BaseCore Package.swift:"
if [ -f "BaseCore/Package.swift" ]; then
echo " ✅ 存在"
grep -q "name: \"BaseCore\"" BaseCore/Package.swift && echo " ✅ 名称正确" || echo " ❌ 名称错误"
else
echo " ❌ 不存在"
fi
echo ""
echo "2. BaseCommon Package.swift:"
if [ -f "BaseCommon/Package.swift" ]; then
echo " ✅ 存在"
grep -q "BaseCore" BaseCommon/Package.swift && echo " ✅ 依赖 BaseCore" || echo " ❌ 未依赖 BaseCore"
else
echo " ❌ 不存在"
fi
echo ""
echo "3. CapabilityPush Package.swift:"
if [ -f "CapabilityPush/Package.swift" ]; then
echo " ✅ 存在"
grep -q "BaseCore" CapabilityPush/Package.swift && echo " ✅ 依赖 BaseCore" || echo " ❌ 未依赖 BaseCore"
else
echo " ❌ 不存在"
fi
echo ""
echo "=== 检查目录结构 ==="
ls -d BaseCore BaseCommon CapabilityPush xdz 2>/dev/null | while read dir; do
echo "✅ $dir"
done