当闭源 CocoaPod 依赖于其他 pod 时,如何为它创建 XCFramework

2024-02-18

我正在寻找创建一个闭源 CocoaPod。根据我的研究,建议似乎是将其作为 XCFramework 分发。 (source https://stackoverflow.com/a/66459296/1795356)似乎还可以通过在 Podspec 文件中指定其他 CocoaPods 来使您的框架依赖于它们。 (source https://stackoverflow.com/a/64782335/1795356) (source https://stackoverflow.com/a/64727655/1795356)这将确保有人将此 pod 添加到他们的 Podfile 并运行pod install,它将安装该框架及其依赖项。

我创建了一个 Xcode 框架项目,并在我们应用程序的工作区中将其作为子项目进行开发。所以此时,应用程序已经通过 CocoaPods 安装了所有依赖项,这使得其中的框架可以利用它们。现在我准备好准备分发框架,以便它可以在其他应用程序中使用。

据我了解,我需要先创建一个 XCFramework,然后才能为其创建一个 CocoaPod。当我去归档框架项目时,我收到一个错误,因为它找不到依赖项,这是有道理的。此时我不明白这是如何工作的,因为框架似乎需要包含在其自身中的依赖项才能成功创建 XCFramework,但我从我的研究中预计这将由 CocoaPods 处理,而不包含在框架本身。

xcodebuild archive \
-scheme MyFramework \
-configuration Release \
-destination 'generic/platform=iOS' \
-archivePath './build/MyFramework.framework-iphoneos.xcarchive' \
SKIP_INSTALL=NO \
BUILD_LIBRARIES_FOR_DISTRIBUTION=YES
/Users/.../AppName/MyFramework/Helpers/Extensions.swift:10:8: error: no such module 'Kingfisher'
import Kingfisher
       ^

** ARCHIVE FAILED **

为了解决这个问题,我所做的是为框架项目创建一个 Podfile 并运行pod install所以它有自己的工作空间。我验证在打开该工作区时能够在 Xcode 中成功构建框架。然后要创建存档,请指定它应该构建工作区而不是项目,如下所示:

xcodebuild archive \
-workspace MyFramework.xcworkspace \
-scheme MyFramework \
-configuration Release \
-destination 'generic/platform=iOS' \
-archivePath './build/MyFramework.framework-iphoneos.xcarchive' \
SKIP_INSTALL=NO \
BUILD_LIBRARIES_FOR_DISTRIBUTION=YES

据我了解,当您创建 XCFramework 时,不会包含依赖项,它只是您自己的框架。但是,必须可以访问依赖项才能成功构建存档。

这个理解解决了我提出这个问题时的困惑。现在我可以继续为我的 XCFramework 创建 CocoaPod 并在 Podspec 文件中指定其依赖项。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当闭源 CocoaPod 依赖于其他 pod 时,如何为它创建 XCFramework 的相关文章

随机推荐

  • C语言中如何计算两个集合之间的差异?

    我有两个数组 A 和 B 其中 A 8 和 B 4 我想计算设置差A B 我该如何继续 请注意 这两个集合中都没有重复的元素 编辑 非常感谢大家提供了无数优雅的解决方案 由于我正处于项目的原型设计阶段 因此现在我实现了 Brian 和 Ow
  • 用户从下拉列表框中选择选项后如何获取新选择的值和旧值?

    我有 angularjs 下拉列表框
  • 有条件导入

    我正在考虑在使用swing的java程序中添加dbus功能 这样脚本就可以用来执行一些功能 这个东西也必须在windows上运行 而dbus不可用 所以我正在考虑做以下事情 dbus java import dbus Whatever th
  • Java.exe 在 Android Studio 中以非零退出值 2 结束

    当我添加后出现此错误编译 org apache httpcomponents httpmime 4 2 3 找不到解决方案我还在默认配置部分尝试了多个 dex 文件 true 我还尝试创建另一个运行成功的应用程序进行测试 错误 任务 app
  • 在 App.cs (Xamarin) 中显示 DisplayAlert

    我目前正在尝试不断跟踪用户是否连接到互联网 我有用于检查连接的代码 并且我希望能够在用户使用该应用程序时未连接到互联网时显示弹出窗口 但是 我不能把DisplayAlert at App cs 错误 上下文中不存在 DisplayAlert
  • 我可以使用 ASP.NET 进行“WAR 文件”类型部署吗?

    有时精通 J2EE 的人看到 ASP NET 时会想 将应用程序部署为单个单元的支持在哪里 JSP Servlet 应用程序可以部署为 WAR 文件 所有页面 内容 元数据和代码都位于单个存档中 war 文件可以进行版本控制 可以轻松移动
  • 应用程序在 jdbcTemplate 中随机挂起进行更新

    我在用simpleJdbcTemplateSpring 使用如下所示的查询执行更新 update TABLE B JOIN select Column1 from TABLE A C ON B Column2 C Column3 set B
  • 创建跨域的cookie

    我正在研究饼干 我能够非常轻松地创建cookie 要创建 cookie 我使用以下代码 HttpCookie aCookie new HttpCookie Cookie name aCookie Value Value Response C
  • Dart 错误:Dart_LookupLibrary:未找到库“package:home_widget/home_widget_callback_dispatcher.dart”

    一个很奇怪的问题 我在用https pub dev packages home widget https pub dev packages home widget我正在尝试使用 backgroundCallback 通过按小部件上的图像来刷
  • RTMP中是如何包含flv格式的?

    我正在使用 Wireshark 来检查数据包 但我对 RTMP 流媒体中如何遵循 flv 格式感到困惑 FLV 文档指定标签为 标签类型 数据大小 时间戳 时间戳扩展 streamID VideoTagHeader 但我得到 fmt tim
  • 使用 wkhtmltopdf 设置横向方向

    我如何改变我的方向pdf生成的文件Wkhtmltopdf 我在 PHP 中调用它 如下所示 file fopen tmp html pdfTmp numRand html w or exit Unable to open file fwri
  • 如何从 File#path 获取 utf8 字符

    File path给我 Latin 1 字符 有没有办法让它给我 utf8 字符 或者我应该转换它返回的内容 如果是这样 最好 最简单的转换方法是什么 阐述 所以 我知道我可以这样做 Iconv new UTF 8 LATIN1 iconv
  • 如何将自定义验证器与 dropwizard 一起使用?

    我有一个由其他人编写的 REST api 其中处理对特定 url 的请求的方法接受一堆从路径参数填充的参数 POST Path classid studentid details Consumes MediaType MULTIPART F
  • 将 MySQL ANSI 输入转换为 UTF-8 [重复]

    这个问题在这里已经有答案了 我决定将我的网络应用程序从 ANSI 切换为 UTF 8 在 Notepad 中转换我的硬编码文件的编码后 这会执行转换 不仅仅是更改字符集 并为 UTF 8 设置新的元标记 我现在需要转换我的数据库数据 该数据
  • 从 Rails 控制器访问资产路径

    我正在共享一个配置 yml 文件客户端 我还需要在服务器端加载它 我已将其放置在 app assets javascripts configuration yml 中 我可以在视图内使用 asset path configuration y
  • 是否可以使用 JavaScript 触发键盘按钮?

    是否可以使用 JavaScript 触发键盘按钮 并根据 Caps Lock 按钮获取输入大小写 因此 如果我的大写锁定打开 它应该是大写的 或 如果它关闭了 它应该是小写的 触发关键事件 var ev jQuery Event keypr
  • 无法读取 C 中的某些注册表项

    我正在使用 RegOpenKeyEx 和 RegQueryValueEx 尝试获取 Windows 注册表中六个键的值 我能够完成六项中的四项 但在某些其他方面却失败了 wchar t getRegKeyValue HKEY rootKey
  • iOS7 中检测 MKOverlay 的触摸(MKOverlayRenderer)

    我有一个 MKMapView 可能绘制了数百个多边形 在 iOS7 上将 MKPolygon 和 MKPolygonRenderer 作为一个使用 我需要的是一种对用户触摸其中一个多边形进行操作的方法 例如 它们代表地图上具有一定人口密度的
  • 研究具有标准编码风格的优势

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 Stackoverflow 上有几个问题 关于是否有任何关于什么是最佳编码约定 风格的研究 这
  • 当闭源 CocoaPod 依赖于其他 pod 时,如何为它创建 XCFramework

    我正在寻找创建一个闭源 CocoaPod 根据我的研究 建议似乎是将其作为 XCFramework 分发 source https stackoverflow com a 66459296 1795356 似乎还可以通过在 Podspec