- Освойте различия между двумя основными сторонними менеджерами зависимостей
- Вступление
- Диспетчер зависимостей
- Стручки какао
- Преимущества стручков какао
- Недостатки какао-стручков
- Карфаген
- Преимущества Карфагена
- Недостатки Карфагена
- Стручки какао
- Установить
- Добавление модулей в ваш проект Xcode
- Правильная версия Pods
- Версия зависимости
- Обновление пода
- Необходимость Podfile.lock
- Карфаген
- Установить
- Основное различие между CocoaPods и Carthage
- Заключение
Освойте различия между двумя основными сторонними менеджерами зависимостей
Вступление
Сторонние фреймворки стали важным инструментом в наши дни — в конце концов, никто не хочет изобретать велосипед.
Сегодня в GitHub существует масса таких фреймворков, что указывает на то, как они удовлетворяют общую потребность.
Как вы думаете, что является проводником между внешним каркасом и вашим файлом? Если вы подумали о «диспетчере зависимостей», вы были абсолютно правы.
Диспетчер зависимостей
Это инструмент, который устанавливает и обновляет зависимости из источника (GitHub) для конкретного приложения. Затем, основываясь на этих зависимостях, программист может расширять классы и методы для создания интересных вещей. Как вы можете заключить, Cocoa Pods и Carthage — это некоторые из таких менеджеров зависимостей, которые предлагают свои услуги на языке Swift.
Теперь, когда вы знаете, что такое диспетчер зависимостей и почему мы его используем, давайте углубимся в каждый конкретный диспетчер зависимостей. Это важно для будущего анализа, когда мы подходим к выбору менеджера.
Стручки какао
Стручки какао были разработаны 1 сентября 2011 года Элой Дураном и Фабио Пелосином при огромной помощи многих других разработчиков. Этот диспетчер зависимостей сначала был создан для языка Objective-C, но теперь работает для любых других языков, работающих в среде выполнения Objective-C, таких как Swift и RubyMotion.
CocoaPods сильно вдохновлен комбинацией проектов Ruby Ruby Gems и Bundler.
Преимущества стручков какао
- Легко установить.
- С помощью CocoaPods можно установить множество фреймворков из-за его широкого сообщества.
- Хорошо работает при использовании нескольких фреймворков — процесс протекает быстро.
- Стручки какао более популярны, чем Карфаген.
Недостатки какао-стручков
- Создает другой рабочий файл Xcode
.xcworkspace
при интеграции модулей. - После установки трудно избавиться от
.xcworkspace
- Cocoa Pods берут под контроль весь файл Xcode, поэтому, если что-то ломается в Pods, весь проект перестает работать
- Xcode компилирует каждый модуль во время работы приложения. В результате, если установлено много модулей, процесс становится действительно трудоемким.
Карфаген
Carthage был создан 5 октября 2014 года группой разработчиков из Github и полностью написан на Swift.
Преимущества Карфагена
- Карфаген легко удалить, если больше не нужен каркас.
- Поскольку он полностью написан на Swift, Carthage не требует создания еще одного файла. Все устанавливается прямо в файл Xcode.
- Carthage не требует компилировать проект целиком, он компилирует только те фреймворки, которые нужны в конкретной ситуации.
- Если что-то сломано в Framework, установленном Carthage, Xcode просто пропускает это и просто строит все, как никогда раньше.
- Благодаря своей гибкости Carthage отлично работает с огромным количеством кодовых баз.
Недостатки Карфагена
- Карфаген сложно настроить, так как в нем много ручных операций.
- В Carthage меньше участников, чем в Cocoa Pods.
- Статические фреймворки не поддерживаются Carthage, он работает только с динамическими фреймворками.
- По мнению некоторых пользователей, Carthage медленно компилирует фреймворки.
Теперь у вас есть все теоретические знания о CocoaPods и Carthage, включая их плюсы и минусы, давайте перейдем к практической части — как вы на самом деле работаете с этими менеджерами зависимостей в своих проектах.
Стручки какао
Установить
Сначала откройте терминал и напишите:
$ sudo gem install cocoapods
Вам будет предложено ввести пароль пользователя, что позволит вам установить все необходимые файлы на ваш компьютер.
Добавление модулей в ваш проект Xcode
- Создайте подфайл. Чтобы создать подфайл, откройте «Терминал» и перейдите в корневой каталог к вашему файлу Xcode.
cd “YOUR ROOT DIRECTORY”
pod init - Откройте свой Podfile через Xcode и добавьте свои зависимости. Чтобы избежать ошибок, рекомендуется открывать подфайл через Xcode.
open -a Xcode Podfile
(чтобы открыть Xcode через Терминал)
Давайте добавим нашу первую стороннюю библиотеку. Под строкой #Pods for “NAME OF YOUR XCODE PROJECT”
напишите следующее:
pod ‘PKHUD’
PKHUD
в скобках — это имя модуля, который вы хотите использовать. PKHUD
довольно популярен и используется для отображения индикатора загрузки.
3. Закройте Podfile
и запустите эту команду в Терминале:
pod install
.
Теперь происходит волшебство. CocoaPods устанавливает все для вас за кулисами. После установки модулей вы больше не открываете свой .xcodeproj
файл. Cocoa Pods создали для вас новый .xcworkspace
файл, который вы сейчас открываете.
После установки CocoaPods мы видим следующие изменения:
Отлично — теперь вы можете использовать свой фреймворк!
Правильная версия Pods
Иногда может возникнуть ситуация, когда CocoaPods был обновлен, но мы не хотим использовать новую версию, так как нам нужно время, чтобы адаптироваться к изменениям.
Лучше всего выбрать версию нашего фреймворка.
pod 'AFNetworking', '~> 3.0'
Версия зависимости
Версия зависимости сообщает нам, какую версию зависимости следует использовать. Это очень важная часть менеджеров по зависимостям — особенно при работе в команде.
Об этом можно упомянуть по-разному.
== x.0
означает точно такую же версию x.0.
>= x.0
означает версию x.0 или выше.
~> x.0
означает любую версию, совместимую с x.0, что фактически означает использование версии x.0 или выше, но не включает версию (x + 1) .0.
Например, ~ ›2.2 использует все версии от 2.2 и выше, но не включая версию 1.0 или 3.0.
Обновление пода
Многие люди не понимают, когда использовать pod install
, а когда pod update
. Обычно используется pod update
вместо pod install
.
- Используйте
pod install
для установки новых модулей в свой проект. Вы должны сделать это, даже если у вас уже естьPodfile
и вы уже запускалиpod install
раньше — то есть, даже если вы просто добавляете / удаляете модули в проект, который уже использует CocoaPods. - Используйте
pod update [PODNAME]
только тогда, когда хотите обновить модули до более новой версии.
Чтобы обновить пакеты, выполните следующие действия:
- Укажите версию CocoaPods в
Podfile
.
Если вы хотите обновить его до последней версии, ничего не указывайте. - Удалить
Podfile.lock
- В терминале перейдите в каталог вашего проекта.
Pod update 'PODNAME'
на модулях, которые нужно обновить. Пропустите‘PODNAME’
, чтобы обновить весь подфайл.
Необходимость Podfile.lock
Файл Podfile.lock
создается после установки CocoaPods. Цель состоит в том, чтобы отслеживать версии ваших модулей и избегать случайных обновлений. Это удобно при работе над одним проектом в команде. Размещение Podfile.lock
в GitHub с другими файлами помогает избежать конфликтов в версиях. Человек, клонировавший проект, автоматически устанавливает точно такую же версию.
Карфаген
Установить
Сначала загрузите и установите Carthage.pkg
:
После установки убедитесь, что все настроено успешно, выполнив эту команду в терминале: carthage version
. Если Carthage установлен успешно, будет напечатан его номер версии.
После установки мы готовы интегрировать фреймворки диспетчера зависимостей Carthage в наши проекты Xcode:
- В Терминале перейдите к проекту Xcode, с которым вы работаете:
cd “YOUR ROOT DIRECTORY”
- Создайте
Cartfile
с помощью командыtouch
:
touch Cartfile
3. Откройте сгенерированный Cartfile
с помощью Xcode.
open -a Xcode Cartfile
4. В Cartfile
укажите свой фреймворк. В нашем случае это Аламофайр. Сохраните файл и закройте его. В итоге это будет выглядеть так:
Каждая строка cartfile
содержит две части информации: происхождение зависимости и версию зависимости.
Источник зависимости сообщает нам, откуда брать зависимость. Об этом можно упомянуть двумя способами:
github
, за которым следуетUsername/ProjectName
git
, за которым следует удаленный URL-адрес с использованием git://
,https://
илиssh://
или локальный путь к репозиторию git на вашем компьютере разработки.
5. Сохраните cartfile
и выполните следующую команду в терминале, чтобы получить зависимость:
carthage update --platform iOS
--platform iOS
гарантирует, что Carthage создает фреймворк только для iOS. Если вы не укажете платформу, Carthage создаст платформу для iOS, MacOS и TvOS.
Все шаги этих шагов были очень похожи на установку CocoaPods. Теперь вы можете догадаться, что мы наконец можем начать работать с Alamofire. Но это не CocoaPods, это Carthage, поэтому нам нужно сделать еще несколько шагов.
Прежде чем двигаться дальше, давайте сначала рассмотрим изменения, которые произошли после установки Alamofire в нашем проекте Xcode.
У нас есть три новых файла:
Cartfile
похож наPodfile
. Ссылку на фреймворки мы держим здесь.Cartfile.resolve
похож наPodfile.lock
. Он сохраняет используемую нами версию фреймворка.- Каталог Carthage, содержащий каталоги
Build
иCheckouts
. Каталог сборки содержит структуру сборки для каждой зависимости. Каталог checkouts содержит исходный код для каждой зависимости.
Основное различие между CocoaPods и Carthage
CocoaPods создает новый .xcworkspace
и включает туда документацию по фреймворку. Это действительно усложняет жизнь, потому что, если что-то не так с Framework
, весь проект рушится.
Carthage, с другой стороны, хранит все в папке и не влияет на проект Xcode.
Пойдем дальше:
6. Выберите target
, затем нажмите кнопку + в разделе Платформы, библиотеки и встроенное содержимое и выберите свою платформу.
7. В разделе Build Settings
нажмите New Run Script Phase:
8. В Run Script
добавьте следующую команду:
/usr/local/bin/carthage copy-frameworks
Нажмите + под входным файлом и добавьте путь для каждого фреймворка:
$(SRCROOT)/Carthage/Build/iOS/"NAME_OF_FRAMEWORK".framework
Вот и все — все этапы интеграции выполнены!
Заключение
Нет неправильного выбора диспетчера зависимостей.
Теперь вы знаете все «за» и «против» и знаете, как интегрировать зависимости CocoaPods и Carthage, и вам решать, какая из них вам нужна.
Например, иногда CocoaPods может быть единственным вариантом — например, потому что фреймворк не написан в Carthage. Или вы можете предпочесть Carthage, когда используете много фреймворков, потому что он не централизован.
Спасибо за прочтение!