English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
1. Файл Podfile.lock
Как уже говорилось, после выполнения команды pod install в начале использования CocoaPods будет создан файл Podfile.lock. Этот файл может показаться нам не имеющим отношения, но на самом деле его нельзя игнорировать.
Этот файл используется для сохранения версий установленных библиотек зависимостей Pods, после установки библиотек зависимостей Pods SBJson, AFNetworking, Reachability соответствующий файл Podfile.lock содержит следующее:
PODS: - AFNetworking (2.1.0): - AFNetworking/NSURLConnection - AFNetworking/NSURLSession - AFNetworking/Reachability - AFNetworking/Security - AFNetworking/Serialization - AFNetworking/UIKit - AFNetworking/NSURLConnection (2.1.0): - AFNetworking/Reachability - AFNetworking/Security - AFNetworking/Serialization - AFNetworking/NSURLSession (2.1.0): - AFNetworking/NSURLConnection - AFNetworking/Reachability (2.1.0) - AFNetworking/Security (2.1.0) - AFNetworking/Serialization (2.1.0) - AFNetworking/UIKit (2.1.0): - AFNetworking/NSURLConnection - Reachability (3.0.0) - SBJson (4.0.0) Зависимости: - AFNetworking (~> 2.0) - Reachability (~> 3.0.0) - SBJson (~> 4.0.0) SPEC CHECKSUMS: AFNetworking: c7d7901a83f631414c7eda1737261f696101a5cd Reachability: 500bd76bf6cd8ff2c6fb715fc5f44ef6e4c024f2 SBJson: f3c686806e8e36ab89e020189ac582ba26ec4220 COCOAPODS: 0.29.0
Наибольшая польза файла Podfile.lock体现在 работе в команде. Для того, чтобы не указывать версию библиотеки зависимостей Pods в Podfile, можно использовать следующий формат:
pod 'SBJson'
Эта фраза используется для получения последней версии библиотеки зависимостей Pods SBJson.
Когда кто-то из команды выполняет команду pod install, файл Podfile.lock записывает текущую версию библиотеки зависимостей Pods. Затем, когда другие члены команды проверяют этот проект, который содержит файл Podfile.lock, и выполняют команду pod install, они получают ту же версию библиотеки зависимостей Pods, что и пользователь в начале. Если файла Podfile.lock нет, все пользователи, выполняющие команду pod install, будут получать последнюю версию SBJson, что может привести к тому, что в команде будут использоваться различные версии библиотек зависимостей, что может быть катастрофой для сотрудничества!
В этом случае, если команда хочет использовать последнюю версию библиотеки зависимостей SBJson, есть два варианта:
Измените Podfile, чтобы он указывал на последнюю версию библиотеки зависимостей SBJson;
Выполните команду pod update;
Учитывая, что файл Podfile.lock так важен для сотрудничества в команде, мы должны добавить его в систему управления версиями.
2. Файл Podfile
Для обычных пользователей, с которыми мы часто взаимодействуем при использовании CocoaPods, это файл Podfile. CocoaPods реализован на ruby, поэтому синтаксис файла Podfile является синтаксисом ruby. Давайте рассмотрим Podfile с нескольких сторон:
1. Местоположение файла Podfile
Эта проблема была оставлена в предыдущей статье. Обычно мы рекомендуем размещать файл Podfile в корневой директории проекта, как показано на следующем рисунке:
Фактически файл Podfile может быть расположен в любой директории, необходимо сделать то, чтобы в Podfile был указан путь к проекту. В сравнении с прежним, файл Podfile добавлен в самом начале и содержит следующий текст:
xcodeproj "/Users/wangzz/Desktop/CocoaPodsTest/CocoaPodsTest.xcodeproj" platform :ios pod 'Reachability', '~> 3.0.0' pod 'SBJson', '~> 4.0.0' platform :ios, '7.0' pod 'AFNetworking', '~> 2.0'
Указанный путь использует ключевое слово xcodeproj.
Затем перейдите в папку с файлом Podfile и выполните команду pod install. Как и раньше, это загрузит эти зависимости Pods, и все связанные файлы будут сохранены в папке с Podfile, как показано на рисунке:
Как и раньше, мы должны использовать здесь созданный файл workspace для открытия проекта.
2. Podfile и target
Podfile по сути используется для описания targets в проекте Xcode. Если мы не указываем явно target для Podfile, CocoaPods создает неявный target с именем default, который соответствует первому target в проекте. Иначе говоря, если в Podfile не указан target, то только первый target в проекте может использовать зависимости Pods, описанные в Podfile.
Если нужно описать несколько targets в одном Podfile, в зависимости от требований, можно использовать различные способы реализации. Для пояснения в исходном проекте создадим еще один target с именем Second. В текущем проекте есть следующие targets:
① В нескольких targets используются одни и те же зависимости Pods
Например, target с именем CocoaPodsTest и target Second都需要 использовать три зависимости Pods: Reachability, SBJson и AFNetworking. Это можно реализовать с помощью ключевого слова link_with, и Podfile будет выглядеть следующим образом:
link_with 'CocoaPodsTest', 'Second' platform :ios pod 'Reachability', '~> 3.0.0' pod 'SBJson', '~> 4.0.0' platform :ios, '7.0' pod 'AFNetworking', '~> 2.0'
Эта запись реализует, чтобы два target CocoaPodsTest и Second использовали одинаковые зависимости Pods.
② У разных targets используются совершенно разные зависимости Pods
Этот target CocoaPodsTest использует три зависимости: Reachability, SBJson и AFNetworking, но target Second требует только одну зависимость OpenUDID. В этом случае можно использовать ключевое слово target, и способ описания в Podfile будет следующим:
target :'CocoaPodsTest' do platform :ios pod 'Reachability', '~> 3.0.0' pod 'SBJson', '~> 4.0.0' platform :ios, '7.0' pod 'AFNetworking', '~> 2.0' end target :'Second' do pod 'OpenUDID', '~> 1.0.0' end
Среди них, do/end в качестве индикаторов начала и конца.
3. Использование Podfile для управления версиями библиотек зависимостей Pods
При добавлении библиотеки зависимости необходимо явно или неявно указать версию используемой библиотеки зависимости, способ записи и его значение таковы:
pod 'AFNetworking' // Неявное указание версии библиотеки зависимости, что означает получение последней версии каждый раз pod 'AFNetworking', '2.0' // Использование только версии 2.0 pod 'AFNetworking', '> 2.0' // Использование версий, больших 2.0 pod 'AFNetworking', '>= 2.0' // Использование версий, больших или равных 2.0 pod 'AFNetworking', '< 2.0' // Использование версий, меньших 2.0 pod 'AFNetworking', '<= 2.0' // Использование версий, меньших или равных 2.0 pod 'AFNetworking', '~> 0.1.2' // Использование версий, больших или равных 0.1.2, но меньших 0.2 pod 'AFNetworking', '~>0.1' // Использование версий, больших или равных 0.1, но меньших 1.0 pod 'AFNetworking', '~>0' // Версии выше 0, использование этого ограничения и не указания его аналогично, оба означают использование последней версии
Третий раздел: часто используемые команды CocoaPods
1. pod install
В зависимости от содержимого файла Podfile, устанавливаются библиотеки зависимостей. Если есть файл Podfile.lock и соответствующий файл Podfile не был изменен, то устанавливается версия, указанная в файле Podfile.lock.
Каждый раз, когда обновляется файл Podfile, необходимо повторно выполнить эту команду, чтобы повторно установить библиотеки зависимостей Pods.
2. pod update
Если версия библиотеки, указанная в Podfile, не фиксирована, при обновлении соответствующей библиотеки, независимо от наличия файла Podfile.lock, будет пытаться получить самую последнюю версию зависимости, которую позволяет Podfile.
3. pod search
Формат команды:
$ pod search OpenUDID
Затем OpenUDID является параметром.
Из названия команды можно понять, что эта команда используется для поиска доступных библиотек зависимостей Pods по имени, результат выполнения показан ниже:
-> OpenUDID (1.0.0) Open source initiative for a universal and persistent UDID solution for iOS. pod 'OpenUDID', '~> 1.0.0' - Homepage: http://OpenUDID.org - Source: https://github.com/ylechelle/OpenUDID.git - Versions: 1.0.0 [master repo]
Здесь мы нашли доступные данные, в которых описывается краткая информация о библиотеке OpenUDID.但其实 нам нужно третье предложение в указанном выше результате:
pod 'OpenUDID', '~> 1.0.0'
Не сложно看出, что это то, что нам нужно добавить в файл Podfile.
С этой командой можно легко и быстро найти необходимые библиотеки зависимостей Pods.
4. pod setup
Формат команды:
$ pod setup
После выполнения будет напечатано:
Setting up CocoaPods master repo Updating 7cd4668..f3d3ced Fast-forward
Далее будут напечатаны множество обновлений информации.
Эта команда используется для обновления дерева зависимостей Pods, сохраненного на локальном компьютере. Поскольку каждый день многие создают или обновляют библиотеки зависимостей Pods, выполнение этой команды может быть相当 медленным, пожалуйста, будьте терпеливы. Мы часто должны выполнять эту команду, иначе при появлении новых библиотек зависимостей команда pod search не будет работать.
Часть 4: Справочные документы