CocoaPods — это мощное и одновременно изящное средство управления зависимостями Cocoa-библиотек, которые разработчики используют в своих iOS и MacOS X проектах. Как обычно для Cocoa-статей мы сфокусируемся именно на iOS разработке.
iOS-разработчики любит использовать наработки других разработчиков (3rd party разработчиков). И как правило, библиотеки поставляются с исходным кодом. И обычно мы добавляем исходный код библиотек в наш проект, однажды взяв его из репозитория разработчиков. У такого подхода есть несколько недостатков:
- Иногда бывает сложно уследить за версиями библиотек и их связями между собой
- Нет одного общего места, где можно просмотреть список всех доступных библиотек. Безусловно, github — одно из крупных пристанищ opensource-проектов, но не единственное
- Необходимо всегда помнить про то, что исходных код таких библиотек нужно обновлять. (отчасти проблему решили бы средства наподобие git submodules)
- Когда вы скачиваете исходники и добавляете в свой проект часто возникает соблазн изменить код библиотеки локально, что в будущем создать головную боль при обновлении библиотеки.
Средства управлением зависимостями CocoaPods поможет решить многие упомянутые проблемы. CocoaPods разберется с зависимостями между библиотеками, которые вы используете, скачает их, создаст и будет поддерживать структуру проекта в надлежащем виде.
С CocoaPods создать проект, использующий сторонние наработки, намного проще. И так, приступим.
Начинаем
Согласно официальному сайту, CocoaPods — это лучшее средство по управлению зависимостями библиотек в Objective-C проектах.
Вместо скачивания кода из репозитория библиотеки и копирования в папку вашего проекта мы можем предоставить возможность CocoaPods сделать все за нас.
Например, нам необходимо сделать приложение, которые будет общаться с RESTfull API какого-нибудь сервиса, используя JSON.
Наиболее популярная библиотека для работы с HTTP-запросами — это AFNetworking (с тех пор, как ASIHTTPRequest перестала поддерживаться).
Для начала нам необходимо установить CocoaPods. CocoaPods — это Ruby проект, и к нашему счастью интерпретатор Ruby идет в стандартную комплектацию MacOS. Ruby — это единственная зависимость CocoaPods, и сперва нам необходимо обновить список пакетов, в терминале выполнив команду:
Возможно, для корректной работы нам сперва необходимо будет обновить или установить Command Line Tools for XCode. Сделать это можно, зайдя по XCode > Preferences > Downloads > Components.
После того, как список пакетов обновлен, мы можем установить CocoaPods:
sudo gem install cocoapods &&
pod setup
CocoaPods установлен.
Hello World
Создаем новый почти пустой проект File > New > Project… > Single View Applciation, для примера:
Добавляем первую зависимость
Ну вот и он — момент истины. Добавляем нашу первую зависимость в проект.
В терминале переходим в папку проекта и выполняем следующее:
1) Создает Pod-файл
2) Добавляем библиотеку
Как можно увидеть, формат файла завиcимостей довольно простой. Мы добавили строку с AFNetworking и указали, что нас интересует последняя, 0.10.0 версия.
Тут подробно рассказано о формате Pod-файла.
3) Генерируем первоначальное окружение, загружаем необходимые файлы как самого CocoaPods, так и исходники библиотек. И главное — будет всегда поддерживать их в актуальном состоянии:
pod install
После выполнения этих несложных процедур мы получаем новую заготовку проекта. Теперь работать с ним нужно через сгенерированный xcworkspace. То есть забудьте о файле проекта как о самостоятельной сущности, только workspace!
open CocoaPodsExample.xcworkspace
Вот так будет выглядеть структура проекта
Теперь можно смело подключать AFNetworking.h и использовать эту библиотеку будто вы сами только что скачали ее исходники и разместили их в своем проекте.
Собственно, это, пожалуй, основной путь работы с CocoaPods. Основной, минимальный и простой.
Файл с зависимостями можно будет дополнить, разбавив одинокий AFNetworking:
pod 'SSToolkit'
pod 'AFNetworking', '>= 0.5.1'
pod 'CocoaLumberjack'
Суть не меняется, простота работы не пропадает.
Вот список наиболее популярных библиотек, доступных через CocoaPods:
- AFNetworking
- ASIHTTPRequest
- BlocksKit
- ConciseKit
- CorePlot
- EGOTableViewPullRefresh
- Facebook-iOS-SDK
- JSONKit
- MBProgressHUD
- Nimbus
- QuickDialog
- Reachability
- SFHFKeychainUtils
- ShareKit
CocoaPods однозначно можно отнести к must have средствам в арсенале Cocoa-разработчика.
Автор: Silf