"pod install" не обновляет существующий блок
Я пытаюсь обновить свой модуль с помощью pod install
и найти, что он не обновляется должным образом , если я не удалю исходный код.
Есть ли какой-то дополнительный шаг или существует распространенная ошибка, из-за которой обновления не выполняются?
Ответы
Ответ 1
Я не уверен, из какой версии, но если вы обновите свою установку cocoapods до последней версии, вы найдете две новые команды, которые помогут в этом.
pod outdated
Здесь перечислены все контейнеры, у которых есть доступные обновления.
pod update
Это обновление модулей, перечисленных в предыдущей команде
Ответ 2
Вы можете добавить тег verbose и посмотреть, есть ли ошибка при обновлении.
pod install --verbose
Использование --verbose
- лучший способ узнать, что происходит. Возможно, проблема с репо, с которой она пытается обновиться. Трудно сказать.
Ответ 3
Я думаю, что читатель этого Вопроса должен понимать разницу между
pod install vs. pod update
Многие люди, начинающие с CocoaPods, похоже, считают, что установка pod используется только при первом запуске проекта с использованием CocoaPods, а затем обновление pod. Но это не так.
- Используйте
pod install
для установки новых модулей в вашем проекте. Даже если у вас уже есть подфайл и пробег pod install
; так что даже если вы просто добавляете/удаляете контейнеры в проект, уже использующий CocoaPods.
- Используйте
pod update [PODNAME]
только в том случае, если вы хотите обновить конкретный код до более новой версии.
- Используйте
pod update
только в том случае, если вы хотите обновить каждый модуль до более новой доступной версии.
Каждый раз, когда запускается команда pod install
- и загружает и устанавливает новые модули - она записывает установленную версию для каждого контейнера в файл Podfile.lock
. Этот файл отслеживает установленную версию каждого контейнера и блокирует эти версии.
Когда вы запускаете pod install
, он разрешает только зависимости для контейнеров, которые еще не указаны в Podfile.lock
.
Для контейнеров, перечисленных в Podfile.lock
, он загружает явную версию, указанную в Podfile.lock
, не пытаясь проверить, доступна ли более новая версия
Для контейнеров, не указанных в Podfile.lock
, он ищет версию, которая соответствует тому, что описано в подфайле (например, в pod 'MyPod', '~>1.2'
)
Ответ 4
Если ваш проект настроен правильно, вы сможете удалить весь каталог Pods
и запустить pod install
. Я считаю, что это иногда лучшее решение, если у вас проблемы с неправильной установкой модулей.
Примечание: Если вы начнете получать такие ошибки, как при создании:
diff: /../Podfile.lock: No such file or directory
diff: /Manifest.lock: No such file or directory
error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.
... вам может понадобиться закрыть и снова открыть проект в Xcode.
Предупреждение: убедитесь, что все файлы в каталоге Pods будут воссозданы перед удалением каталога Pods. (1. Убедитесь, что вы не вручную изменяли или добавляли файлы в каталог Pods.)