Xcode - 在框架和工作区之间共享代码

3

我有一个框架和一个工作区(项目+pod)。 我希望框架能够使用工作区的类(包括项目和pods中的类)。 然后,当我分发我的框架时,我需要它引用上述类。 我该怎么做?


你有机会尝试我的解决方案了吗? - Simon McLoughlin
如果我想要在一个项目和一个框架之间共享特定的类,应该怎么做? - Anil Arigela
2个回答

1
你可以通过编写以下方式的podfile来创建一个包含它们所有的新工作区:

您可以通过编写以下方式的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/Workspace.xcodeproj

AllInOne/Framework/Framework.xcodeproj

AllInOne/podfile

AllInOne/AllInOne.xcworkspace


我可以有更多细节吗?我只需要将框架拖到现有的工作区中吗?我只需要在podfile中添加一个部分来引入框架吗?当框架准备好后,用户会得到什么?只有框架和bundle文件吗? - Luda
pod install 分析依赖关系 [!]无法找到名为'ProjectA'(我的项目名称)的目标
- Luda

1
Cocoapods提供了向pod添加依赖项的方法。例如,我编写的一个cocoapod可能需要项目安装最新的AFNetworking cocoapod。我还可以要求使用其他框架,如CoreLocationCoreBluetooth等。
如果您将您的框架创建为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安装你的框架时,他们将会在项目中安装所有必要的内容。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接