Рубрики
Без рубрики

Улучшенное управление зависимостями в Android Studio 3.5 с версиями Gradle buildSrc

Выпущена Android Studio 3.5! Вы уже обновили информацию? Перейти к https://developer.android.com/studio , я ж… С тегами android, java, kotlin, showdev.

Выпущена Android Studio 3.5! Вы уже обновили информацию? Перейти к https://developer.android.com/studio , я буду ждать.

Лично я больше всего взволнован не какой-либо новой функцией, а исправлением ошибки , которое снова делает актуальным для разработчиков Android мой проект с открытым исходным кодом для управления зависимостями.

jmfayard/обновленные версии

Жизнь слишком коротка, чтобы искать в Google зависимости и версии

Жизнь слишком коротка, чтобы искать в Google зависимости и версии.

Документация находится по адресу jmfayard.github.io/refresh Варианты исполнения

Этот проект родился из растущего отвращения к этому темному уголку Android Studio:

🙀 Сбой синхронизации проекта Gradle. [ Попробуйте еще раз ] 🙀

“Попробуйте еще раз” – это своего рода неправильное название здесь.

Поддержка Android Studio для редактирования файлов Gradle была плохой 😿

Android Studio – это вообще великолепная ИДЕЯ, и интеграция с Gradle является ее важным компонентом. Таким образом, вы ожидали бы иметь отличную поддержку инструментов для редактирования ваших файлов сборки.

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

Опыт разработчика становится больше похожим на то, что вы ожидаете от мира JavaScript. Вы копируете/вставляете некоторые материалы с какого-то веб-сайта, надеюсь, в нужном месте (что нетривиально!). Надеясь на лучшее, вы запускаете его, и выдается загадочное сообщение об ошибке. Промойте и повторите процедуру.

Почему инструментарий такой плохой? Почти по тем же причинам, что и в мире javascript: мы делаем много метапрограммирования (с плагинами Gradle), используя динамический язык (Groovy).

У Gradle есть правильный долгосрочный план по преодолению этой проблемы: пишите меньше Groovy и больше Kotlin.

Но в то время как Kotlin, вероятно, является будущим, Groovy – это настоящее. И нам нужен некоторый постепенный прогресс, чтобы помочь нам здесь и сейчас с нашими существующими сборками.

Модуль Gradle “buildSrc” 😼

С Android Studio 3.5 на помощь приходит модуль Gradle “buildSrc”.

buildSrc – это модуль Gradle, в котором вы можете писать код Kotlin, как обычно (с полной поддержкой инструментов). Затем этот код будет доступен для всех ваших файлов сборки, а не для вашего конечного приложения. Важно отметить, что IntelliJ IDEA и Android Studio имеют хорошую поддержку для вызова его из build.gradle

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

Основной вариант использования, который я имел в виду, состоял в том, чтобы заменить эти файлы Groovy libraries.gradle мы привыкли писать:

Это довольно просто, но… должен ли я писать весь этот код вручную?

Лень – одно из трех великих достоинств программиста, поэтому я написал плагин, который запрашивает Gradle, какие зависимости использует мой проект, и позволяет KotlinPoet генерировать эти файлы.

Версии Gradle buildSrc 😸

Установите плагин, отредактировав свой корневой build.gradle(.kts) файл следующим образом:

Плагин добавляет задачу в вашу сборку, также называемую :build Src Versions .

Запустите его следующим образом:

Синхронизируйте свою сборку Gradle.

Теперь вы можете начать заменять свои волшебные строки свойствами, доступными в Библиотеки.ktutorial

Наконец-то инструмент IDE, которого мы заслуживаем:

  • автоматическое завершение
  • переход к определению

Но более важная половина того, что делает плагин, – это автоматический поиск для вас, какие новые версии доступны для всех ваших зависимостей!

😻 Поиск обновлений зависимостей

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

  • Немногие проекты имеют версионную документацию: master/README.md – это их документация. Это означает, что вы можете тратить время на тестирование фрагментов кода, которые не работают в используемой вами версии.
  • Когда вы открываете проблему, вас часто спрашивают: можете ли вы воспроизвести эту проблему в последней версии?
  • С другой стороны, вы не хотите ломать свое приложение, потому что произошло критическое изменение, и вы не потрудились прочитать ЖУРНАЛ ИЗМЕНЕНИЙ, документирующий его.

Этот плагин наследует от ben-manes/gradle-versions-plugin функцию автоматического определения того, какие зависимости имеют обновления.

Когда вы решите, что хотите обновить некоторые зависимости, снова запустите плагин:

Файл Versions.kt восстанавливается с комментарием , указывающим, какая новая версия доступна.

На данный момент ваша сборка точно такая же. Совершать.

Не тратьте свое время на то, чтобы вручную выяснить, какая именно последняя доступная стабильная версия. Вместо этого потратьте его на то, чтобы решить, хотите ли вы обновлять версию или нет. Формат оптимизирован для обновления с помощью одной клавиши УДАЛЕНИЯ:

Этот скринкаст показывает это в действии:

Как только вы закончите:

  • Синхронизируйте свою сборку Gradle
  • Запустите свои модульные тесты и иным образом убедитесь, что это работает.
  • Совершать.

Покажите мне пример! 😽

Я отправил запрос на извлечение в dev.to приложение для Android

Описание

Здравствуйте, я переработал сборку Gradle, чтобы использовать версии Src сборки моего плагина для управления зависимостями.

Файлы {Библиотеки,версии}.kt были созданы с помощью команды $ ./gradlew сборка Версий Src

См. См.

Смотрите эту статью https://dev.to/jmfayard/better-dependency-management-in-android-studio-3-5-with-gradle-buildsrcversions-34e9

следующие шаги

В настоящее время версии в зависимостях точно такие же, как и в master.

Если вы хотите обновить Kotlin, отредактируйте Versions.kt

Если вы хотите обновить Gradle, запустите $ ./gradle wrapper

Что нового в Android Studio 3.5 🆕 ?

Позвольте мне немного вернуться назад: buildSrc технически не является чем-то новым. Gradle сделал его доступным несколько лет назад и широко используется в проектах JVM/IntelliJ. Но это вполне может быть новым для вас : интеграция IDE, которая делает его игровым чейнджером, запущена в Android Studio 3.2. Без достаточной огласки. А затем он был сломан сразу после этого в Android Studio 3.3 и 3.4 с ошибкой # 123032843 .

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

В заключение я поделюсь своей любимой реакцией после первой публикации этой истории:

Список литературы 📚

Github

jmfayard/обновленные версии

Жизнь слишком коротка, чтобы искать в Google зависимости и версии

Жизнь слишком коротка, чтобы искать в Google зависимости и версии.

Документация находится по адресу jmfayard.github.io/refresh Варианты исполнения

Оригинал: “https://dev.to/jmfayard/better-dependency-management-in-android-studio-3-5-with-gradle-buildsrcversions-34e9”