English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Руководство по созданию CocoaPods на iOS

После того как вы научитесь использовать зависимости других людей, вы, возможно, захотите создать свои собственные зависимости. Сегодня мы揭开了创建依赖 для CocoaPods тайну. Вся процесс создания основан на одном из моих view, который я реализовал под названием WZMarqueeView для эффекта бегущей строки, шаги следующие:

1. Создание собственного репозитория на github

CocoaPods хранятся на github (официальная ссылка:https://github.com/CocoaPods) Поэтому все библиотеки зависимости Pods также зависят от github, поэтому на первом этапе нам нужно создать свой github репозиторий. Интерфейс создания репозитория показан на следующем рисунке:


В上图 указаны шесть мест с номерами, их описание приведено ниже:

1. Название репозитория

Название репозитория, здесь пишется WZMarqueeView, это обязательное поле;

2. Описание

Описание репозитория, это необязательное поле;

3. Общедоступность репозитория

Здесь можно выбрать только Public, это связано с тем, что Private требует денег, и, кроме того, Private делает репозиторий видимым для других, что не имеет смысла делиться;

4. Создавать лиDefault README файл

Полноценный репозиторий должен иметь документацию README, рекомендуется включить его. Конечно, если не хотите заморачиваться, вы можете создать его вручную позже;

5. Добавлять ли файл .gitignore

В файле .gitignore записаны несколько типов файлов, все файлы, включенные в этот файл, git не будет纳入版本ный контроль. Вопрос о выборе зависит от ваших потребностей;

6. Тип лицензии

Регулярные репозитории должны иметь файл лицензии, требования к этому файлу для библиотеки зависимости Pods более строгие, его наличие обязательно. Поэтому лучше, чтобы github создал его здесь, или вы можете создать его позже. Тип лицензии, который я использую, - MIT.

После заполнения всех вышеуказанных полей, нажмите кнопку Create repository, успешный интерфейс создания будет выглядеть так:


До этого момента процесс создания репозитория завершен.

Второй шаг: клонировать репозиторий на локальный уровень
Для удобства удаления содержимого из репозитория необходимо сначала клонировать его на локальный уровень, способ executions может быть различным, рекомендуется использовать командную строку:

$ git clone https://github.com/wangzz/WZMarqueeView.git

После выполнения операции соответствующие файлы на github будут скопированы на локальный уровень, структура каталога будет выглядеть так:

Файл .gitignore в репозитории github является скрытым файлом, начинающимся с точки, поэтому здесь видны только два.
Все наши будущие операции по добавлению, удалению и изменению файлов будут производиться в этой директории.

Третий шаг: добавить в локальный репозиторий файлы, необходимые для создания библиотеки зависимости Pods

Внимание: все описанные файлы должны быть放在 корневой директории репозитория, клонированного на локальный уровень в第二步.
1. Файлы с суффиксом .podspec
Этот файл является описательным файлом для библиотеки зависимости Pods, каждая библиотека зависимости Pods должна иметь и только иметь один описательный файл. Название файла должно соответствовать названию библиотеки зависимости, которую мы хотим создать, поэтому для моей библиотеки зависимости WZMarqueeView файл называется WZMarqueeView.podspec.
1.1 podspec文件内容

WZMarqueeView.podspec的保存内容为:

Pod::Spec.new do |s|
 s.name       = "WZMarqueeView"
 s.version     = "1.0.0"
 s.summary     = "A marquee view used on iOS."
 s.description   = <<-DESC
            It is a marquee view used on iOS, which implement by Objective-C.
            DESC
 s.homepage     = "https://github.com/wangzz/WZMarqueeView"
 # s.screenshots   = "www.example.com/screenshots_1", "www.example.com/screenshots_2"
 s.license     = 'MIT'
 s.author      = { "王中周" => "[email protected]" }
 s.source      = { :git => "https://github.com/wangzz/WZMarqueeView.git", :tag => s.version.to_s }
 # s.social_media_url = 'https://twitter.com/NAME'
 s.platform   = :ios, '4.3'
 # s.ios.deployment_target = '5.0'
 # s.osx.deployment_target = '10.7'
 s.requires_arc = true
 s.source_files = 'WZMarqueeView/*'
 # s.resources = 'Assets'
 # s.ios.exclude_files = 'Classes/osx'
 # s.osx.exclude_files = 'Classes/ios'
 # s.public_header_files = 'Classes/**/*.h'
 s.frameworks = 'Foundation', 'CoreGraphics', 'UIKit'
end

Этот файл является файлом ruby, все статьи в нем легко понять.
В котором необходимо описать несколько параметров:
① s.license
Тип лицензии, используемый библиотекой зависимостей Pods, заполните свой выбор.
② s.source_files
Это путь к исходным файлам, обратите внимание, что этот путь относителен к файлу podspec.
③ s.frameworks
Необходимо использовать frameworks, не добавляя суффикс .frameworks.

1.2 Как создать файл podspec

Создание собственного файла podspec можно сделать двумя способами:
① Скопируйте мой файл podspec и измените соответствующие параметры, рекомендуется использовать этот способ.
② Выполните следующую команду создания:

$ pod spec create WZMarqueeView

Будет также создан файл WZMarqueeView.podspec. Но открыв созданный файл, вы就会发现, что в нем слишком много东西, много из которых нам не нужны.

2, файл лицензии
CocoaPods требует, чтобы все библиотеки зависимостей Pods имели файл лицензии, в противном случае проверка не будет успешной. Есть много типов лицензий, подробности можно найти на сайте tl;dr Legal. При создании github хранилища я уже выбрал тип лицензии MIT.

3, файл основного класса
Создание библиотек зависимостей Pods предназначено для удобства использования наших достижений другими, например, класс WZMarqueeView, который я хочу поделиться с вами, является необходимым для предоставления широкому кругу пользователей. Я поместил два файла этого класса в папку с названием WZMarqueeView, структура каталога показана на рисунке:

В нем содержатся два файла: WZMarqueeView.h и WZMarqueeView.m

4, демонстрационный проект
Чтобы быстро обучить других использовать нашу библиотеку зависимостей Pods, обычно необходимо предоставить демонстрационный проект. Я создал демонстрационный проект и поместил его в папку WZMarqueeViewDemo, содержащую файлы, как показано на следующем рисунке:

5, README.md
Люди, использующие github, должны быть знакомы с этим файлом, он является必不可少ной частью успешного github хранилища, написанного на языке маркировки markdown, предназначенного для детального описания хранилища.

Названные выше 5 файлов являются最基本的 файлами для создания библиотек зависимостей Pods, из которых 1, 2, 3 обязательны, а 4, 5 являются опциональными, но рекомендуется их создание.
После добавления этих файлов мой локальный репозиторий GitHub стал выглядеть так, как показано на следующем рисунке:

4. Подача изменений в GitHub
После шага три в локальный git-хранилище добавлено много файлов, теперь их нужно提交 в GitHub-хранилище. Процесс提交 включает следующие шаги:
1. Проверка pod
Выполните следующие команды:

$ set the new version to 1.0.0
$ set the new tag to 1.0.0

Эти две команды добавляют версию и ставят tag для pod, а затем выполняют команду проверки pod:

$ pod lib lint

Если все в порядке, после выполнения этой команды会出现以下输出:

 -> WZMarqueeView (1.0.0)
WZMarqueeView прошел проверку.

Таким образом, проверка pod завершена.
Следует отметить, что при выполнении команды pod validate, если будут выведены какие-либо сообщения о warning или error, проверка будет неудачной! Если возникает异常, информация будет очень детальной, и вы можете сделать соответствующие изменения на основе этих提示ов.

2. Загрузка изменений из локального git-хранилища в GitHub-хранилище
Следуйте依次执行以下命令:

$ git add -A && git commit -m "Release 1.0.0"
$ git tag '1.0.0'
$ git push --tags
$ git push origin master

Указанные команды относятся к категории git, и здесь не будем вдаваться в подробности. Если все прошло顺利, на GitHub должны появиться добавленные вами данные.如下图所示:

Пятый шаг: Загрузка файла podspec в официальный репозиторий CocoaPods
После выполнения предыдущих четырех шагов, вы можете подумать, что все结束了, но, к сожалению, это еще не все.

Чтобы библиотека зависимости Pods была действительно доступна, нужно выполнить последний шаг: загрузить только что созданный файл podspec на официальный Specs репозиторий CocoaPods по адресу: https://github.com/CocoaPods/Specs

Открыв эту ссылку, вы обнаружите, что все те, что мы можем использовать, и все, что мы можем найти с помощью команды pod search, загружают свои файлы podspec в этот репозиторий. Это означает, что только после загрузки нашего файла podspec в этот репозиторий, он становится真正的 библиотекой зависимости Pods, и другие могут использовать ее normalmente!

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

После того как вы明白了 процесс,自然会知道, что делать дальше:
1. Fork-овать официальный репозиторий Specs CocoaPods
Перейдите на ссылку официального репозитория, нажмите на кнопку 'fork' в верхнем правом углу экрана, как показано на следующем изображении:



Затем вы обнаружите, что у вас появилась новая ветка репозитория. Например, у меня ветка называется:

2. Клонировать fork-овый репозиторий в локальную систему
Выполните следующие команды:

$ git clone https://github.com/wangzz/Specs.git

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

3. Добавьте свой файл podspec в локальный репозиторий Specs.
После клонирования Specs репозитория в локальную систему, он будет помещен в папку с именем Specs. Принцип сохранения файла podspec в репозитории Specs:
Папка с зависимостями Pods -> Папка с номером версии -> файл podspec
Согласно этому принципу, мне нужно создать папку с именем WZMarqueeView в папке Specs, затем перейти в папку WZMarqueeView и создать папку с именем 1.0.0, после чего перейти в папку 1.0.0 и скопировать в нее созданный ранее файл WZMarqueeView.podspec.
Несложно понять, что если в будущем будет обновление класса WZMarqueeView, нужно создать папку с соответствующим названием версии в папке WZMarqueeView, чтобы сохранить файл podspec соответствующей версии.
После выполнения этих операций, структура каталога будет выглядеть следующим образом:

4. Загрузите изменения из локального репозитория Specs на GitHub.
Выполните следующие команды:

$ git add -A && git commit -m "Add WZMarqueeView podspec file"
$ git push origin master

После успешного выполнения, вы сможете увидеть только что загруженные файлы в вашем fork-овом репозитории на GitHub.

5. Импортируйте изменения, которые вы сделали в вашем fork-овом Specs, в официальный репозиторий Specs CocoaPods.
Перейдите в свой fork-овый репозиторий Specs, и вы увидите зеленую кнопку в верхнем левом углу экрана:


После нажатия на кнопку, вы увидите экран, как показано на следующем изображении:

Нажмите на зеленую кнопку 'Create Pull Request' на изображении, чтобы импортировать изменения, которые вы сделали в наших fork-ах Specs, в официальный репозиторий Specs CocoaPods.

После этого, оставшаяся работа заключается только в ожидании, ожидании, чтобы сотрудники CocoaPods проверили и объединили наши изменения, которые мы pulled, с официальным хранилищем Specs. Этот процесс обычно занимает около одного дня. Если есть какие-либо сообщения, например, если проверка не прошла, или если проверка прошла, официальная команда CocoaPods отправит вам письмо с уведомлением.
Когда проверка будет завершена, мы сможем увидеть созданную нами папку в официальном хранилище Specs.

6. Проверка прогресса
Конечно, мы можем проверить прогресс проверки, открыв эту ссылку:https://github.com/CocoaPods/Specs/pullsЗдесь можно увидеть все запросы на pull Specs хранилища, как показано на следующем рисунке:

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

Шестая часть: проверить我们自己 созданную библиотеку зависимостей Pods
Если вы получили письмо с одобрением от официального CocoaPods, возможно, вы очень хотите выполнить команду pod search на своем компьютере, чтобы проверить, можно ли найти созданную вами библиотеку зависимостей Pods. Однако вы, вероятно, будете разочарованы, так как для использования команды search на локальном компьютере还需要 выполнить одну команду:

$ pod setup

В первой части моей серии руководств по CocoaPods: в последней части раздела 'Улучшенный курс' я介绍了 эту команду, которая обновляет дерево всех библиотек зависимостей Pods на локальном компьютере. После выполнения этой команды, выполните:

$ pod search WZMarqueeView

и появится соответствующая информация!

После всего сказанного, процесс создания библиотеки зависимостей Pods才算真正结束! Друзья, вы успешны? Если у вас есть проблемы, пожалуйста, оставьте комментарий.

Седьмая часть: документация

1、http://guides.cocoapods.org

Рекомендуем для просмотра