探究cocoapods原理之前,我們可以先了解一下一個Xcode項目的構成.
一個project 其實就是一個文件夾,擴展名使用xcodeproj的文件夾,project文件夾內部包含一個很重要的project.pbxproj文件,這個文件是記錄追蹤project文件夾內文件的索引文件.當然還包含有一個project.xcworksapce文件.
不過最重要的還是project.pbxproj文件,我們在項目中看到的Target,也是由這個文件生成的一個虛擬的目錄.詳情可以參考pbxproj file format
-個worksapce其實也是一個文件夾,擴展名使用xcworkspace.workspace文件夾內部包含一個contents.xcworkspacedata文件,contents文件其實是一個xml文件
這個xml文件中指定了與workspace關聯(lián)的project文件.
cocopods就是創(chuàng)建了一個pods.xcodeproj的project,然后通過修改project.pbxproj文件將每個pod庫(如果這個庫沒有可編譯的文件則不會創(chuàng)建Target)建成一個target,將這些target全部關聯(lián)到pods.xcodeproj上,之后創(chuàng)建一個workspace將你本來的project和podsproject關聯(lián)起來.之后cocopods將所有的pod打包成一個靜態(tài)庫或動態(tài)庫,然后創(chuàng)建一個名為Pods-xxx的庫,這個庫會依賴你所有的pod庫.然后將Pods-xxx打包成一個靜態(tài)庫或動態(tài)庫,最后將這個新的庫鏈接到本來項目的Target中.之后修改pbxproj文件并保存.