Перейти к содержимому

Gradle "без боли" / Почему Kotlin DSL? / Пишем плагины - Осип Фаткуллин

red_mad_robot Android

0:00 / 0:00

Gradle "без боли" / Почему Kotlin DSL? / Пишем плагины - Осип Фаткуллин

5 939 просмотров · 5 л. назад
red_mad_robot Android
165 подписчиков
5 939 просмотров · 5 л. назад
Разбираемся для чего нужен Gradle, чем же плох Groovy и почему мы в red_mad_robot MSK переехали на Kotlin DSL. Разбираем какие есть неочевидные APIшки в Gradle про которые точно нужно знать если собираетесь писать плагины. А ещё будет много практики! Первый час - теоретическая часть, остальные полтора часа - практическая (livecoding). NOTE: Подразумевается, что вы уже умеете писать build-скрипты Gradle, но ещё не умеете писать плагины. Или хотите переехать с Groovy на Kotlin. Ссылки из презентации: Groovy - спецификация языка: http://www.groovy-lang.org/documentat... Gradle Kotlin DSL Primer - как использовать Kotlin DSL и как на него мигрировать с Groovy: https://docs.gradle.org/current/userg... Gradle Initialization Scripts - зачем нужны скрипты инициализации и как их писать: https://docs.gradle.org/current/userg... Existing vs New API overview - какие API нужно использовать, чтобы работала Configuration Avoidance: https://docs.gradle.org/current/userg... Developing Custom Gradle Plugins - первая статья из раздела "Extending Gradle". Но вообще нужно прочитать весь раздел, чтобы писать плагины правильно: https://docs.gradle.org/current/userg... Теоретическая часть: 00:00:00 - О чем будем говорить 00:00:54 - Есть ли жизнь без систем сборки? 00:04:39 - Немного истории 00:07:08 - Появление Gradle и что это нам даёт? 00:09:14 - Groovy (не) помогает, Функции 00:12:10 - Groovy: Строки и типизация 00:15:50 - Groovy: Динамические вызовы 00:19:32 - Почему Kotlin DSL? 00:21:18 - Пример миграции на Kotlin DSL 00:23:04 - Kotlin DSL: Accessors и "динамические" вызовы 00:26:21 - Kotlin DSL: Миграция extras 00:30:15 - Основные сущности Gradle 00:33:16 - Gradle: Plugin и Task 00:35:34 - ЖЦ сборки Gradle: Инициализация 00:37:13 - ЖЦ сборки Gradle: Конфигурация и выполнение 00:38:48 - Оптимизация этапа конфигурации 00:42:54 - Lazy Properties 00:46:04 - Подробнее о Configuration Avoidance 00:48:38 - Кэширование выполнения задач Практическая часть (livecoding): 00:50:40 - Переходим к практике 00:52:27 - Что будем делать 00:54:46 - Подготавливаем buildSrc 00:56:20 - Первый Precompiled Script Plugin и первые трудности 01:06:06 - Применяем Precompiled Script Plugin 01:10:22 - Выносим конфигурацию Kotlin 01:19:52 - Заставляем accessor'ы работать 01:23:44 - Выносим общие конфиги Android 01:29:28 - Создаём конфиг для версий SDK 01:36:35 - Ошибки при создании экстеншенов 01:39:19 - Managed Types - Gradle всё создаст за нас 01:41:48 - Добиваемся генерации accessor'а для экстеншена 01:45:41 - Используем конфиг в плагине 01:55:08 - Про порядок конфигурации и использования настроек 02:00:08 - Создаём task для инкремента версии 02:06:26 - Используем созданный task 02:09:27 - Прикручиваем кэширование к нашей задачке 02:13:28 - Добавляем Internal опцию 02:15:47 - Делаем цепочку из задач 02:20:09 - А теперь улучшаем цепочку 02:21:53 - Gradle Infrastructure