xcode 将带有依赖项的二进制框架从CocoaPods迁移到SPM或xcframework

brtdzjyr  于 2023-06-24  发布在  其他
关注(0)|答案(1)|浏览(114)

我继承了一个框架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的情况下重建一个新的框架项目,制作一个包并在本地添加它,还有一长串我忘记的各种调整。
任何帮助或指导将不胜感激。这是我第一次做这样的事情,所以我可能错过了一些简单而基本的东西。

r1wp621o

r1wp621o1#

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

相关问题