将具有依赖项的二进制框架从 CocoaPods 迁移到 SPM 或 XCFramework

问题描述 投票:0回答:1

我继承了一个具有十几个依赖项的 Framework Xcode 项目。历史上,它通过 CocoaPods 作为二进制框架进行分发。我们现在需要支持通过 SPM 进行分发,或者至少支持作为 XCFramework 进行分发。我花了几个小时在谷歌上搜索并进行实验,但没有成功。我可以用这个看似成功地构建一个 XCFramework:

xcodebuild archive \
-scheme MyFramework \
-destination "generic/platform=iOS Simulator" \
-archivePath "archives/ios_simulator.xcarchive" \
BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
SKIP_INSTALL=NO \
-workspace MyFramework.xcworkspace

xcodebuild archive \
-scheme MyFramework \
-destination "generic/platform=iOS" \
-archivePath "archives/ios_devices.xcarchive" \
BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
SKIP_INSTALL=NO \
-workspace MyFramework.xcworkspace

xcodebuild \
-create-xcframework \
-framework ./archives/ios_devices.xcarchive/Products/Library/Frameworks/MyFramework.framework \
-framework ./archives/ios_simulator.xcarchive/Products/Library/Frameworks/MyFramework.framework \
-output ./archives/MyFramework.xcframework

构建的二进制框架不包含其依赖项。如果可以将它们与 SPM 添加到使用该框架的项目中,那就没问题了。但是对于使用 SPM 添加的框架(它们是源存储库而不是二进制框架),当我构建项目时,Xcode 会报告“没有这样的模块”。违规框架包括 CocoaLumberjack、KeychainAccess、RealmSwift 和 ZIPFoundation。如果这有帮助的话。

我尝试过更改嵌入设置、在不使用 CocoaPods 的情况下重建一个新的框架项目、制作一个包并在本地添加它,以及一长串我现在已经忘记的其他调整。

任何帮助或指导将不胜感激。这是我第一次做这样的事情,所以我可能会错过一些简单和基本的东西。

ios xcode cocoapods swift-package-manager xcframework
1个回答
1
投票

使用包装器目标来包装二进制目标及其依赖项。请参阅 FirebaseAnalytics 示例

© www.soinside.com 2019 - 2024. All rights reserved.