Плагин 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 ProGuard представлял собой отдельный этап компиляции, отличный от индексации и               обессахаривание.

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

С R8 обессахаривание, сжатие, запутывание, оптимизация и       все dexing выполняются за один шаг компиляции.

Имейте в виду, что 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 файл gradle.properties .

  • ndkCompile устарел: теперь вы получаете сообщение об ошибке сборки, если пытаетесь использовать ndkBuild для компиляции собственных библиотек. Вместо этого вам следует использовать CMake или ndk-build для добавления кода C и C++ в ваш проект .

Известные проблемы

  • Правильное использование уникальных имен пакетов в настоящее время не предусмотрено, но в более поздних версиях плагина оно станет более строгим. В плагине Android Gradle версии 3.4.0 вы можете проверить, объявляет ли ваш проект приемлемые имена пакетов, добавив строку ниже в файл gradle.properties .

              android.uniquePackageNames = true
              
            

    Дополнительные сведения о настройке имени пакета с помощью плагина Android Gradle см. в разделе Установка идентификатора приложения .