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 pod A, но:
- У user1 может быть pod
A2
в версии 3.4
(потому что это была A2
последняя версия на тот момент)
- в то время как когда user2 запускается
pod install
при присоединении к проекту позже, они могут получить pod A2
в версии 3.5
(потому что сопровождающий A2
может выпустить новую версию за это время). Вот почему единственный способ обеспечить, чтобы каждый член команды работал с одинаковыми версиями всех модулей на каждом компьютере, - это использовать Podfile.lock
и правильно использовать pod install
и pod update
.
Вышеприведенный отрывок был взят из установки pod или обновления pod
Я также настоятельно рекомендую смотреть , что делает podfile.lock
Do
podfile.lock
такое. Смотрите ссылку и видео, на которое она ссылается.