单工作区中的CocoaPod库+项目,单独的GIT Repos

时间:2014-06-04 18:49:03

标签: xcode git cocoapods

我试图绕过这个复杂的环境:

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

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

这里变得复杂:

我希望每个项目/库都有自己的git repo。每个回购必须能够自己生活;拥有自己的Podfile,通过CI等进行测试/部署。

另一个扳手:我们是git-flow分支策略......项目A / B的主分支必须拉动库的主分支。项目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

1 个答案:

答案 0 :(得分:0)

我所做的是为CocoaPod库定义一个“独占”目标。独占目标不会与其余Podfile窗格链接。基本上你要做的就是定义指向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