Android Gradle Plugin 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изменилось, и была введена новая настройка зависимостей,lintPublish, которая дает вам больше контроля над тем, какие проверки линтинга будут включены в ваши библиотеки Android.-
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 объединяет десахаризацию, уменьшение размера, обфускацию, оптимизацию и dex-кодирование в один шаг, что приводит к заметному улучшению производительности сборки . 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, см. раздел «Установка идентификатора приложения» .