【问题标题】:CocoaPod Library + Project in Single Workspace, Separate GIT ReposCocoaPod 库 + 单个工作区中的项目,单独的 GIT 存储库
【发布时间】:2014-07-25 13:36:12
【问题描述】:

我正试图绕过这个复杂的设置:

我有两个项目和一个共享库。共享库是一个 cocoapod。

我希望能够使用单个工作区进行开发。有一些重复的 pod 定义,但我在单个 Podfile 中工作。

这里是复杂的地方:

我希望每个项目/库都在自己的 git 存储库中。每个 repo 必须能够独立存在;拥有自己的 Podfile,通过 CI 等进行测试/部署。

另一个扳手:我们是 git-flow 分支策略... 项目 A/B 的 master 分支必须拉取库的 master 分支。项目 A/B 的开发分支必须拉取库的开发分支。

有人知道吗?我会以一种倒退的方式来解决这个问题吗?

这是一个工作的根工作区 Podfile:

platform :ios, "7.0"
inhibit_all_warnings!

workspace 'Root.xcworkspace'
xcodeproj 'SharedLibrary/SharedLibrary.xcodeproj'
xcodeproj 'ProjectA/ProjectA.xcodeproj'
xcodeproj 'ProjectB/ProjectB.xcodeproj'

target 'SharedLibrary' do
    xcodeproj 'SharedLibrary/SharedLibrary.xcodeproj'
    pod 'AFNetworking', '~> 2.0'
    pod 'CocoaLumberjack'
end

target 'ProjectA' do
    xcodeproj 'ProjectA/ProjectA.xcodeproj'
    pod 'AFNetworking', '~> 2.0'
    pod 'CocoaLumberjack'
    pod 'MagicalRecord', '~> 2.2'
    pod 'SharedLibrary', :path => './SharedLibrary/'
end

target 'ProjectB' do
    xcodeproj 'ProjectB/ProjectB.xcodeproj'
    pod 'AFNetworking', '~> 2.0'
    pod 'CocoaLumberjack'
    pod 'MagicalRecord', '~> 2.2'
    pod 'SharedLibrary', :path => './SharedLibrary/'
end

这是共享库的 podspec:

Pod::Spec.new do |s|

  s.name         = "SharedLibrary"
  s.version      = "0.0.1"

  s.platform     = :ios, "7.0"
  s.source       = { :git => "http://not.really.uploaded.anywhere.yet/SharedLibrary.git", :tag => "0.0.1" }
  s.source_files  = "SharedLibrary", "SharedLibrary/**/*.{h,m}"
  s.public_header_files = "SharedLibrary/**/*.h"

  s.dependency 'AFNetworking', '~> 2.0'
  s.dependency 'CocoaLumberjack'

end

【问题讨论】:

    标签: xcode git cocoapods


    【解决方案1】:

    我所做的是为 CocoaPod 库定义一个“专有”目标。独占目标不会与其余的 Podfile pod 链接。基本上你要做的是定义指向 Xcode 项目的目标。然后,您需要使用 podspec 将 CocoaPod 添加为依赖项。因为它是一个专有目标,所以它不会与自身链接。例如,

    source 'https://github.com/CocoaPods/Specs.git'
    
    target 'SharedLibrary', :exclusive => true do
      xcodeproj 'SharedLibrary/SharedLibrary.xcodeproj'
    end
    
    pod 'SharedLibrary', :path => 'SharedLibrary/'
    

    做你需要它做的事情。唯一需要注意的是,每次向库中添加公共标头时,都需要运行 pod update 才能在项目中使用它。

    Podfile Syntax on Targets

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-22
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 2011-12-09
      • 2017-02-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多