Как добавить список лицензий и благодарностей CocoaPods и при чём тут Settings.Bundle?

Как добавить список лицензий и благодарностей CocoaPods и при чём тут Settings.Bundle?

 Victor

Для этого даже не понадобится писать код (ну почти). CocoaPods по мнению многих доживает свои славные времена, ведь развитие и распространение SPM (Swift Package Manager) продолжает набирать обороты. Но для тех, кто из вас до сих пор использует CocoaPods в проде, эта статья может оказаться актуальной.

В своих проектах я всё ещё использую CocoaPods и задался вопросом, как же отобразить список лицензий. И для сохранения авторских прав, и в качестве благодарности.

Для этого нам понадобится связка плагина CocoaPods и Xcode.


Прежде чем приступить к управлению Settings bundle, давайте вкратце рассмотрим концепцию.

Settings bundle или же пакет настроек рассматривается как ресурс приложения. Каждый раз, когда вы собираете свой проект, Xcode копирует пакет Settings в пакет приложения, а приложение iOS Settings отображает настройки на основе этого бандла.

Следующая диаграмма иллюстрирует этот процесс, когда вы собираете свой проект в Xcode.

Поняв эту концепцию, вы в будущем сможете использовать этот принцип для расширения Settings bundle для своих приложений.


CocoaPods Acknowledgements

Оказывается CocoaPods задумывались об этом раньше и для этого добавили собственный плагин с названием из заголовка.

Он генерирует plist, содержащий метаданные после установки. Плагин поддерживает генерацию двух стилей информации о зависимостях.

  • Settings.bundle compatible plist - этот формат поддерживается большим количеством pods и работает с Settings.app от Apple.
  • Full Podspec metadata plist - Этот формат предоставляет приложению больше информации, позволяя проводить более глубокую проверку, в настоящее время только CPDAcknowledgements работает с этим форматом.

Установка

Для установки с помощью gem install cocoapods-acknowledgements вам необходимо добавить плагин 'cocoapods-acknowledgements' в ваш Podfile.

Примеры

Если вы планируете сами рисовать интерфейс со списком зависимостей:

plugin 'cocoapods-acknowledgements'

Для встраивания в Settings.bundle:

plugin 'cocoapods-acknowledgements', :settings_bundle => true

После выполнения этой команды (например, после pod update) будет сгенерирован файл формата:

Pods-YOUR_TARGET-settings-metadata

Этот файл нам и нужен! Для удобства советую его переименовать, например, в Pods-metadata.

После формирования Settings bundle с помощью Xcode вы получите следующую структуру:


Далее нам нужно преобразовать файл Root.plist из-за бага Xcode, тянущегося едва ли не с 7 версии в формат Info.plist.

После этого необходимо добавить следующие строки:

Пример изменённого Settings.bundle

PSChildPaneSpecifier — нужен для отображения нашего списка зависимостей (лицензий).

В качестве title нужно передать то, как нам хочется видеть этот пункт в списке настроек.


Отображение в списке настроек

Если всё выполнено верно, то вы получите вид, как на иллюстрации ниже.

Результат нашей работы

Конечно, возможности Settings.bundle намного шире представленных в этой статье. Моя же цель была в другом: показать, как можно использовать стандартные инструменты для того, чтобы решить вопрос, связанный, с казалось бы, сторонним решением типа CocoaPods.


Ресурсы для подготовки этой статьи

А про разработку можно прочитать в моём авторском канале.


Report Page