Uruchomienie pod install
zainstaluje bieżącą wersję RestKit, powodując wygenerowanie Podfile.lock
wskazującego dokładną zainstalowaną wersję (np. RestKit 0.10.3
). Dzięki Podfile.lock
, uruchomienie pod install
na tym hipotetycznym projekcie w późniejszym czasie na innej maszynie nadal będzie instalować RestKit 0.10.3, nawet jeśli dostępna jest nowsza wersja. CocoaPods będzie honorował wersję Pod w Podfile.lock
, chyba że zależność zostanie zaktualizowana w pliku Podfile lub zostanie wywołany pod update
(co spowoduje wygenerowanie nowego Podfile.lock
). W ten sposób CocoaPods unika bólu głowy spowodowanego nieoczekiwanymi zmianami w zależnościach.
Jest świetny film od Google o tym, jak to działa: „CocoaPods i Lockfiles (Route 85)”.
<Co się dzieje za kulisami?
W Xcode, z odniesieniami bezpośrednio ze źródła ruby, to:
- Tworzy lub aktualizuje obszar roboczy.
- Dodaje twój projekt do obszaru roboczego, jeśli to konieczne.
- Dodaje projekt biblioteki statycznej CocoaPods do obszaru roboczego, jeśli to konieczne.
- Dodaje libPods.a do: targets => build phases => link with libraries.
- Dodaje plik konfiguracyjny CocoaPods Xcode do projektu twojej aplikacji.
- Zmienia konfiguracje celów twojej aplikacji, aby były oparte na CocoaPods.
- Dodaje fazę budowania, aby skopiować zasoby z dowolnych strąków, które zainstalowałeś do pakietu aplikacji. tj. 'Faza budowania skryptu’ po wszystkich innych fazach budowania z następującymi elementami:
- Shell:
/bin/sh
- Script:
${SRCROOT}/Pods/PodsResources.sh
- Shell:
Zauważ, że kroki 3 i następne są pomijane, jeśli biblioteka statyczna CocoaPods jest już w twoim projekcie. Jest to w dużej mierze oparte na pracy Jonaha Williamsa na temat bibliotek statycznych.
<Pod i submoduły
CocoaPods i git submoduły próbują rozwiązać bardzo podobne problemy. Oba starają się uprościć proces włączania kodu stron trzecich do projektu. Submoduły łączą się z konkretnym commitem tego projektu, podczas gdy CocoaPod jest związany z wersjonowanym wydaniem deweloperskim.
<Przechodzenie z submodułów na CocoaPods
Zanim zdecydujesz się na pełną zmianę na CocoaPods, upewnij się, że wszystkie biblioteki, których obecnie używasz, są dostępne. Dobrym pomysłem jest również zapisanie wersji bibliotek, których obecnie używasz, abyś mógł skonfigurować CocoaPods tak, by korzystał z tych samych. Dobrym pomysłem jest również zrobienie tego przyrostowo, przechodząc zależność po zależności zamiast jednego dużego ruchu.