Android Studio 3.1 (март 2018 г.)

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

3.1.4 (август 2018 г.)

Это обновление Android Studio 3.1 включает следующие изменения и исправления:

  • Входящая в комплект Kotlin версия теперь имеет номер 1.2.50.
  • Новые проекты создаются с использованием kotlin-stdlib-jdk* artifacts , а не с использованием артефактов kotlin-stdlib-jre* , которые устарели.
  • Улучшен анализ правил ProGuard в R8.
  • Исправлены следующие ошибки:
    • Попытка запустить класс Kotlin Main завершилась ошибкой: "Error: Could not find or load main class..."
    • R8 вошел в бесконечный цикл при выполнении определенных оптимизаций.
    • При использовании команды «Повторить неудачные тесты» в окне «Выполнить» иногда ошибочно возвращалось сообщение «Тесты не найдены».
    • D8 неправильно обрабатывал экземпляры invoke-virtual , что приводило к сбою с ошибкой VerifyError : invoke-super/virtual can't be used on private method
    • Компилятор привязки данных использовал старую версию com.android.tools:annotations . Теперь компилятор использует аннотации инструментов из базового проекта, если они доступны.
    • Android Studio аварийно завершает работу при переходе между фрагментами при использовании профилировщиков.
    • Отладчик аварийно завершал работу при отладке макета с текстовым полем.
    • D8 не смог прочитать некоторые ZIP-файлы со специальными символами.

3.1.3 (июнь 2018 г.)

Это обновление Android Studio 3.1 включает исправления следующих ошибок:

  • Утечки памяти приводили к замедлению работы Android Studio и её зависанию после использования редактора макетов. Это обновление исправляет большинство этих проблем. Мы планируем вскоре выпустить ещё одно обновление для устранения других утечек памяти.
  • Некоторые приложения, созданные с использованием D8, давали сбои на некоторых планшетах Verizon Ellipsis.
  • Установка приложений, созданных с помощью D8, завершалась ошибкой INSTALL_FAILED_DEXOPT на устройствах под управлением Android 5.0 или 5.1 (уровень API 21 или 22).
  • Некоторые приложения, использующие библиотеку OkHttp и созданные с помощью D8, аварийно завершали работу на устройствах под управлением Android 4.4 (уровень API 19).
  • Иногда Android Studio не запускалась из-за возникновения ProcessCanceledException во время инициализации класса com.intellij.psi.jsp.JspElementType .

3.1.2 (апрель 2018 г.)

Это обновление Android Studio 3.1 включает исправления следующих ошибок:

  • В некоторых случаях Android Studio зависала на неопределенное время при выходе.
  • Сборки, настроенные с использованием исходных наборов, завершались со следующим сообщением при включении мгновенного запуска:

    "The SourceSet name is not recognized by the Android Gradle Plugin."

  • При включении Instant Run сборки новых проектов Kotlin завершались сбоем при запуске команды Run .
  • Во время редактирования файла build.gradle иногда возникала заметная задержка между вводом символа и его появлением на экране.
  • В некоторых проектах с большим количеством модулей или внешних зависимостей во время дексирования происходили сбои сборки со следующим сообщением об ошибке:

    "RejectedExecutionException: Thread limit exceeded replacing blocked worker"

  • При вычислении основного списка DEX D8 не учитывались некоторые рефлексивные вызовы.

Это обновление также включает изменения, которые в некоторых сценариях значительно ускоряют выполнение проверок lint из Gradle.

3.1.1 (апрель 2018 г.)

Это обновление Android Studio 3.1 включает исправления следующих ошибок:

  • В некоторых случаях при первом открытии проекта, созданного в Android Studio 3.0, в Android Studio 3.1 задача Make с поддержкой Gradle удалялась из области «Перед запуском» в настройках запуска/отладки . В результате проекты не собирались при нажатии кнопок «Запустить» или «Отладка », что, в свою очередь, приводило к сбоям, таким как развертывание некорректных APK-файлов и сбои при использовании функции мгновенного запуска.

    Чтобы решить эту проблему, Android Studio 3.1.1 добавляет задачу Make с поддержкой Gradle в конфигурацию запуска для проектов, в которых отсутствует эта запись. Это изменение происходит после первой синхронизации Gradle при загрузке проекта.

  • Отладчик аварийно завершал работу при отладке макета с текстовым полем, если было включено расширенное профилирование.
  • Android Studio зависла после нажатия кнопки «Сборка вариантов» .
  • Файлы AAR (архив Android) извлекались дважды: один раз во время процесса синхронизации Gradle и один раз во время процесса сборки Gradle.
  • В некоторых векторных рисунках, импортированных из файлов SVG, отсутствовали элементы.
  • Предупреждение об устаревании конфигурации зависимости compile обновлено и дополнено более подробными рекомендациями по implementation и конфигурациям api . Подробную информацию о переходе от использования конфигурации compile см. в документации по новым конфигурациям зависимости .

Кодирование/IDE

IntelliJ 2017.3.3

Базовая среда разработки Android Studio обновлена с учётом улучшений IntelliJ IDEA вплоть до версии 2017.3.3. Среди улучшений — улучшенный анализ потока управления для коллекций и строк, улучшенный вывод допустимости значений NULL, новые быстрые исправления и многое другое.

Подробную информацию см. в примечаниях к выпуску JetBrains для IntelliJ IDEA версий 2017.2 и 2017.3 , а также в примечаниях к выпуску JetBrains для обновлений с исправлениями ошибок .

Улучшения редактирования SQL с помощью Room

При использовании библиотеки базы данных Room вы можете воспользоваться несколькими улучшениями в редактировании SQL:

  • Автодополнение кода в Query распознает таблицы SQL (сущности), столбцы, параметры запроса, псевдонимы, объединения, подзапросы и предложения WITH.
  • Подсветка синтаксиса SQL теперь работает.
  • Вы можете щёлкнуть правой кнопкой мыши по имени таблицы в SQL и переименовать её, что также перезапишет соответствующий код Java или Kotlin (включая, например, тип возвращаемого значения запроса). Переименование работает и в обратном направлении, например, переименование класса или поля Java перезаписывает соответствующий код SQL.
  • Использования SQL отображаются при использовании функции «Найти использования» (щелкните правой кнопкой мыши и выберите «Найти использования» в контекстном меню).
  • Чтобы перейти к объявлению сущности SQL в коде Java или Kotlin, можно удерживать клавишу Control (Command на Mac) при щелчке по сущности.

Информацию об использовании SQL с Room см. в разделе Сохранение данных в локальной базе данных с помощью Room .

Обновления привязки данных

Это обновление включает в себя несколько улучшений для привязки данных :

  • Теперь вы можете использовать объект LiveData в качестве наблюдаемого поля в выражениях привязки данных. Класс ViewDataBinding теперь включает новый метод setLifecycle() , который можно использовать для наблюдения за объектами LiveData .

  • Класс ObservableField теперь может принимать другие объекты Observable в своем конструкторе.

  • Вы можете ознакомиться с новым инкрементальным компилятором для ваших классов привязки данных. Подробную информацию об этом новом компиляторе и инструкции по его включению см. в статье «Компилятор привязки данных V2» .

    Преимущества нового компилятора включают следующее:

    • Классы ViewBinding генерируются плагином Android для Gradle до компилятора Java.
    • Библиотеки сохраняют сгенерированные классы привязки при компиляции приложения, а не генерируются заново каждый раз. Это может значительно повысить производительность многомодульных проектов.

Компилятор и Gradle

D8 — компилятор DEX по умолчанию

Компилятор D8 теперь используется по умолчанию для генерации байт-кода DEX.

Этот новый компилятор DEX обладает рядом преимуществ, включая следующие:

  • Более быстрая дексинг
  • Меньшее использование памяти
  • Улучшенная генерация кода (лучшее распределение регистров, более интеллектуальные таблицы строк)
  • Улучшенный опыт отладки при пошаговом выполнении кода

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

Если вы установили android.enableD8 значение false в вашем gradle.properties , либо удалите этот флаг, либо установите для него значение true :

        android.enableD8=true
      

Подробности см. в разделе Новый компилятор DEX .

Инкрементальное обессахаривание

Для проектов, использующих возможности языка Java 8 , по умолчанию включена инкрементальная очистка от сахара, что может сократить время сборки.

Десахаризация преобразует синтаксический сахар в форму, которую компилятор может обрабатывать более эффективно.

Вы можете отключить инкрементную десахаридизацию, указав следующее в файле gradle.properties вашего проекта:

        android.enableIncrementalDesugaring=false
      

Упрощенное окно вывода

Консоль Gradle заменена окном «Сборка» , которое имеет вкладки «Синхронизация» и «Сборка» .

Подробную информацию об использовании нового упрощенного окна сборки см. в разделе Мониторинг процесса сборки .

Пакетные обновления и параллельная индексация

Процессы синхронизации Gradle и индексации IDE теперь стали гораздо эффективнее, что сокращает время, затрачиваемое на множество избыточных операций индексации.

C++ и LLDB

Мы внесли множество улучшений в качество и производительность на этапах кодирования, синхронизации, сборки и отладки при разработке на C++. Среди улучшений:

  • Если вы работаете с большими проектами на C++, вы заметите значительное сокращение времени, затрачиваемого на создание символов. Время синхронизации также значительно сокращается для больших проектов.

  • Производительность при сборке и синхронизации с CMake была улучшена за счет более агрессивного повторного использования кэшированных результатов.

  • Добавление форматировщиков («красивых принтеров») для большего количества структур данных C++ упрощает чтение выходных данных LLDB.

  • LLDB теперь работает только с Android 4.1 (API уровня 16) и выше.

Примечание: Отладка нативного кода в Android Studio 3.0 и выше не работает в 32-разрядной версии Windows. Если вы используете 32-разрядную версию Windows и вам нужно отладить нативный код, используйте Android Studio 2.3.

Котлин

Kotlin обновлен до версии 1.2.30

Android Studio 3.1 включает Kotlin версии 1.2.30 .

Код Kotlin теперь анализируется с помощью проверки lint из командной строки

Запуск lint из командной строки теперь анализирует ваши классы Kotlin.

Для каждого проекта, для которого вы хотите запустить lint, репозиторий Maven от Google должен быть включён в файл build.gradle верхнего уровня. Репозиторий Maven уже включён в проекты, созданные в Android Studio 3.0 и выше.

Инструменты повышения производительности

Примеры собственных процессов C++ с помощью CPU Profiler

В CPU Profiler теперь есть конфигурация по умолчанию для записи выборочных трассировок собственных потоков вашего приложения. Вы можете использовать эту конфигурацию, развернув приложение на устройстве под управлением Android 8.0 (API уровня 26) или выше и выбрав «Выборочная (собственная)» в раскрывающемся меню конфигураций записи CPU Profiler. После этого запишите и проанализируйте трассировку, как обычно.

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

Чтобы вернуться к трассировке потоков Java, выберите конфигурацию Sampled (Java) или Instrumented (Java) .

Фильтрация трассировок ЦП, результатов распределения памяти и дампов кучи

Профилировщик ЦП и Профилировщик памяти включают функцию поиска, которая позволяет фильтровать результаты записи трассировки метода, выделения памяти или дампа кучи.

Для поиска нажмите Фильтр.в правом верхнем углу панели введите свой запрос и нажмите Enter.

Совет: вы также можете открыть поле поиска, нажав Control + F (Command + F на Mac).

На вкладке «Диаграмма Flame» приложения CPU Profiler стеки вызовов, включающие методы, связанные с вашим поисковым запросом, выделяются и перемещаются в левую часть диаграммы.

Дополнительные сведения о фильтрации по имени метода, класса или пакета см. в разделе Запись и проверка трассировок методов .

Вкладка «Запрос» в сетевом профилировщике

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

Просмотр потоков в сетевом профилировщике

Выбрав часть временной шкалы в Network Profiler , вы можете выбрать одну из следующих вкладок, чтобы увидеть более подробную информацию о сетевой активности за этот период времени:

  • Представление «Подключение» : предоставляет ту же информацию, что и предыдущие версии Android Studio, — список файлов, отправленных или полученных в течение выбранного периода времени по всем потокам ЦП вашего приложения. Для каждого запроса можно проверить размер, тип, статус и длительность передачи.
  • Представление потоков : отображает сетевую активность каждого потока ЦП вашего приложения. Это представление позволяет узнать, какие потоки приложения отвечают за каждый сетевой запрос.

Инспектор макетов

В инспекторе макетов появились новые функции, включая некоторые функции, ранее доступные в устаревших инструментах Hierarchy Viewer и Pixel Perfect:

  • Кнопки масштабирования и сочетания клавиш для навигации и проверки макетов
  • Наложение референтной сетки
  • Возможность загрузки эталонного изображения и использования его в качестве наложения (полезно для сравнения вашего макета с макетом пользовательского интерфейса)
  • Отобразить предварительный просмотр поддерева , чтобы изолировать представление в сложной компоновке

Редактор макетов

Палитра в редакторе макетов получила множество улучшений:

  • Реорганизация категорий представлений и макетов.
  • Новая общая категория для представлений и макетов, которую можно добавить с помощью команды «Избранное» .
  • Улучшен поиск видов и макетов .
  • Новые команды для открытия документации для определенного представления или элемента макета.

Для преобразования представления или макета в другой тип представления или макета можно использовать новую команду «Преобразовать представление» в дереве компонентов или редакторе дизайна.

Теперь вы можете легко создавать ограничения для элементов рядом с выбранным представлением, используя новую функцию «Создать соединение». кнопки в инспекторе видов в верхней части окна «Атрибуты» .

Бег и мгновенный бег

Поведение параметра «Использовать тот же выбор для будущих запусков» в диалоговом окне «Выбор цели развертывания» стало более согласованным. Если параметр « Использовать тот же выбор» включён, диалоговое окно «Выбор цели развертывания» открывается только при первом использовании команды « Запустить» до тех пор, пока выбранное устройство не будет отключено.

При использовании на устройствах под управлением Android 8.0 (уровень API 26) и выше функция Instant Run может применять изменения в ресурсах, не вызывая перезапуска приложения. Это возможно благодаря тому, что ресурсы содержатся в отдельном APK-файле.

Эмулятор

Подробную информацию о новых возможностях и изменениях в эмуляторе по сравнению с Android Studio 3.0 см. в заметках к выпуску Android Emulator с версии 27.0.2 по версию 27.1.12 .

Основные улучшения включают следующее:

  • Снимки быстрой загрузки для сохранения состояния эмулятора и более быстрого запуска с возможностью использования команды «Сохранить сейчас» для сохранения пользовательского состояния запуска.
  • Экран эмулятора без окон.
  • Системные образы для Android 8.0 (уровень API 26), Android 8.1 (уровень API 27) и Android P Developer Preview.

Улучшения пользовательского интерфейса и удобства использования

Дополнительные подсказки, сочетания клавиш и полезные сообщения

Мы добавили всплывающие подсказки и полезные сообщения во многих местах Android Studio.

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

Инструменты > Меню Android удалено

Меню « Инструменты > Android» удалено. Команды, ранее находившиеся в этом меню, перемещены.

  • Многие команды перемещены непосредственно в меню «Инструменты» .
  • Команда «Синхронизировать проект с файлами Gradle» перемещена в меню «Файл» .
  • Команда «Монитор устройств» была удалена, как описано ниже.

Монитор устройств доступен из командной строки

В Android Studio 3.1 Device Monitor играет меньшую роль, чем раньше. Во многих случаях функциональность Device Monitor теперь реализуется новыми и улучшенными инструментами.

Инструкции по вызову Device Monitor из командной строки, а также подробную информацию об инструментах, доступных через Device Monitor, см. в документации Device Monitor.