【问题标题】:Multi platform cocoapods library configuration多平台 cocoapods 库配置
【发布时间】:2019-08-16 16:03:50
【问题描述】:

我有一套适用于 iOS、MacOS、WatchOS 和 TvOS 的 sn-ps,我想将其嵌入到 Cocoapod 库中(可能也支持 Carthage)。

对我来说棘手的部分是我有针对所有平台(iOS、MacOS TvOS 等)的目标,但一些文件仅针对其中的一个子集。 p>

在我的 Xcode 项目中,我将代码分为以下文件夹:

  • Library_Common(目标全部)
  • Library_iOS(目标 iOS)
  • Library_WatchOS(目标 WatchOS)
  • Library_MacOS(目标 MacOS)

这是因为,例如,库的 iOS 部分可能需要 UIKit,而 MacOS 可能需要其他不适用于 iOS 的框架。

如何设置 podspec 以使该库可以嵌入所有平台?

有没有办法做到这一点,或者将它拆分到不同的库中更好?这种方法的问题是Library_Common 部分会为每个部分重复。

【问题讨论】:

  • 问题不在于安装,而在于生成库本身。 :)
  • 是的,最好将其拆分为通用和基于平台的更改。这样,即使对于拥有多个平台的最终用户,也将拥有一个 Common 副本。如果要发布封闭源代码框架,则必须使用 vendored_frameworks。如果它是开源的,您可以定义子规范。

标签: ios macos cocoapods tvos watchos


【解决方案1】:

我终于找到了我正在寻找的东西,并且似乎在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}"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 2019-10-20
    • 2016-09-16
    • 2014-11-01
    • 1970-01-01
    • 2022-07-12
    相关资源
    最近更新 更多