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

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

3.4.2 (июль 2019 г.)

Это небольшое обновление включает в себя исправления различных ошибок и улучшения производительности. Список наиболее заметных исправлений ошибок можно найти в соответствующей публикации в блоге Release Updates .

3.4.1 (май 2019 г.)

Это небольшое обновление включает в себя исправления различных ошибок и улучшения производительности. Список наиболее заметных исправлений ошибок можно найти в соответствующей публикации в блоге Release Updates .

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

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

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

IntelliJ IDEA 2018.3.4

Основная среда разработки Android Studio IDE обновлена с учетом улучшений 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 : вы можете использовать мастер импорта объектов Drawable для преобразования изображений SVG в объекты VectorDrawable .
  • Перетаскивание ресурсов: из окна инструментов диспетчера ресурсов можно перетаскивать чертежи как в представления дизайна, так и в XML-представления редактора макетов.
  • Просмотр альтернативных версий: теперь вы можете просматривать альтернативные версии своих ресурсов, дважды щелкнув ресурс в окне «Инструменты» . В этом представлении отображаются различные созданные вами версии и включённые в них квалификаторы.
  • Представления в виде плитки и списка: вы можете изменить представление в окне инструментов, чтобы визуализировать свои ресурсы в различных форматах.

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

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

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

Если вы собираете нативные библиотеки в APK с идентификатором сборки, 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, которые вы хотите использовать.