#Performance #Gradle #Marble #AndroidGradlePlugin
Improving build speed in Android Studio
Статья о том как Google старается улучшить скорость сборки приложения в Android Studio (AS), хотя не совсем это получается по результатам работы на разных проектах. Причин этому несколько:
👉 Рост кодовой базы
👉 Spectre и Meltdown патчи снизили скорость процессоров
👉 Сторонние и собственные Gradle плагины, которые не поддерживают API последних версий Gradle, позволяющих ускорить сборку
👉 Использование Java 8 - приводит к работе desugar, что увеличивает время сборки. D8 и R8 позволяют снизить негативный эффект.
👉 Использование Kotlin, в особенности Kotlin annotation processing (KAPT), влияет на сборку
👉 Множество библиотек, построенных на Android Support Library, и требующих работы Jetifier при использование AndroidX библиотек
Для того чтобы решить проблемы Google активно работает с Gradle и JetBrains.
Google сделала множество улучшений в последних версиях Android Gradle Plugin:
👉 namespaced resources
👉 Инкрементальный annotation processor
👉 Поддержка Gradle Worker API
👉 Миграция на Gradle Lazy API
Как исправить положение дел в вашем проекте:
👉 Анализируйте производительность сборки вашего проекта с помощью Gradle Scan или Gradle profiler
👉 Используйте Gradle Lazy API, избегайте использовать I/O или любых других длительных операций
👉 Настраивайте все task-и в фазе конфигурации
👉 Настраивайте входные и выходные файлы/папки, чтобы ваши результат task-ов могли кэшироваться
👉 Разделяйте большие task-и на более мелкие, чтобы они могли кэшироваться независимо и выполняться инкрементально
👉 Убедитесь что один task не затирает результаты другого
👉 Используйте языки со статической типизацией (Java/Kotlin) вместо динамически типизируемых (Groovy) для написания ваших плагинов и Gradle скриптов
Improving build speed in Android Studio
Статья о том как Google старается улучшить скорость сборки приложения в Android Studio (AS), хотя не совсем это получается по результатам работы на разных проектах. Причин этому несколько:
👉 Рост кодовой базы
👉 Spectre и Meltdown патчи снизили скорость процессоров
👉 Сторонние и собственные Gradle плагины, которые не поддерживают API последних версий Gradle, позволяющих ускорить сборку
👉 Использование Java 8 - приводит к работе desugar, что увеличивает время сборки. D8 и R8 позволяют снизить негативный эффект.
👉 Использование Kotlin, в особенности Kotlin annotation processing (KAPT), влияет на сборку
👉 Множество библиотек, построенных на Android Support Library, и требующих работы Jetifier при использование AndroidX библиотек
Для того чтобы решить проблемы Google активно работает с Gradle и JetBrains.
Google сделала множество улучшений в последних версиях Android Gradle Plugin:
👉 namespaced resources
👉 Инкрементальный annotation processor
👉 Поддержка Gradle Worker API
👉 Миграция на Gradle Lazy API
Как исправить положение дел в вашем проекте:
👉 Анализируйте производительность сборки вашего проекта с помощью Gradle Scan или Gradle profiler
👉 Используйте Gradle Lazy API, избегайте использовать I/O или любых других длительных операций
👉 Настраивайте все task-и в фазе конфигурации
👉 Настраивайте входные и выходные файлы/папки, чтобы ваши результат task-ов могли кэшироваться
👉 Разделяйте большие task-и на более мелкие, чтобы они могли кэшироваться независимо и выполняться инкрементально
👉 Убедитесь что один task не затирает результаты другого
👉 Используйте языки со статической типизацией (Java/Kotlin) вместо динамически типизируемых (Groovy) для написания ваших плагинов и Gradle скриптов
Medium
Improving build speed in Android Studio
Posted by Leo Sei, Product manager on Android Studio
👍1
#AndroidGradlePlugin
Google Play Instant feature plugin deprecation
В Android Gradle Plugin 3.4.0 (AGP) помечены как deprecated 2 Gradle плагина:
Для тех кто использовал одни из старых плагинов нужно мигрировать на плагин
Руководство по миграции
Google Play Instant feature plugin deprecation
В Android Gradle Plugin 3.4.0 (AGP) помечены как deprecated 2 Gradle плагина:
com.android.feature и com.android.instantapp. Изменения связаны с тем что в AGP 3.3.0 была добавлена поддержка Instant приложений в Android App Bundle.Для тех кто использовал одни из старых плагинов нужно мигрировать на плагин
com.android.dynamic-feature.Руководство по миграции
👍1
#Gradle #AndroidGradlePlugin
Simple Guide to Android Product Flavors
Разбор в подробностях различных сборок приложения и как этот механизм реализован в Android Gradle Plugin c помощью
Simple Guide to Android Product Flavors
Разбор в подробностях различных сборок приложения и как этот механизм реализован в Android Gradle Plugin c помощью
Product Flavor и Build Type.Medium
A Simple Guide to Android Product Flavors
When i first heard of the term product flavors the first thing that came into mind had nothing to do with Android…
#AndroidGradlePlugin #Gradle #KotlinDSL
New APIs in the Android Gradle Plugin
Статья с обзором изменений в Android Gradle Plugin (AGP) 4.1. Нас ждет:
👉 Полная поддержка Gradle Kotlin DSL. Добились этого за счет выделения интерфейсов API и они написаны на Kotlin
👉 Опубликована новая документация по API AGP
👉 Новое Variant API (пример использования здесь), упрощающее работы с Tasks AGP и зависимостями на них
👉 Новое Artifcat API (пример использования здесь), которое позволяет эффективно управлять артефактами сборки Android проектов
Старое API останется работать и пока не будет удалено, но разработчиком Gradle плагинов стоит обратить внимание на изменения
New APIs in the Android Gradle Plugin
Статья с обзором изменений в Android Gradle Plugin (AGP) 4.1. Нас ждет:
👉 Полная поддержка Gradle Kotlin DSL. Добились этого за счет выделения интерфейсов API и они написаны на Kotlin
👉 Опубликована новая документация по API AGP
👉 Новое Variant API (пример использования здесь), упрощающее работы с Tasks AGP и зависимостями на них
👉 Новое Artifcat API (пример использования здесь), которое позволяет эффективно управлять артефактами сборки Android проектов
Старое API останется работать и пока не будет удалено, но разработчиком Gradle плагинов стоит обратить внимание на изменения
Medium
New APIs in the Android Gradle Plugin
Co-authored with Jerome Dochez