探究cocoapods原理之前,我们可以先了解一下一个Xcode项目的构成.
一个project 其实就是一个文件夹,扩展名使用xcodeproj的文件夹,project文件夹内部包含一个很重要的project.pbxproj文件,这个文件是记录追踪project文件夹内文件的索引文件.当然还包含有一个project.xcworksapce文件.
不过最重要的还是project.pbxproj文件,我们在项目中看到的Target,也是由这个文件生成的一个虚拟的目录.详情可以参考pbxproj file format
-个worksapce其实也是一个文件夹,扩展名使用xcworkspace.workspace文件夹内部包含一个contents.xcworkspacedata文件,contents文件其实是一个xml文件
contents.xcworkspacedata这个xml文件中指定了与workspace关联的project文件.
cocopods就是创建了一个pods.xcodeproj的project,然后通过修改project.pbxproj文件将每个pod库(如果这个库没有可编译的文件则不会创建Target)建成一个target,将这些target全部关联到pods.xcodeproj上,之后创建一个workspace将你本来的project和podsproject关联起来.之后cocopods将所有的pod打包成一个静态库或动态库,然后创建一个名为Pods-xxx的库,这个库会依赖你所有的pod库.然后将Pods-xxx打包成一个静态库或动态库,最后将这个新的库链接到本来项目的Target中.之后修改pbxproj文件并保存.
网友评论