Cocoapods, Карфаген - ›SPM

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

Этот фреймворк доступен на GitHub как BartisUtilities (прошу прощения за мой нарциссизм). Я не видел необходимости публиковать его как Cocoapod или как проект Carthage, поскольку я в основном использую отрывки из него, и только один личный проект полностью импортирует его. Это не проблема для одного проекта - создать новую версию фреймворка в Xcode и просто заменить ее в проекте, который она использовала. Но если бы мне пришлось делать это в нескольких проектах, это было бы хлопотно.

Войдите в Swift Package Manager. Конечно, это не ново, но, как мы видели во время WWDC в этом году, стало очень легко создавать пакеты Swift прямо из Xcode 11.

Это довольно простой и понятный процесс, который займет не более 30 минут, так что приступим.

Вам, конечно же, понадобится Xcode 11 и существующая платформа iOS.

  1. Во-первых, давайте посмотрим на существующую структуру проекта.

Как видите, он в основном разделен на две группы: фактический источник и одна для модульных тестов. В самой папке также есть README.md, но он не импортирован в проект. Сделаем это сейчас, поскольку это требуется для пакета Swift.

2. Чтобы упростить нашу жизнь и, если это возможно для всех, мне нравится организовывать проект так, как он описан в официальной документации Apple, переименовывая группы, чтобы они содержали настоящие слова Пакет и Тесты.

Затем переместите их в группу Sources и Tests.

Подсказка: вам может потребоваться обновить пути Info.plist в настройках проекта.

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

Откройте окно терминала в корне проекта и запустите

swift package init — type library

Вы должны увидеть такой результат:

Alex@Maculetz BartisUtilities % swift package init — type library
Creating library package: BartisUtilities
Creating Package.swift
Creating Sources/
Creating Sources/BartisUtilities/BartisUtilities.swift

Заглянув в свой проект, вы увидите, что Package.swift пришел на вечеринку.

3. а. На этом этапе пора закрыть существующий Xcode, потому что мы собираемся сгенерировать новый .xcodeproj.

В том же окне терминала запустите

swift package generate-xcodeproj

Вы должны увидеть такой успешный результат:

Alex@Maculetz BartisUtilities % swift package generate-xcodeproj
generated: ./BartisUtilities.xcodeproj

Давайте откроем новый проект и посмотрим.

Первое, что вы заметите, это то, что теперь все ваши папки в корневом каталоге сопоставлены с проектом Xcode. В моем случае он также добавил SampleApp в проект и всю документацию, созданную Jazzy. Для меня это не проблема, но если это для вас, вы можете очистить структуру своего проекта как обычно.

3. б. На этом этапе, если вы столкнетесь с проблемами при создании нового .xcodeproj (как я впервые сделал это), добавьте путь к исходным файлам в файле манифеста в группе targets.

4. Постройте вновь созданную схему MyProject-Package.

5. Протестируйте вновь созданную схему MyProject-Package.

Если все строится и тестируется нормально, мы переходим к последней части: публикации.

6. Зафиксируйте. Толкать. Создайте тег для вашей текущей версии.

Вот и все!

Теперь вы можете перейти в другой проект, нажать на проект в Project Navigator, выбрать Swift Packages, и нажать +. Теперь вставьте URL-адрес .git следующим образом: https://github.com/trusk89/BartisUtilities.git

Затем нажимайте «Далее», пока он не будет импортирован.