使用 Swift 包构建静态库

Building static library with Swift package

提问人:badadin 提问时间:9/23/2021 更新时间:9/23/2021 访问量:794

问:

我尝试以这种方式构建静态库:

swift build -c release -Xswiftc "-sdk" -Xswiftc "`xcrun --sdk iphoneos --show-sdk-path`" -Xswiftc "-target" -Xswiftc "arm64-apple-ios14.0"

但是在将 .a 文件链接到项目后,我无法从 .a 文件导入任何类。它说“没有这样的模块'myLibNameHere'”

构建库的正确方法是什么,而不是可以提供给客户在其 iOS 项目中链接?主要条件是:

  • 客户不应看到我的库的来源
  • 该库必须支持真实设备(iOS 14.0 以上的 iPhone)和模拟器

毕竟。我是否应该再构建一个库(用于模拟器):

swift build -c release -Xswiftc "-sdk" -Xswiftc "`xcrun --sdk iphonesimulator --show-sdk-path`" -Xswiftc "-target" -Xswiftc "x86_64-apple-ios14.0-simulator"

并使用 ? 或者 Swift 包提供了另一种方式,例如:lipo

swift build -c release --arch arm64

或者类似的东西?

ios package-manager ios库 swift-package

评论

0赞 bscothern 9/23/2021
您将需要使其成为 xcframework,否则它会变成许多令人讨厌的构建和链接器标志。我很久以前就想通了一次,但现在已经不记得该怎么做了。如果可以的话,我会使用 create-xcframework (github.com/unsignedapps/swift-create-xcframework)。
0赞 badadin 9/24/2021
@bscothern,谢谢,我已经阅读了有关 xcframeworks 的文章,但我希望只能使用 SPM 构建 lib
1赞 bscothern 9/24/2021
这是可能的,但您需要深入研究 swiftc 链接器设置的深度,这对人们来说将是一种糟糕的消费体验。它们需要与您完全相同的 swift 版本(因此相同的 Xcode),并且它们需要正确放置和传递多个文件。
0赞 badadin 9/24/2021
@bscothern,哦,我不知道,谢谢!

答: 暂无答案