我们正在开发一个小型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
我现在很困惑。您是否想要制作一个播客,以便在您的项目中分发或使用播客?一个'Podfile'是为你的图书馆的最终消费者。 'Podspec'是确定图书馆如何与项目集成的文件。 – MishieMoo
对不起,我应该说我们试图拥有自己的私人规格回购库,来管理私人图书馆 – Eric
我在这里看到一些问题。 1.你的Podfile中只应该有一个**工作区的声明*或* xcodeproj。 2.这个私人规格回购是否包含每个组件的规格?我没有看到他们列出。我认为你正在将Podfile与Podspec混淆。你想制作Podspecs,而不是Podfiles。 – MishieMoo