我试图绕过这个复杂的环境:
我有两个项目和一个共享库。共享库是一个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
答案 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
才能在项目中使用它。