这两天整理了一下工程,总结一下。
在Xcode工程目录里,有蓝色目录和黄色目录两种,它们的区别是什么?
蓝色是folder,黄色是group
folder只能作为资源,整个引入到工程中。也就是,如果以folder的方式引入工程,它是不能被放在complie sources列表里的。因此,如果引入的文件需要编译,那么不要通过folder的方式引入。
group的方式引入文件,这些文件中的.m文件会被编译。
总结一下,一般为了不使源代码散乱的存在于工程文件夹中,可以把它们进行适当的分类,分别放在不同的目录中。然后,可以通过拖动或File->Add Files to...的方式,将它们直接加入工程。加入过程中,会弹出对话框,如下:
其中:
1)Copy items if needed:是在必要时进行拷贝,例如被拖动的目录不在工程目录中,则会拷贝一份
2)Create groups:为所加入的目录创建分组,group name就是目录的名字。如果以此方式加入目录,会显示出黄色图标。
3)Create folder references:以folder方式进行引用,如果选择此方法,加入到工程中的目录就是蓝色图标。其中的文件都会被直接拷贝到bundle包中,不参与编译。
可以在Target->Build Phase->Link Binary With Library中查看是否所加入的文件参与了编译;
可以在Target->Build Phase->Copy Bundle Resources中查看以目录方式引入的文件或者不能参与编译的文件(例如代码会读取的文本等)是否被打入到bundle包。
重点:
1)在Finder整理代码,然后将整理好的各个目录拖拽进工程,使用Create Group方式,不需要担心import时找不到文件或者需要写文件路径;
2)项目中使用了不少h5代码,这些html,js都不参与编译,将整个h5目录拖拽进工程时,选择Greate folder reference,以目录的形式引用即可。
3)对于编译不同target时使用的不同配置文件,在build之前调用script从其它目录进行拷贝或生成,这些配置文件也不参与编译,而是通过程序读取,可以创建一个空目录,然后将空目录以folder的形式引入工程,这样在编译之前通过脚本拷贝进这个空目录的文件就可以被正常打到bundle包中。