2016-01-04 5 views
14

В настоящее время я просматриваю библиотеку, которая поддерживает Карфаген в качестве менеджера пакетов. Проект, который я собираюсь интегрировать, уже имеет некоторые зависимости CocoaPods. Кто-нибудь пытался использовать оба этих менеджера одновременно?Использование Carthage и CocoaPods в том же проекте

Это выглядит плохой идеей, но я бы хотел услышать, если это так на практике.

ответ

18

Основная проблема, с которой вы столкнетесь, заключается в том, что CocoaPods и Carthage не знают друг о друге. Это означает, что если зависимость, управляемая CocoaPods и зависимость от Carthage, имеет общую зависимость, возникают конфликты , возможно,.

Carthage требует, чтобы вы вручную добавляли фреймворки в проект, что означает, что вы, возможно, избегаете не связывать какую-либо общую зависимость и полагаться на инфраструктуру, добавленную CocoaPods, но вы не получите разрешение версии зависимостей по двум зависимостям менеджеров, и не будет ясно, как все это работает.

С учетом этого нет никаких неотъемлемых причин, по которым вы не можете использовать их, и если библиотека, которую вы хотите включить, имеет мало или вообще не имеет зависимостей, вероятно, предпочтительнее использовать Карфаген, а не включать библиотеку в качестве подмодуль или даже копирование источника в.

Моя рекомендация, если это возможно, заключается в том, чтобы включить ваши другие зависимости через Карфаген или создать подсек для библиотеки, чтобы вы могли использовать только Carthage или CocoaPods.

+0

Это в значительной степени то, что я понял ... Я попытался установить deps из обоих менеджеров вместе и не столкнулся с какими-либо проблемами. Но я сделал podspec для библиотеки только в Карфагене, так как я предпочел бы, чтобы мои депы обрабатывались в одну сторону. –

+0

Дополнительно - Если у вас есть подфайл в вашем репо, и вы используете Travis-CI, Трэвис предположит, что вы хотите установить стручки, даже если вы не указали это явно в своем .travis.yml. Если у вас есть только .podspec, то никаких проблем с Travis при условии, что у вас есть возможность запускать 'carthage update --платформу ' –

Смежные вопросы