2014-02-18 32 views
0

我们正在开发一个小型SDK。我们将所有代码放在工作区内的一个单独项目中。我们想重构它来创建不同的子模块,以后可以重新使用。 让我们觉得我们的东西像子模块进行分析,记录,用户反馈TestFlight /航迹的SDK等将Objective-C代码组织到子模块中?的CocoaPods?

理想情况下,我们不得不用分离分析和简单的API,SDK也可以使用混帐回购协议,其他组件也一样。这对单元测试,版本管理等非常有用。

我们尝试使用cocoapods,但是我们发现的问题是静态库无法链接到另一个静态库,或者至少没有简单/自动化这样做的方式。 (如果我们错了,请纠正我们)。

我们仍然可以尝试使用cocoapods来将代码(头文件&实现文件)放在同一个文件夹中,然后以某种方式将脚本复制到正确的项目并将它们链接到它(这听起来像是重新编译)做git submodules)。

有没有什么可以帮助在Objective-C的静态库之间进行版本/依赖项管理? 有什么可以促进这个过程吗?

理想的情况下,我们想要的东西,如落得下这里的一切是一个图书馆或孤立的模块,可以重复使用:

SDK 
    Analytics 
     Logging 
    UserFeedback 
     Logging 
    SubcomponentA 
    SubcomponentB 
     Logging 
    SubcomponentC 

更新

当我们试图用的CocoaPods,我们对我们的主要工作区这样的事情对我们的Podfile:

# workspace 'MyWorkspace/MyWorkspace.xcworkspace' 
platform :ios, '7.0' 
xcodeproj 'MyWorkspace/MySDK/MySDK.xcodeproj' 

target 'MySDK' do 
    xcodeproj 'MyWorkspace/MySDK/MySDK.xcodeproj' 

    pod 'Analytics', '0.0.1' 
end 

其中MyWorkspace是一个已经存在的工作空间,它有不同的项目(全部在同一个目录中),MySDK是最终产品(一个静态库),而Analytics是其自己的专用存储库中的组件之一。 (?)所以的CocoaPods试图在Analytics静态库对MySQK静态链接库

我们有这个在我们的私人规格回购(PodSpecs/Analytics/0.0.1/Analytics.podspec):

Pod::Spec.new do |s| 
    s.name  = 'Analytics' 
    s.version = '0.0.1' 
    s.platform = :ios 
    s.summary = "Analytics utility" 
    s.homepage = 'http://apple.com' 
    s.author = { 'Dude' => '[email protected]' } 
    s.source = { :git => 'https://github.com/Company/Analytics.git', :tag => '0.0.1' } 
    s.source_files = 'Analytics/**/*.{h,m}' 
    s.requires_arc = true 
    s.ios.deployment_target = '6.0' 
end 
+0

我现在很困惑。您是否想要制作一个播客,以便在您的项目中分发或使用播客?一个'Podfile'是为你的图书馆的最终消费者。 'Podspec'是确定图书馆如何与项目集成的文件。 – MishieMoo

+0

对不起,我应该说我们试图拥有自己的私人规格回购库,来管理私人图书馆 – Eric

+0

我在这里看到一些问题。 1.你的Podfile中只应该有一个**工作区的声明*或* xcodeproj。 2.这个私人规格回购是否包含每个组件的规格?我没有看到他们列出。我认为你正在将Podfile与Podspec混淆。你想制作Podspecs,而不是Podfiles。 – MishieMoo

回答

0

听起来你正在寻找subspecs该在CocoaPods中有dependencies。这使您可以定义不同的代码片段,以便在不同的配置中重复使用。

如果你正在寻找一个更强大的例子,结账AFNetworking podspec


编辑:在聊天经过一番讨论后,事实证明,该吊舱没有被正确地与项目文件集成。发生这种情况时,请删除Pods,并确保Pods.xcodeproj正在与正确的项目集成。

在CP中也可能存在一个错误,它涉及到将多个项目整合到一个文件夹中。如果这是真的,我会用问题更新这篇文章。

+0

,将工作,但我们希望有不同的部件不同的git存储库 – Eric

+0

然后,您需要在每个存储库中分别使用不同的规格,然后执行所有配置。你仍然可能想要那个子类。 – MishieMoo

+0

我试图做到这一点,但Cocoapods无法将一个库链接到另一个库......我认为除非您手动将所有库合并到一起,否则无法做到这一点,对吗? – Eric