Статьи

Управление зависимостями в iOS с помощью Carthage

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

Как бы ни была интересна эта тема, эта статья будет охватывать не древнюю историю, а управление зависимостями для iOS.

Carthage помогает вам установить зависимости для вашего проекта и зависимости этих зависимостей. Если вы устанавливаете пакет A, этот пакет может зависеть от пакета B, который может зависеть от пакета C. Если вы устанавливаете пакет D, это может зависеть от пакета C, но от другой версии. Поиск подходящей версии — это работа, которую менеджеры пакетов выполняют для вас.

Пакеты в iOS — это «фреймворки», которые бывают двух типов: динамические и статические. Carthage поддерживает только динамические фреймворки, которые появились в iOS 8.

Установка

Вы можете установить Carthage на OS X с помощью Homebrew или установочного пакета.

С Homebrew:

brew update
brew install carthage

Установка Карфагена с помощью Homebrew

Если у вас нет Homebrew, загрузите установщик со страницы релиза Карфагена.

Настройка нового проекта

Настроить Карфаген с вашим проектом просто. Запустите новый проект iOS и создайте файл с именем Cartfile в корневом каталоге проекта. Откройте этот файл и добавьте:

 github "Alamofire/Alamofire" ~> 3.4

В этом примере я использовал Alamofire в качестве зависимости от моего проекта с github в качестве источника пакета. Carthage поддерживает github и другие источники на основе git. Для пакета, размещенного в другом репозитории git, добавьте к предложению gitgithub Кстати, Carthage был создан группой разработчиков из Github.

Установка зависимостей с помощью Carthage

Чтобы установить или обновить пакеты, запустите carthage update

Расположение файла Cartfile и библиотеки

В папке Carthage / Build Carthage создает структуру для каждой цели развертывания, которую он поддерживает, и Alamofire.framework — это файл, необходимый для проекта.

Связать библиотеки с проектом

Свяжите пакет с проектом, используя панель « Связанные рамки и библиотеки» в настройках проекта, нажмите кнопку « плюс» и выберите « Добавить другое», чтобы добавить Alamofire.

Теперь вы готовы использовать Alamofire в своем проекте и следовать sma eprocess для любого другого пакета, который поддерживает Carthage.

Карфаген против какао

Вероятно, вы использовали CocoaPods для одного из ваших проектов на основе XCode, и он работает хорошо. Зачем XCode нужен другой менеджер зависимостей?

Нет никакого вреда в нескольких программных проектах, делающих одно и то же. Опции могут действовать как отказоустойчивые, если один из менеджеров пакетов не работает. В прошлом у CocoaPods были свои проблемы с github .

Карфаген — децентрализованный менеджер зависимостей, а CocoaPods — централизованный. С CocoaPods вы можете искать пакеты на их сайте , но вы не можете с Carthage, где Github будет служить основным способом поиска пакетов. Это является недостатком для некоторых, но таким образом, Carthage не может удалять пакеты самостоятельно.

Карфаген написан на Swift и CocoaPods на Ruby, что делает его более «родным» проектом.

Эмпирический выбор?

В этой статье я познакомил вас с Карфагеном и показал, как его установить, как его использовать, и основные отличия от CocoaPods. Если вы хотите узнать больше о Карфагене, я рекомендую вам прочитать их документы .

В следующей статье я расскажу о том, как сделать ваши собственные пакеты «совместимыми с Carthage», но в то же время я хотел бы услышать ваш опыт использования этого в комментариях ниже .