Плагин 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 .
Новые функции
Новые конфигурации зависимостей проверки lint: поведение
lintChecks
изменилось, и была введена новая конфигурация зависимостиlintPublish
, чтобы предоставить вам больше контроля над тем, какие проверки lint будут упакованы в ваши библиотеки Android.-
lintChecks
: это существующая конфигурация, которую следует использовать для проверок lint, выполняемых только при локальной сборке проекта. Если ранее вы использовали конфигурацию зависимостиlintChecks
для включения проверок lint в опубликованный 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 выдаст предупреждение об устаревании. Чтобы убедиться, что вы сможете создавать приложения с мгновенным запуском в будущих версиях плагина, переведите своё приложение с мгновенным запуском на использование плагина Dynamic Feature , который также позволяет публиковать как установленные, так и мгновенные версии приложений из одного пакета 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
возникает ошибка сборки. Вместо этого для добавления кода C и C++ в проект следует использовать CMake или ndk-build.
Известные проблемы
В настоящее время правильное использование уникальных имён пакетов не является обязательным, но станет более строгим в последующих версиях плагина. В плагине Gradle для Android версии 3.4.0 вы можете включить проверку того, объявляет ли ваш проект допустимые имена пакетов, добавив следующую строку в файл
gradle.properties
.android.uniquePackageNames = true
Дополнительные сведения об установке имени пакета с помощью плагина Android Gradle см. в разделе Установка идентификатора приложения .