cas*_*art 5 frameworks xcodebuild
我正在尝试为.xcframework
我正在使用的一些第三方库创建一个文件。按照https://appspector.com/blog/xcframeworks的说明,我
framework
文件:# Archive for device
xcodebuild archive -scheme TestFramework -destination="iOS" -archivePath /tmp/xcf/ios.xcarchive -derivedDataPath /tmp/iphoneos -sdk iphoneos SKIP_INSTALL=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES
# Archive for simulator
xcodebuild archive -scheme TestFramework -destination="iOS Simulator" -archivePath /tmp/xcf/iossimulator.xcarchive -derivedDataPath /tmp/iphoneos -sdk iphonesimulator SKIP_INSTALL=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES
Run Code Online (Sandbox Code Playgroud)
在这一点上,我已经得到了两个带有.swiftmodule
文件的框架;一切看起来都不错。框架不附带.swiftinterface
文件,但我认为没关系,因为这些是 objc 项目。然后我
framework
s组合成一个xcframework
文件:# Build xcframework with two archives
xcodebuild -create-xcframework -framework /tmp/xcf/ios.xcarchive/Products/Library/Frameworks/TestFramework.framework -framework /tmp/xcf/iossimulator.xcarchive/Products/Library/Frameworks/TestFramework.framework -output /tmp/xcf/TestFramework.xcframework
Run Code Online (Sandbox Code Playgroud)
在这里,xcodebuild
不会失败,但会发出一个奇怪的错误:
No 'swiftinterface' files found within '/Users/user/git/ReactiveObjC/output/xcf/ios.xcarchive/Products/Products/Library/TestFramework.framework/Modules/TestFramework.swiftmodule'.
Run Code Online (Sandbox Code Playgroud)
至关重要的是,该.xcframework
包不包含文件中指定的单个framework
s或文件夹Info.plist
。显然,当我尝试xcframework
在这种状态下链接到 时,会收到一堆“缺少符号”链接器错误。
为什么是这样?我必须做什么才能完全xcodebuild
创建xcframework
?
注意:手动创建文件夹现在似乎可行,但这感觉不对并且很脆弱——Apple 可以xcodebuild
随时改变工作方式。
事实证明,添加BUILD_LIBRARY_FOR_DISTRIBUTION = YES
到xcodebuild
命令的末尾是不够的/无法生成具有所需swiftinterface
文件的框架。我必须进入实际项目的设置并手动设置BUILD_LIBRARY_FOR_DISTRIBUTION
为YES
,就像这个答案所暗示的那样。在我获得带有swiftinterface
文件的框架后,我就可以毫无问题地创建xcframework
文件了xcodebuild
。
归档时间: |
|
查看次数: |
2464 次 |
最近记录: |