#ios #cocoapods
#iOS #cocoapods
Вопрос:
Я использую Cocoapods. Я внес некоторые изменения в стороннюю библиотеку, и если я запущу pod update
, все эти изменения будут заменены. Запуск pod install
делает то же самое.
Есть ли способ исключить модуль из обновления? Или способ установить один модуль, не затрагивая другие?
Ответ №1:
Наконец-то нашел решение.
Он установит модуль без какого-либо обновления репозитория, если у вас уже есть библиотека в проекте, else загрузит
pod install --no-repo-update
Если вы хотите обновить определенные библиотеки, вы можете использовать :
pod update [POD_NAME...]
Ответ №2:
Я знаю, что эта тема довольно старая, но кто-то может прийти сюда после ответа, так что вот оно:
из https://github.com/CocoaPods/CocoaPods/pull/7524
--exclude-pods
опция для pod update
команды.
Это позволяет пропустить операцию обновления для определенных модулей.
Комментарии:
1. Этот ответ работает. Вот пример того, как использовать его для обновления всего, кроме Alamofire. Вы должны добавить это в командную строку терминала:
$ pod update --exclude-pods=Alamofire
все остальные модули, кроме Alamofire, будут обновлены
Ответ №3:
Да, просто укажите версию, которую вы хотите установить, например, если вы хотите продолжать использовать AFNetworking
1.3, а не обновлять до 2.*:
pod 'AFNetworking', '~> 1.3.2'
Комментарии:
1. Я указал номера версий для всех модулей. Тем не менее внесенные в них изменения заменяются новой копией.
2. Это связано с тем, что модули самостоятельно обновляются и теперь работают немного по-другому. Таким образом, он обновится до указанной вами версии, после чего он больше не будет ее обновлять.
3. Странно то, что я указал номер последней версии, и он все равно обновляется. Результат выглядит примерно так.
<podname> 1.3.5 (was 1.3.5)
4. Это связано с тем, что сам cocoapods обновлялся с момента последнего использования для обновления модулей. Это изменило некоторые внутренние вещи. Но поскольку он по-прежнему извлекает ту же версию, это не должно иметь значения.
Ответ №4:
Пожалуйста, проверьте это обсуждение: https://github.com/CocoaPods/CocoaPods/issues/760
Одним из возможных решений на данный момент для обновления только одного модуля было бы:
Remove specific pod from Podfile
pod install
Re-add specific pod to Podfile
pod install
Комментарии:
1. Под удалением вы подразумеваете удаление модуля, который я не хочу обновлять?
2. Хорошо. Но когда я повторно добавлю его и запущу
pod install
, не получит ли он новую копию вместо той, с изменениями, которые я внес?3. После первой установки модуля вы обновите все библиотеки, кроме тех, которые вы изменили. Это то, что вы хотите. Итак, вы правы, последняя установка модуля обновит все сторонние библиотеки (эта команда не является необходимой для вашего случая).
4. Я бы не стал этого делать, поскольку удаление pod из Podfile приведет к удалению библиотеки, как только вы испортите установку pod.
5. @rckoenes Спасибо за ваш комментарий, я думаю, что мой ответ был неправильным (извините за это). Итак, для окончательного решения вы можете сделать следующее: 1. измените файл pod, как предложено rckoenes, 2. сохраните свои изменения в другом месте 3. обновите pod 4. объедините сохраненные изменения с определенными сторонними источниками lib. Спасибо.