Недавно я работал над проектом, который предполагал, что клиенты будут настраивать и интегрировать наш сервис со своими существующими мобильными приложениями. Сначала я подумал, что это будет достаточно простой процесс, чтобы они сами смогли разобраться с помощью простой документации. Однако по мере того, как мы добавляли больше функций, работа с их стороны становилась все более сложной, и мы поняли, что это больше не является работоспособным решением.
Мы поняли, что, продолжая использовать наш первоначальный подход невмешательства, мы откроем дверь для бесчисленных непредвиденных проблем в будущем и, возможно, у конечных пользователей будет меньше возможностей, если наши партеры неправильно настроили приложение.
Это привело нас к окончательному решению, что наилучшим подходом будет создание собственного SDK, который мы затем сможем распространить среди клиентов, что резко сократит время и усилия, затрачиваемые их командой разработчиков, а также уменьшит количество ошибок, которые могут всплывает во время процесса начальной настройки.
В этом посте будет рассмотрен процесс настройки простого пакета iOS, расскажут о некоторых распространенных ловушках, с которыми вы можете столкнуться в процессе, узнайте, как тестировать локально, и, наконец, опубликуйте в SPM (Swift Package Manager).
Создание нового пакета
Xcode
Создание нового пакета изнутри Xcode занимает около 5 секунд. Перейдите в Файл ›Новый› Пакет Swift, затем сохраните пакет в любом месте.
Командная строка
Кроме того, вы можете создать пакет из командной строки, выполнив:
Настройка вашего Swift-пакета
Пакеты Swift не используют
.xcproject
или.xcworkspace
, а полагаются на свою структуру папок и используютPackage.swift
файл для дополнительной настройки. В следующем листинге кода показан простой манифест пакета.
Код
На этом этапе у вас будет файл с именем MediumSDK.swift (или как там называется ваш пакет) в каталоге Sources. Здесь мы будем хранить код, который необходимо включить в наш SDK.
На этом этапе вы должны добавить сюда все функции, необходимые для вашего SDK. Для моего проекта мне понадобился предварительно настроенный WKWebView, который я мог бы отправить нашим партнерам. Вот урезанная версия чего-то похожего на то, что я в итоге использовал.
Затем вы должны добавить этот файл в папку Sources / MediumSDK или Sources / YourPackageNameHere. При добавлении настраиваемого класса следует обратить внимание на несколько моментов:
- Убедитесь, что ваш класс (или протокол, или функция) является общедоступным, иначе ваш проект, который его импортирует, не сможет получить к нему доступ
- Обязательно соберите пакет внутри Xcode перед публикацией в git. Это позволит выявить ошибки, которые вы иначе бы не заметили, и сэкономит массу времени на отладку.
- Протестируйте локально, прежде чем нажимать на git (я расскажу, как это сделать дальше)
Варианты развертывания
Локальное тестирование
Перед публикацией вашего пакета в любом месте вы определенно захотите убедиться, что интегрировали и протестировали его с проектом Xcode локально.
Сделать это довольно просто. Сначала вам нужно убедиться, что ваши файлы отслеживаются git и что у вас зафиксированы самые последние изменения. Как только об этом позаботятся, вы готовы импортировать пакет в проект Xcode для тестирования.
Найдите и скопируйте абсолютный путь к вашему пакету, затем перейдите в Файл ›Пакеты Swift› Добавить зависимость пакета…, и введите file: // {path} в качестве URL-адреса. На этом этапе вы можете выбрать, какую ветку, идентификатор фиксации или версию вы хотите использовать. Продолжите, и он автоматически установит и свяжет ваш проект, а также любые зависимости.
Если вы вносите какие-либо изменения в свой код, обязательно зафиксируйте их, а затем обновите пакет в Xcode. Вы можете сделать это, перейдя в Файл ›Swift› Пакеты ›Обновить до последних версий пакетов.
Публикация в SPM (Swift Package Manager)
Когда вы будете готовы к публикации в SPM, процесс станет почти таким же простым, как и локальное тестирование. Просто отправьте свои локальные коммиты в GitHub (или любое другое репозиторий кода), и вы можете выполнить описанный выше процесс, просто заменив локальный путь к файлу на URL-адрес репо.
Публикация в CocoaPods
Еще один очень популярный менеджер пакетов - CocoaPods. Публикация в CocoaPods немного сложнее, чем SPM, но если вы хотите максимально упростить интеграцию вашего пакета другими разработчиками, я определенно рекомендую изучить его.
Вот ссылка на документацию на сайте CocoaPods, если вам интересно: