Ответ 1
Это не разрешено с помощью podspecs, так как это позволяет сделать невозможным для других podspecs определить, какой пакет они зависят и/или другие пакеты могут сломаться из-за неожиданных различий API.
Например, рассмотрите два модуля, зависящих от AFNetworking, но один указывает внешнее местоположение источника (Pod A), в то время как другое указывает только требования к минимальной версии (Pod B):
- Pod A:
s.dependency 'AFNetworking', :git => 'https://arbitrary/location'
- Pod B:
s.dependency 'AFNetworking', '> 2'
Теперь есть несколько потенциальных проблем:
- На данный момент мы не знаем, какая версия находится в репозитории Pod A, пока мы ее не загрузим, что представляет собой огромную трату времени, если не будут удовлетворены различные общие зависимости от AFNetworking (например, Pod B).
- Но что еще хуже, если "Pod A" соответствует требованиям к версиям зависимостей других модулей (например, "Pod B" ), но код AFNetworking на самом деле находится из раздвоенного исходного местоположения, и он изменяет некоторые существенные API, которые зависят от Pod B, Это будет тихо нарушать обещание, которое CocoaPods пытается сделать.
Надеюсь, это даёт понять, почему мы не можем ввести способ, чтобы podspecs молча нарушил версию promises. Тем не менее, из вашего подфайла вы можете переопределить местоположение исходного кода, поскольку он является конечным пользователем (разработчиком приложения), который находится под контролем, и не должно быть никаких неожиданных сбоев.