Плагин Android Gradle 3.4.0 (апрель 2019 г.)
Для этой версии плагина Android требуется следующее:
Минимальная версия | Версия по умолчанию | Примечания | |
---|---|---|---|
Градл | 5.1.1 | 5.1.1 | Чтобы узнать больше, см. обновление Gradle . При использовании Gradle 5.0 и выше размер кучи памяти демона Gradle по умолчанию уменьшается с 1 ГБ до 512 МБ. Это может привести к снижению производительности сборки. Чтобы переопределить этот параметр по умолчанию, укажите размер кучи демона Gradle в файле gradle.properties вашего проекта. |
Инструменты сборки SDK | 28.0.3 | 28.0.3 | Установите или настройте инструменты сборки SDK. |
3.4.3 (июль 2020 г.)
Это незначительное обновление поддерживает совместимость с новыми настройками по умолчанию и функциями видимости пакетов в Android 11 .
Подробности см. в примечаниях к выпуску 4.0.1 .
3.4.2 (июль 2019 г.)
Это незначительное обновление поддерживает Android Studio 3.4.2 и включает в себя различные исправления ошибок и улучшения производительности. Чтобы просмотреть список заметных исправлений ошибок, прочитайте соответствующую публикацию в блоге Release Updates .
3.4.1 (май 2019 г.)
Это незначительное обновление поддерживает Android Studio 3.4.1 и включает в себя различные исправления ошибок и улучшения производительности. Чтобы просмотреть список заметных исправлений ошибок, прочитайте соответствующую публикацию в блоге Release Updates .
Новые возможности
Новые конфигурации зависимостей проверки lintChecks: поведение
lintChecks
изменилось, и была введена новая конфигурация зависимостейlintPublish
, которая дает вам больше контроля над тем, какие проверки lintChecks упаковываются в ваши библиотеки Android.-
lintChecks
: это существующая конфигурация, которую следует использовать для проверок на наличие ворса, которые вы хотите запускать только при локальной сборке проекта. Если вы ранее использовали конфигурацию зависимостейlintChecks
для включения проверок lintChecks в опубликованный AAR, вам необходимо перенести эти зависимости, чтобы вместо них использовать новую конфигурациюlintPublish
, описанную ниже. -
lintPublish
: используйте эту новую конфигурацию в библиотечных проектах для проверок, которые вы хотите включить в опубликованный AAR, как показано ниже. Это означает, что проекты, использующие вашу библиотеку, также применяют эти проверки.
В следующем примере кода используются обе конфигурации зависимостей в локальном проекте библиотеки Android.
dependencies { // Executes lint checks from the ':lint' project at build time. lintChecks project(':lint') // Packages lint checks from the ':lintpublish' in the published AAR. lintPublish project(':lintpublish') }
dependencies { // Executes lint checks from the ':lint' project at build time. lintChecks(project(":lint")) // Packages lint checks from the ':lintpublish' in the published AAR. lintPublish(project(":lintpublish")) }
В целом, скорость сборки задач по упаковке и подписанию должна возрасти. Если вы заметили снижение производительности, связанное с этими задачами, сообщите об ошибке .
-
Изменения в поведении
Предупреждение об устаревании плагина Android Instant Apps Feature: если вы все еще используете плагин
com.android.feature
для создания мгновенного приложения, плагин Android Gradle 3.4.0 выдаст вам предупреждение об устаревании. Чтобы убедиться, что вы по-прежнему сможете создавать приложение с мгновенным запуском на основе будущих версий подключаемого модуля, перенесите свое приложение с мгновенным запуском на использование подключаемого модуля динамических функций , который также позволяет публиковать как установленные, так и приложения с мгновенным запуском из одного пакета Android App Bundle.R8 включен по умолчанию: R8 объединяет обессахаривание, сжатие, запутывание, оптимизацию и декодирование за один шаг, что приводит к заметному повышению производительности сборки . R8 был представлен в плагине Android Gradle 3.3.0 и теперь включен по умолчанию для проектов приложений и библиотек Android, использующих плагин 3.4.0 и выше.
На изображении ниже представлен общий обзор процесса компиляции до появления R8.

Теперь, с помощью R8, обессахаривание, сжатие, запутывание, оптимизация и исправление (D8) выполняются за один этап, как показано ниже.

Имейте в виду, что R8 предназначен для работы с существующими правилами ProGuard, поэтому вам, скорее всего, не потребуется предпринимать никаких действий, чтобы воспользоваться преимуществами R8. Однако, поскольку это технология, отличная от ProGuard и разработанная специально для проектов Android, сжатие и оптимизация могут привести к удалению кода, чего не было в ProGuard. Итак, в этой маловероятной ситуации вам может потребоваться добавить дополнительные правила, чтобы сохранить этот код в выходных данных сборки.
Если у вас возникли проблемы с использованием R8, прочитайте часто задаваемые вопросы о совместимости R8, чтобы узнать, есть ли решение вашей проблемы. Если решение не задокументировано, сообщите об ошибке . Вы можете отключить R8, добавив одну из следующих строк в файл gradle.properties
вашего проекта:
# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false
Примечание. Если для данного типа сборки вы установили useProguard
значение false
в файле build.gradle
вашего модуля приложения, плагин Android Gradle использует R8 для сжатия кода вашего приложения для этого типа сборки, независимо от того, отключили ли вы R8 в файле gradle.properties
вашего проекта.
-
ndkCompile
устарел: теперь вы получаете сообщение об ошибке сборки, если пытаетесь использоватьndkBuild
для компиляции собственных библиотек. Вместо этого вам следует использовать CMake или ndk-build для добавления кода C и C++ в ваш проект .
Известные проблемы
Правильное использование уникальных имен пакетов в настоящее время не предусмотрено, но в более поздних версиях плагина оно станет более строгим. В плагине Android Gradle версии 3.4.0 вы можете проверить, объявляет ли ваш проект приемлемые имена пакетов, добавив строку ниже в файл
gradle.properties
.android.uniquePackageNames = true
Дополнительные сведения о настройке имени пакета с помощью плагина Android Gradle см. в разделе Установка идентификатора приложения .