【问题标题】:Make Swift CocoaPod library available for macOS and iOS使 Swift CocoaPod 库可用于 macOS 和 iOS
【发布时间】:2018-10-16 18:56:13
【问题描述】:

我使用 Swift 为 C 库开发了一个包装器,我在其中编译了一堆 C 文件并在其上构建了一个 Swift 类。

我用 cocoapods 创建了这个项目,不知道该选择什么平台,我选择了“macOS”作为开始。

问题是我希望 iOS 开发人员和 macOS 开发人员使用我的 pod。它构建得很好,但是当我当然用 iphonesimulator 启动 xcodebuild 时,它找不到 Cocoa ...

ld: framework not found Cocoa

use_frameworks!

target 'PorterStemmer2_Example' do
  pod 'PorterStemmer2', :path => '../'

  target 'PorterStemmer2_Tests' do
    inherit! :search_paths

  end
end

使 pod 可用于所有平台的最佳方法是什么? 我应该在构建设置中更改什么?

【问题讨论】:

    标签: swift xcode cocoapods


    【解决方案1】:

    您只需要更新您的 podspec 以支持这两个目标

    1) 如果您的文件和依赖项不同

    如果它们包含不同的依赖项或文件等,您可以为 lib 创建单独的 subspecs(例如 YourLib/MacYourLib/iOS)。

    Pod::Spec.new do |s|
      s.name = 'YourLib'
    
      s.subspec 'iOS' do |i|
         i.ios.deployment_target = "8.0"
      end
    
      s.subspec 'Mac' do |m|
         m.osx.deployment_target = "10.10"
      end
    end 
    

    2) 如果一切都一样

    只需将目标更改为包含 Reachability 中的两者即可

    Pod::Spec.new do |s|
        s.name = 'YourLib'
        s.ios.deployment_target = "8.0"
        s.osx.deployment_target = "10.10"
    end
    

    P。 S. 在同一个 repo 上创建演示项目以包含两个目标(iOS 和 Mac),以便在推送到 Cocoapods 之前进行测试

    [BONUS] 在演示项目中添加另一个目标

    不要忘记在你的 Podfile 中添加这个目标,并再次添加pod install

    【讨论】:

    • 这正是我尝试过的。但是在 xcode 下,pod 仍然是为 macOS 构建的,并且捆绑了 Cocoa.framework。我不应该修改 Podfile 吗?
    • 所以它与 cocoapod 无关。您只需要在您的 xcode 项目中添加另一个目标(iOS)
    • 我应该通过在我的示例项目的 Podfile 中添加一些东西来添加它吗?
    • 更新了答案,包括如何在项目中添加另一个目标。所以基本上要做 3 件事 - 1) 更新 podspec 以包含两个目标 2) 更新您的演示项目以添加另一个目标并更新 Podfile 以包含新目标
    • 你必须明白,你的podspec 是你图书馆最重要的部分。它基本上定义了您的库是什么以及它支持什么。演示应用程序只是为了确保一切正常,并且让新用户检查如何在他们自己的项目中实现它(演示)
    猜你喜欢
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    • 2015-05-09
    • 2015-11-12
    • 2014-09-26
    • 1970-01-01
    • 2014-10-18
    相关资源
    最近更新 更多