CocoaPods实现过程
-
解析 Podfile 中的依赖,解决依赖关系,核心部分
-
下载依赖
-
创建 Pods.xcodeproj 工程
生成 Pods.xcodeproj 工程
将依赖中的文件加入工程
将依赖中的 Library 加入工程
设置目标依赖(Target Dependencies) -
集成 workspace
生成pods.xcodeproj的详细过程:
CocoaPods的工作主要是通过ProjectName.xcworkspace来组织的,在打开ProjectName.xcworkspace文件后,发现Xcode会多出一个Pods工程。
1.库文件引入及配置:
库文件的引入主要由Pods工程中的Pods-ProjectName-frameworks.sh脚本负责,在每次编译的时候,该脚本会帮你把预引入的所有三方库文件打包的成ProjectName.a静态库文件,放在我们原Xcode工程中Framework文件夹下,供工程使用。
如果Podfile使用了use_frameworks!,这是生成的是.framework的动态库文件。引入方式也略有不同。
2.Resource文件:
Resource资源文件主要由Pods工程中的Pods-ProjectName-resources.sh脚本负责,在每次编译的时候,该脚本会帮你将所有三方库的Resource文件copy到目标目录中。
3.依赖参数设置:
在Pods工程中的的每个库文件都有一个相应的SDKName.xcconfig,在编译时,CocoaPods就是通过这些文件来设置所有的依赖参数的,编译后,在主工程的Pods文件夹下会生成两个配置文件,Pods-ProjectName.debug.xcconfig、Pods-ProjectName.release.xcconfig。
✨波浪线**~ > ** 含义:从指定版本到倒数第二位版本号升1为止,比如 ‘~> 0.3.7’所指的版本区间为[0.3.7, 0.4.0),即>=版本0.3.7,<版本0.4.0
Pod install 和 Pod update的区别
这里面会从配置类的实例 config 中获取一个 Installer 的实例,然后执行 install! 方法,这里的 installer 有一个 update 属性,而这也就是 pod install 和 update 之间最大的区别,其中pod update会无视已有的 Podfile.lock 文件,重新对依赖进行分析。
pod install 和 pod update 区别还是比较大的,每次在执行 pod install 或者 update 时最后都会生成或者修改 Podfile.lock 文件,其中install并不会修改 Podfile.lock 中显示指定的版本,而update会会无视该文件的内容,尝试将所有的 pod 更新到最新版。
网友评论