ios - 多平台 cocoapods 库配置
问题描述
我有一组适用于 iOS、MacOS、WatchOS 和 TvOS 的片段,我想将它们嵌入到 Cocoapod 库中(可能也支持 Carthage)。
对我来说棘手的部分是我有所有平台(iOS、MacOS TvOS 等)的目标,但有些文件只针对其中的一个子集。
在我的 Xcode 项目中,我将代码分为以下文件夹:
Library_Common
(目标全部)Library_iOS
(目标 iOS)Library_WatchOS
(目标 WatchOS)Library_MacOS
(目标 MacOS)
这是因为,例如,库的 iOS 部分可能需要UIKit
并且MacOS
可能需要其他不适用于 iOS 的框架。
如何设置 podspec 以使该库可以嵌入到所有平台中?
有没有办法做到这一点,或者更好地将它拆分到不同的库中?这种方法的问题是Library_Common
每个部分都会重复。
解决方案
我终于找到了我正在寻找的东西,并且似乎在podspec
文档本身中指定了。不幸的是我之前没有看到它:
https://guides.cocoapods.org/syntax/podspec.html#group_multi_platform_support
这意味着,就我而言,我有以下设置:
s.source_files = "MyLibrary_common/**/*.{h,m}"
s.ios.source_files = "MyLibrary_iOS/**/*.{h,m}"
s.osx.source_files = "MyLibrary_macOS/**/*.{h,m}"
s.tvos.source_files = "MyLibrary_tvOS/**/*.{h,m}"
s.watchos.source_files = "MyLibrary_watchOS/**/*.{h,m}"
推荐阅读
- laravel - 如何解决错误“密码必须至少为八个字符并与确认匹配。” 在 laravel 5.8 中
- node.js - 何时将 React 与 npm 一起使用?
- html - 预先填写重定向表格
- pandas - 使用 pyplot 和 Seaborn 在同一图中绘制多个图
- docker - 为什么 print 不能与异步生成器一起正常工作?
- reactjs - Material-ui FormControlLabel 默认未选中
- laravel - 在网络服务器上克隆 Laravel 站点后无法弄清楚缺少什么
- reactjs - axios response.data 为空
- android - 如何检查我的 listview 适配器是否被我的 editext 文本过滤?
- vue.js - 当用户在 Vue 和 Vuex 中从第一条路线转到第二条路线和第二条路线到第一条路线时,想要在第一条路线上运行功能