Skip to content

2022 Поддержка AndroidStandard

Margarita Volodina edited this page May 31, 2022 · 3 revisions

Ветка main содержит новую упрощенную билдсистему. Старая осталась в ветке dev/G-0.5.0.

Основные сведения

  • version-plugin используется для удобного версионирования: подключая плагин, указав его глобальную версию, можно затем с помощью него получить локальную версию каждого артефакта без указания вручную по отдельности, этот подход используется в шаблоне при настройке локального подключения
  • CI переехал на github actions вместо Jenkins

Билдсистема

  • Упрощена, но не переписана полностью для сохранения обратной совместимости и минимального вмешательства в проектные снепшоты
  • components.json описывает все компоненты в json-формате, затем файл парсится, и компоненты подключаются с помощью отдельных утилит, описанных в buildSrc, таким образом вся информация о компонентах AS доступна через kotlin-классы
  • Для простоты и минимизации времени сборки из нее исключены примеры (samples к модулям) и deprecated-модули (таким образом также уменьшается связность, упрощается внесение изменений в AS). При необходимости можно любой компонент включить/исключить из билда (свойство "disabled": true в components.json), для samples "enabled_samples": false, пример (сборку можно настраивать гибко при необходимости, например, включить нужный sample локально)
    • чтобы изменения были доступны в snapshot-ветках, необходим merge с веткой main
  • Упрощена логика версионирования

Project snapshot branches

  • Убедиться, что проектная ветка project-snapshot/PROJECT-TAG имеет файлы workflows, если их нет, то следует их сначала добавить (можно взять актуальные из ветки main и запушить в ветку снепшота, это необходимо, чтобы github actions заработали)
  • Миграция версионирования: после деплоя на новой билдсистеме версия изменится, например: старая версия 0.5.0-alpha.202-BET.34, новая версия 0.5.0-BET.35 (последнее число всегда инкрементится, при этом из версии снепшота удалены лишние элементы). Актуальную версию снепшота можно получить из логов деплоя на этапе Deploy version plugin:
> Task :android-standard-version-plugin:publishMavenPublicationToExternalRepository
Publishing ru.surfstudio.android:version-plugin:0.5.0-BET.35 to https://artifactory.surfstudio.ru/artifactory/libs-release-local
Снимок экрана 2022-05-30 в 13 52 11

Остальное

  • permission lib Разделение библиотек (permission, permission-deprecated) возникло из-за разных подходов к навигации (permission-deprecated использует старую навигацию на основе core-navigation, в то время как permission мигрировал на новую навигацию. Таким образом, если ваш проект основан на старой навигации, и миграция не планируется, то permission-deprecated лучше подходит, несмотря на свое название (аналогично для библиотек, использующих permission: location-deprecated, picture-provider-deprecated)