Плагин 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 Build Tools; | 28.0.3 | 28.0.3 | Установите или настройте SDK Build Tools. |
Это небольшое обновление обеспечивает совместимость с новыми настройками по умолчанию и функциями, связанными с видимостью пакетов в 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– используйте эту новую конфигурацию в проектах библиотек для проверок lint, которые вы хотите включить в опубликованный AAR, как показано в примере ниже. Это означает, что проекты, которые используют вашу библиотеку, также применяют эти проверки lint.
В следующем примере кода обе конфигурации зависимостей используются в локальном проекте библиотеки 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. Однако 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
Примечание. Если для определенного типа сборки вы установите значение 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…