CocoaPods中project和workspace不在一个目录的处理

工程目录

CocoaPods中project和workspace不在一个目录的处理_第1张图片
工程目录.jpg

如上图所示的目录结构,Example.xcworkspace所在的目录,比工程文件Example.xcodeproj要高一个级别。

调整方式

  • Podfile要比工程文件Example.xcodeproj高一个级别

  • 直接pod install 会报以下错误

[!] Could not automatically select an Xcode project. Specify one in your Podfile like so:

    project 'path/to/Project.xcodeproj'
  • 修改Podfile可以解决这个问题project 'Example/Example.xcodeproj'这句就是解决相对路径问题的
use_frameworks!
project 'Example/Example.xcodeproj'
target 'Example' do
pod 'JSPatch'
end

工作空间workspace

  • 不管一开始有没有workspace文件,用了Pod之后,会自动生成一个和工程同名的workspace文件。

  • workspace文件生成后,可以改名,不会有什么影响。这里改成ZAPatch.xcworkspace

  • 然后加入其他三个工程,其他三个是framework。

  • 要将project加入workspace,就不能选中任何工程。要取消选中任何工程,可以点一下工程窗口右下角的过滤按钮。=== 真的很蛋疼

CocoaPods中project和workspace不在一个目录的处理_第2张图片
取消选中任何project.jpg
  • 只要将工程文件xxx.xcodeproj加入到xxx.xcworkspace文件中就可以了,不会出现任何文件copy。本质上是一些路径引用而已

最后的样子

CocoaPods中project和workspace不在一个目录的处理_第3张图片
目录结构.jpg
  • 这样就实现了用一个workspace来管理一个应用和3个framework,一共4个工程。

  • 这里是因为这些工程都实现创建好了,再执行pod install,导致自动生成的workspace文件丢失信息,要补上,又懒得新建,所以找了这个往workspace中加入project的方法。正确的实现步骤如下:

实现步骤

  1. 创建文件夹ZAPatch1.0.0。这是最外层的目录,用来版本控制。

  2. 创建工程Example,按正常流程走,放在ZAPatch1.0.0文件夹下。

  3. 创建Podfile,放在ZAPatch1.0.0文件夹下

  4. 执行pod install命令,自动生成Example.xcworkspace文件

  5. 将文件改名ZAPatch.xcworkspace

  6. 新建另外三个工程,加入ZAPatch.xcworkspace

备注

  • 这个过程有点别扭,原因是CocoaPods侵入性太强,自动生成workspace,不能随心所欲

  • 如果用Carthage,就没有这种问题了。可以按照正常思维,将创建workspace文件的步骤提前。

  • 创建文件夹ZAPatch1.0.0,马上创建workspace文件,然后新建应用和framework工程,两者完全平等,没有先后。

  • Swift和iOS8以上,推荐用Carthage来管理第三方库

你可能感兴趣的:(CocoaPods中project和workspace不在一个目录的处理)