Плагин Android Gradle 3.4.0 (апрель 2019 г.)
Для работы этой версии плагина Android требуются:
| Минимальная версия | Версия по умолчанию | Примечания | |
|---|---|---|---|
| Gradle | 5.1.1 | 5.1.1 | Подробнее о том, как обновить Gradle… При использовании Gradle версии 5.0 и более поздних версий размер кучи памяти демона Gradle по умолчанию уменьшается с 1 ГБ до 512 МБ. Это может привести к снижению производительности сборки. Чтобы переопределить это значение по умолчанию, укажите размер кучи демона Gradle в файле gradle.properties проекта. |
| Инструменты сборки SDK | 28.0.3 | 28.0.3 | Установите или настройте инструменты сборки SDK. |
Это небольшое обновление обеспечивает совместимость с новыми настройками по умолчанию и функциями для видимости пакетов в Android 11.
Подробнее о примечаниях к выпуску 4.0.1.
3.4.2 (июль 2019 г.)
Это небольшое обновление поддерживает Android Studio 3.4.2 и включает различные исправления ошибок и улучшения производительности. Список исправленных ошибок можно найти в блоге об обновлениях.
3.4.1 (май 2019 г.)
Это небольшое обновление поддерживает Android Studio 3.4.1 и включает различные исправления ошибок и улучшения производительности. Список исправленных ошибок можно найти в блоге об обновлениях.
Новые функции
-
Новые конфигурации зависимостей для проверки кода с помощью Lint. Поведение
lintChecksизменилось, а новая конфигурация зависимостейlintPublishпозволяет более точно выбирать, какие проверки кода с помощью Lint будут включены в библиотеки Android.-
lintChecks– существующая конфигурация, которую следует использовать для проверок lint, выполняемых только при локальной сборке проекта. Если вы ранее использовали конфигурацию зависимостейlintChecks, чтобы включить проверки lint в опубликованный AAR, вам нужно перенести эти зависимости на новую конфигурациюlintPublish. -
lintPublish: используйте эту новую конфигурацию в проектах библиотек для проверок lint, которые вы хотите включить в опубликованный 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 десахаризация, сжатие, обфускация, оптимизация и преобразование в формат DEX (D8) выполняются за один шаг, как показано ниже.
Обратите внимание, что R8 предназначен для работы с существующими правилами ProGuard, поэтому вам, скорее всего, не нужно будет предпринимать никаких действий, чтобы воспользоваться преимуществами R8. Однако, поскольку это другая технология, разработанная специально для проектов для 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
Примечание. Если для определенного типа сборки вы зададите значение false для параметра useProguard в файле 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…