我有一个Framework和一个Workspace(项目+ pods)。我希望框架使用工作空间类(项目和pod)。然后,当我分发我的框架时,我需要它来引用上面的类。我怎么做?
答案 0 :(得分:1)
您可以通过以这种方式编写podfile来创建包含所有这些工作区的新工作区:
workspace 'AllInOne.xcworkspace'
xcodeproj 'Workspace/Workspace.xcodeproj'
xcodeproj 'Framework/Framework.xcodeproj'
target 'ProjectA' do
platform :ios, '8.0'
xcodeproj 'Workspace/Workspace.xcodeproj'
pod 'nameofpod', '~> .1'
end
target 'Framework' do
platform :ios, '8.0'
xcodeproj 'Framework/Framework.xcodeproj'
end
修改强>
创建一个新文件夹(名称为" AllInOne")。在该文件夹中放置您的框架文件夹,其中存在framework.xcodeproj,并放置您的工作区文件夹。 现在,在AllInOne文件夹中创建podfile。最后应该在这个目录中存在这些文件:
ALLINONE /工作区/ Workspace.xcodeproj
ALLINONE /框架/ Framework.xcodeproj
ALLINONE / podfile
ALLINONE / AllInOne.xcworkspace
答案 1 :(得分:1)
Cocoapods提供了向pod添加依赖性的方法。因此,例如我写的cocoapod可能要求项目安装最新的AFNetworking
cocoapod。我还可以要求使用其他框架,例如CoreLocation
,CoreBluetooth
等。
如果您将框架创建为cocoapod,则应该能够添加将在运行时添加的依赖项列表:
pod install
之前我已经创建了一个框架作为pod,并在我的podspec中使用了类似的东西:
s.source = { :git => ' <destination Git repo> ', :tag => '0.0.1' }
s.ios.xcconfig = { 'FRAMEWORK_SEARCH_PATHS' => '"$(PODS_ROOT)/<MyFrameWorkName>"' }
s.ios.preserve_paths = '<MyFrameWorkName>.framework'
然后您应该能够要求cocoapod具有其他依赖性,例如:
s.frameworks = 'QuartzCore'
s.ios.weak_frameworks = 'CoreBluetooth'
s.dependency 'SDWebImage', '~> 3.7'
s.dependency 'GoogleAnalytics-iOS-SDK', '3.0.3c'
现在,当您/其他人通过cocoapods安装您的框架时,他们将在项目中安装所需的一切。