首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >xcframework不包含内部框架。

xcframework不包含内部框架。
EN

Stack Overflow用户
提问于 2019-11-11 17:12:17
回答 4查看 6.6K关注 0票数 7

我正在尝试为我正在使用的一些第三方库创建一个.xcframework文件。按照https://appspector.com/blog/xcframeworks的指示,我

  1. 创建特定于平台的framework文件:

代码语言:javascript
运行
复制
# 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

此时,我已经得到了两个带有.swiftmodule文件的框架;一切看起来都很好。这些框架不附带.swiftinterface文件,但我认为这是可以的,因为这些都是objc项目。然后,我

  1. 将单个framework组合成一个xcframework文件:

代码语言:javascript
运行
复制
# 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

在这里,xcodebuild没有失败,但它发出了一个奇怪的错误:

代码语言:javascript
运行
复制
No 'swiftinterface' files found within '/Users/user/git/ReactiveObjC/output/xcf/ios.xcarchive/Products/Products/Library/TestFramework.framework/Modules/TestFramework.swiftmodule'.

关键的是,.xcframework包不包含在Info.plist文件中指定的单个framework文件夹。显然,当我试图在这种状态下链接到xcframework时,我会得到一堆“缺失符号”链接器错误。

为什么会这样呢?要让xcodebuild完全创建xcframework,我必须做些什么?

注意:手动创建文件夹目前看来是可行的,但这感觉不对,而且很脆弱--苹果可以随时改变xcodebuild的工作方式。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-11-11 19:14:08

事实证明,将BUILD_LIBRARY_FOR_DISTRIBUTION = YES添加到xcodebuild命令的末尾是不够的/不足以生成具有所需的swiftinterface文件的框架。我必须进入实际项目的设置,并手动将BUILD_LIBRARY_FOR_DISTRIBUTION设置为YES,就像this answer建议的那样。在获得了带有swiftinterface文件的框架之后,我就能够使用xcodebuild创建xcframework文件了,没有任何问题。

票数 16
EN

Stack Overflow用户

发布于 2021-09-10 17:40:53

从Cocoapods转换为XCFramework

对于我的场景,我尝试从cocoapods生成的FAT/lipo框架构建XCFrameworks。

我把这个添加到我的文件末尾:

代码语言:javascript
运行
复制
post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
        end
    end
end

这确保了框架的正确编译,并且我能够运行普通的xcodebuild -create-xcframework ...命令来生成XCFramework。

注意:我也在使用cocoapods-binary插件预构建所有的豆荚框架。

票数 1
EN

Stack Overflow用户

发布于 2022-06-13 10:36:57

我也面临着同样的问题。原来Xcode 13的构建设置覆盖了命令行中的SKIP_INSTALL=NO标志。一旦我在项目的构建设置中将此字段设置为NO (并确保在将build For分发设置为YES)时,我成功地创建了xcframework文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58805812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档