ios - 使用 CocoaPod 依赖项发布 Swift 包
问题描述
我正在尝试分发一个依赖于 CocoaPods 的一些库的 Swift 包。最终目标是能够使用 Swift 包管理器将用 React Native 编写的功能导入到原生 iOS 应用程序中。我从一个简单的例子开始,分布式包依赖于 Alamofire 而不是 React Native。
发布包
- 创建一个框架来封装要发布的功能。让我们称之为
SomeFramework
。这个框架依赖于 Cocoapods 的库,假设它依赖于 Alamofire。 - 归档 iPhone 和模拟器版本的框架。像这样:
xcodebuild archive \
-workspace RNFeaturePOC.xcworkspace \
-scheme SomeFramework \
-archivePath Archives/SomeFramework-iphoneos.xcarchive \
-sdk iphoneos \
BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
SKIP_INSTALL=NO
对于iphonesimulator
SDK 也是如此。
- 将两个档案捆绑成
XCFramework
这样:
xcodebuild -create-xcframework \
-framework Archives/SomeFramework-iphonesimulator.xcarchive/Products/Library/Frameworks/SomeFramework.framework \
-framework Archives/SomeFramework-iphoneos.xcarchive/Products/Library/Frameworks/SomeFramework.framework \
-output Output/SomeFramework.xcframework
- 将包发布为 GitHub 上的 Swift 包,带有包文件:
let package = Package(
name: "SomeFramework",
platforms: [
.iOS(.v13)
],
products: [
.library(name: "SomeFramework", targets: ["SomeFramework"])
],
dependencies: [
],
targets: [
.binaryTarget(
name: "SomeFramework",
path: "RNFeaturePOC/Output/SomeFramework.xcframework"
)
]
)
导入包
在一个单独的应用程序中,我们称之为 ClientApp,我现在将发布的包添加为 Swift 包。它能够找到、获取和安装包,但是当我将包导入 ClientApp 的源文件时,它给了我以下构建错误:
Failed to build module 'SomeFramework' from its module interface; it may have been damaged or it may have triggered a bug in the Swift compiler when it was produced
在我看来,产品XCFramework
并不包含它需要构建的所有东西。此外,当直接在另一个应用程序中链接框架时(不使用 Swift 包管理器),我看到了同样的错误。
我对没有任何 CocoaPod 依赖项的包尝试了相同的方法,并且能够一直导入和运行包而没有任何问题。
解决方案
推荐阅读
- html - Tailwind Css:仅为容器设置滚动
- multithreading - 数学 - 计算处理请求所需的时间
- javascript - TypeError:无法读取未定义的属性“导航”-React Native
- python - Python 生成器如何节省内存和时间?
- docker - 如何使 docker 容器充当另一个容器的中继?
- java - 在 excel 中写入数据时发生错误。无法读取 zip 条目
- regex - 正则表达式使用 RE2 在空格之前匹配字符串之后
- javascript - 为什么在我的异步函数的不同位置使用 await 会产生不同的结果?
- cypress - 赛普拉斯打开所有模拟窗口的参数
- javascript - 尝试按 ID 更改元素 - 不工作