tl; dr використання:
pod update podName
Чому? Читай нижче.
pod update
НЕ поважатимуть podfile.lock
. Це перекриє це.
pod install
буде поважати podfile.lock
Ця діаграма допомагає краще зрозуміти відмінності:
Основна проблема пов'язана з ~>
оптимістичним оператором .
Використання точних версій у програмі Podfile
недостатньо
Дехто може подумати, що вказуючи точні версії своїх стручків у своїх Podfile
, якpod 'A', '1.0.0'
, достатньо, щоб гарантувати, що кожен користувач матиме таку ж версію, як і інші люди в команді.
Тоді вони навіть можуть використовувати pod update
, навіть додаючи новий стручок, думаючи, що це ніколи не ризикне оновити інші стручки, оскільки вони закріплені за конкретною версією в Podfile
.
Але насправді цього недостатньо, щоб гарантувати, що user1 та user2 у нашому вищезгаданому сценарії завжди отримають абсолютно таку ж версію всіх своїх стручків.
Один з типових прикладів, якщо стручок A
має залежність від стручка A2
- заявили в A.podspec
якостіdependency 'A2', '~> 3.0'
. У такому випадку використання pod 'A', '1.0.0'
у вашому Podfile дійсно змусить user1 та user2 обидва завжди використовувати версію 1.0.0 стручка A, але:
- user1 може закінчитися поділом
A2
у версії 3.4
(тому що це булоA2
остання версія на той час)
- тоді як, коли user2 працює
pod install
під час приєднання до проекту пізніше, вони можуть отримати струк A2
у версії 3.5
(тому що тех, хто підтримує, A2
можливо, тим часом випустив нову версію). Ось чому єдиний спосіб забезпечити роботу кожного члена команди з однаковими версіями всіх стручків на комп'ютері кожного - це використовувати Podfile.lock
та правильно використовувати pod install
vs.pod update
.
Наведений вище уривок був похідний встановлення pod та порівняння pod
Я також настійно рекомендую подивитися, що podfile.lock
робити
podfile.lock
таке. Дивіться посилання та відео, на яке він посилається.