Android Studio 3.4 (апрель 2019 г.)

Android Studio 3.4 — это крупный релиз, включающий множество новых функций и улучшений.

3.4.2 (июль 2019 г.)

Это небольшое обновление включает в себя различные исправления ошибок и улучшения производительности. Чтобы ознакомиться со списком наиболее важных исправлений ошибок, прочитайте соответствующую статью в блоге «Обновления релизов» .

3.4.1 (май 2019 г.)

Это небольшое обновление включает в себя различные исправления ошибок и улучшения производительности. Чтобы ознакомиться со списком наиболее важных исправлений ошибок, прочитайте соответствующую статью в блоге «Обновления релизов» .

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

  • Профилирование отключается при развертывании приложения на устройстве под управлением Android Q Beta.

  • При использовании библиотеки Data Binding Library LiveDataListener.onChanged() может завершиться ошибкой NullPointerException. Исправление этой проблемы будет включено в Android Studio 3.4.1 и уже доступно в последней предварительной версии Android Studio 3.5. (См. проблему #122066788 )

IntelliJ IDEA 2018.3.4

В базовой среде разработки Android Studio были внесены улучшения, заимствованные из IntelliJ IDEA, вплоть до версии 2018.3.4 .

Обновление плагина Android Gradle до версии 3.4.0

Информацию о нововведениях в плагине Android Gradle версии 3.4.0 можно найти в примечаниях к выпуску .

Диалог новой структуры проекта

Новый диалог структуры проекта (PSD) упрощает обновление зависимостей и настройку различных аспектов проекта, таких как модули, варианты сборки, конфигурации подписи и переменные сборки.

Открыть PSD-файл можно, выбрав в строке меню «Файл» > «Структура проекта» . Также можно открыть PSD-файл, нажав Ctrl+Shift+Alt+S в Windows и Linux или Command+; (точка с запятой) в macOS. Ниже приведено описание некоторых новых и обновленных разделов PSD-файла.

Переменные

Новый раздел переменных в PSD-файле позволяет создавать и управлять переменными сборки, например, для обеспечения согласованности номеров версий зависимостей во всем проекте.

  • Быстро просматривайте и редактируйте переменные сборки, которые уже существуют в скриптах сборки Gradle вашего проекта.
  • Добавляйте новые переменные сборки на уровне проекта или модуля непосредственно из PSD-файла.

Примечание: Если в существующих файлах конфигурации сборки значения присваиваются с помощью сложных скриптов Groovy, вы, возможно, не сможете редактировать эти значения через PSD. Кроме того, вы не сможете редактировать файлы сборки, написанные на Kotlin, с помощью PSD.

Модули

Настройте свойства, которые будут применяться ко всем вариантам сборки в существующем модуле, или добавьте новые модули в свой проект из раздела « Модули» . Например, здесь вы можете настроить свойства defaultConfig или управлять конфигурациями подписи.

Зависимости

Просмотрите и визуализируйте каждую зависимость в графе зависимостей вашего проекта, решенном Gradle во время синхронизации проекта, выполнив следующие шаги:

  1. В левой панели файла PSD выберите «Зависимости» .
  2. В панели «Модули» выберите модуль, для которого вы хотите проверить разрешенные зависимости.
  3. В правой части файла PSD откройте панель «Разрешенные зависимости» , показанную ниже.

Вы также можете быстро найти и добавить зависимости в свой проект, сначала выбрав модуль в разделе « Зависимости » PSD-файла, нажав кнопку (+) в разделе «Объявленные зависимости» и выбрав тип зависимости, которую хотите добавить.

В зависимости от типа выбранной зависимости вы увидите диалоговое окно, похожее на приведенное ниже, которое поможет вам добавить зависимость к модулю.

Варианты сборки

В этом разделе PSD-файла вы можете создать и настроить варианты сборки и варианты продукта для каждого модуля вашего проекта. Вы можете добавить заполнители манифеста, файлы ProGuard, назначить ключи подписи и многое другое.

Предложения

Рекомендуемые обновления зависимостей проекта и переменных сборки см. в разделе «Предложения» , как показано ниже.

Новый менеджер по ресурсам

Диспетчер ресурсов — это новое окно инструментов для импорта, создания, управления и использования ресурсов в вашем приложении. Открыть это окно инструментов можно, выбрав в строке меню «Вид» > «Окна инструментов» > «Диспетчер ресурсов» . Диспетчер ресурсов позволяет выполнять следующие действия:

  • Визуализация ресурсов: вы можете предварительно просмотреть изображения, цвета и макеты, чтобы быстро найти необходимые ресурсы.
  • Пакетный импорт: Вы можете импортировать несколько графических ресурсов одновременно, перетащив их в окно инструментов «Диспетчер ресурсов» или используя мастер импорта графических ресурсов . Чтобы открыть мастер, нажмите кнопку (+) в верхнем левом углу окна инструментов, а затем выберите «Импорт графических ресурсов» в выпадающем меню.
  • Преобразование SVG-изображений в векторные объекты VectorDrawable : Вы можете использовать мастер импорта объектов VectorDrawable для преобразования ваших SVG-изображений в векторные объекты VectorDrawable .
  • Перетаскивание ресурсов: из окна инструментов «Диспетчер ресурсов» вы можете перетаскивать графические элементы как в режим проектирования, так и в XML-режим редактора макетов.
  • Просмотр альтернативных версий: Теперь вы можете просматривать альтернативные версии своих ресурсов, дважды щелкнув ресурс в окне инструментов . В этом окне отображаются различные созданные вами версии и включенные в них квалификаторы.
  • Плиточные и списочные представления: Вы можете изменить представление в окне инструментов, чтобы визуализировать свои ресурсы в различных вариантах.

Чтобы узнать больше, ознакомьтесь с руководством по управлению ресурсами приложения .

Проверка идентификаторов сборок при профилировании и отладке APK-файлов.

Когда вы предоставляете отладочные файлы символов для разделяемых библиотек .so внутри вашего APK, Android Studio проверяет, соответствуют ли идентификаторы сборки предоставленных файлов символов идентификаторам сборки библиотек .so внутри APK.

Если вы собираете нативные библиотеки в своем APK с идентификатором сборки (build ID), Android Studio проверяет, совпадает ли идентификатор сборки в ваших файлах символов с идентификатором сборки в ваших нативных библиотеках, и отклоняет файлы символов в случае несоответствия. Если же сборка не выполнялась с идентификатором сборки, предоставление некорректных файлов символов может вызвать проблемы с отладкой.

R8 включен по умолчанию

R8 объединяет десахаризацию, уменьшение размера, обфускацию, оптимизацию и декодирование в один шаг, что приводит к заметному улучшению производительности сборки . R8 был представлен в плагине Android Gradle версии 3.3.0 и теперь включен по умолчанию как для приложений, так и для проектов библиотек Android, использующих плагин версии 3.4.0 и выше.

Изображение ниже дает общее представление о процессе компиляции до внедрения R8.

До версии R8 ProGuard представлял собой отдельный этап компиляции, отличный от декодирования и десахаризации.

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

В R8 десахаризация, уменьшение размера, обфускация, оптимизация и декодирование выполняются за один этап компиляции.

Имейте в виду, что 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 вашего проекта.

Все типы аргументов, поддерживаемые компонентом «Навигация», теперь поддерживаются в редакторе навигации. Дополнительную информацию о поддерживаемых типах см. в разделе «Передача данных между пунктами назначения» .

Улучшения редактора макета {:#layout-editor}

Панель «Атрибуты» в редакторе макетов была объединена в одну страницу с разделами, которые можно развернуть, чтобы отобразить настраиваемые атрибуты. Панель «Атрибуты» также включает следующие обновления:

  • В новом разделе «Объявленные атрибуты» перечислены атрибуты, указанные в файле макета, и предусмотрена возможность быстрого добавления новых.
  • В панели «Атрибуты» теперь также отображаются индикаторы рядом с каждым атрибутом, которые остаются неизменными, если значение атрибута является ссылкой на ресурс, и пустыми в противном случае.
  • Атрибуты с ошибками или предупреждениями теперь выделяются. Красным цветом выделены ошибки (например, при использовании недопустимых значений макета), а оранжевым — предупреждения (например, при использовании жестко заданных значений).

Новое действие, позволяющее быстро импортировать зависимости.

Если вы начинаете использовать определенные классы Jetpack и Firebase в своем коде, новое действие, запускаемое функцией Intent, предложит добавить необходимую зависимость библиотеки Gradle в ваш проект, если вы еще этого не сделали. Например, если вы ссылаетесь на класс WorkManager не импортировав предварительно необходимую зависимость android.arch.work:work-runtime , действие, запускаемое функцией Intent, позволит вам сделать это легко одним щелчком мыши, как показано ниже.

В частности, поскольку Jetpack переупаковал библиотеку поддержки в отдельные пакеты, которые проще управлять и обновлять, это действие помогает быстро добавлять только необходимые зависимости для компонентов Jetpack, которые вы хотите использовать.