CocoaPods實現(xiàn)過程
解析 Podfile 中的依賴斗搞,解決依賴關系力喷,核心部分
下載依賴
-
創(chuàng)建 Pods.xcodeproj 工程
生成 Pods.xcodeproj 工程
將依賴中的文件加入工程
將依賴中的 Library 加入工程
設置目標依賴(Target Dependencies) 集成 workspace
生成pods.xcodeproj的詳細過程:
CocoaPods的工作主要是通過ProjectName.xcworkspace來組織的,在打開ProjectName.xcworkspace文件后眷昆,發(fā)現(xiàn)Xcode會多出一個Pods工程蜒秤。
1.庫文件引入及配置:
庫文件的引入主要由Pods工程中的Pods-ProjectName-frameworks.sh腳本負責,在每次編譯的時候亚斋,該腳本會幫你把預引入的所有三方庫文件打包的成ProjectName.a靜態(tài)庫文件作媚,放在我們原Xcode工程中Framework文件夾下,供工程使用帅刊。
如果Podfile使用了use_frameworks!,這是生成的是.framework的動態(tài)庫文件掂骏。引入方式也略有不同。
2.Resource文件:
Resource資源文件主要由Pods工程中的Pods-ProjectName-resources.sh腳本負責厚掷,在每次編譯的時候,該腳本會幫你將所有三方庫的Resource文件copy到目標目錄中级解。
3.依賴參數(shù)設置:
在Pods工程中的的每個庫文件都有一個相應的SDKName.xcconfig冒黑,在編譯時,CocoaPods就是通過這些文件來設置所有的依賴參數(shù)的勤哗,編譯后抡爹,在主工程的Pods文件夾下會生成兩個配置文件,Pods-ProjectName.debug.xcconfig芒划、Pods-ProjectName.release.xcconfig冬竟。
?波浪線**~ > ** 含義:從指定版本到倒數(shù)第二位版本號升1為止欧穴,比如 ‘~> 0.3.7’所指的版本區(qū)間為[0.3.7, 0.4.0),即>=版本0.3.7泵殴,<版本0.4.0
Pod install 和 Pod update的區(qū)別
這里面會從配置類的實例 config 中獲取一個 Installer 的實例涮帘,然后執(zhí)行 install! 方法,這里的 installer 有一個 update 屬性笑诅,而這也就是 pod install 和 update 之間最大的區(qū)別调缨,其中pod update會無視已有的 Podfile.lock 文件,重新對依賴進行分析吆你。
pod install 和 pod update 區(qū)別還是比較大的弦叶,每次在執(zhí)行 pod install 或者 update 時最后都會生成或者修改 Podfile.lock 文件,其中install并不會修改 Podfile.lock 中顯示指定的版本妇多,而update會會無視該文件的內(nèi)容伤哺,嘗試將所有的 pod 更新到最新版。