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 - Компилятор Data Binding зависел от старой версии
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иногда наблюдалась заметная задержка между вводом символа и его появлением на экране. В некоторых проектах с большим количеством модулей или внешних зависимостей во время проверки файлов (dex) возникали ошибки со следующим сообщением:
"RejectedExecutionException: Thread limit exceeded replacing blocked worker"- При вычислении основного списка DEX для D8 не учитывались некоторые вызовы с использованием рефлексии.
Это обновление также включает изменения, которые в некоторых сценариях значительно ускоряют выполнение проверок синтаксиса из Gradle.
3.1.1 (апрель 2018 г.)
В это обновление Android Studio 3.1 включены исправления следующих ошибок:
В некоторых случаях при первом открытии проекта, созданного в Android Studio 3.0, в Android Studio 3.1 задача Make с поддержкой Gradle удалялась из области «Перед запуском» в настройках запуска/отладки . В результате проекты не собирались при нажатии кнопки «Запуск» или «Отладка» , что, в свою очередь, приводило к сбоям, таким как развертывание некорректных APK-файлов и зависаниям при использовании функции Instant Run.
Для решения этой проблемы 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 по умолчанию.
Теперь для генерации байт-кода DEX по умолчанию используется компилятор D8.
Новый компилятор 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 из командной строки анализирует ваши классы Kotlin.
Для каждого проекта, который вы хотите проверить с помощью линтера, необходимо добавить репозиторий Maven от Google в главный файл build.gradle . Репозиторий Maven уже включен для проектов, созданных в Android Studio 3.0 и выше.
Инструменты повышения производительности
Протестируйте нативные процессы C++ с помощью CPU Profiler.
В CPU Profiler теперь включена конфигурация по умолчанию для записи выборочных трассировок нативных потоков вашего приложения. Вы можете использовать эту конфигурацию, развернув приложение на устройстве под управлением Android 8.0 (уровень API 26) или выше, а затем выбрав пункт «Выборочная (нативная)» в выпадающем меню настроек записи CPU Profiler. После этого запишите и проанализируйте трассировку, как обычно.
Вы можете изменить настройки по умолчанию, например, интервал дискретизации, создав конфигурацию записи .
Чтобы вернуться к трассировке потоков Java, выберите конфигурацию «Сэмплированная (Java)» или «Инструментальная (Java)» .
Фильтрация трассировки ЦП, результатов выделения памяти и дампов кучи.
Профилировщик ЦП и Профилировщик памяти включают функцию поиска, которая позволяет фильтровать результаты, полученные при записи трассировки методов, выделении памяти или дампе кучи.

Для поиска нажмите «Фильтр».
В правом верхнем углу панели введите свой запрос и нажмите Enter.
Совет: Вы также можете открыть поле поиска, нажав сочетание клавиш Control + F (Command + F на Mac).
На вкладке «График выполнения» в CPU Profiler стеки вызовов, включающие методы, связанные с вашим поисковым запросом, выделяются и перемещаются в левую часть графика.
Для получения дополнительной информации о фильтрации по имени метода, класса или пакета см. раздел «Запись и анализ трассировки методов» .
Вкладка «Запрос» в сетевом профилировщике.
В сетевом профилировщике теперь есть вкладка «Запросы» , которая предоставляет подробную информацию о сетевых запросах за выбранный период времени. В предыдущих версиях сетевой профилировщик предоставлял информацию только о сетевых ответах.
Просмотр потоков в сетевом профилировщике
После выбора участка временной шкалы в Network Profiler вы можете выбрать одну из следующих вкладок, чтобы просмотреть более подробную информацию о сетевой активности за этот период:
- В разделе «Просмотр соединений » представлена та же информация, что и в предыдущих версиях Android Studio — список файлов, отправленных или полученных в выбранный момент времени по всем потокам ЦП вашего приложения. Для каждого запроса можно проверить размер, тип, статус и продолжительность передачи.
- Просмотр потоков : Отображает сетевую активность каждого потока ЦП вашего приложения. Этот режим просмотра позволяет определить, какие потоки вашего приложения отвечают за каждый сетевой запрос.

Инспектор компоновки
В инструмент «Инспектор компоновки» появились новые функции, в том числе некоторые возможности, ранее предоставляемые устаревшими инструментами «Просмотр иерархии» и «Точная пиксельная точность»:
- Кнопки масштабирования и сочетания клавиш для навигации и просмотра макетов.
- Наложение опорной сетки
- Возможность загрузить эталонное изображение и использовать его в качестве наложения (полезно для сравнения вашего макета с макетом пользовательского интерфейса).
- Отображение предварительного просмотра поддерева позволяет выделить отдельный элемент в сложной компоновке.

Редактор макета
Палитра в редакторе макета получила множество улучшений:
- Реорганизация категорий для представлений и макетов.
- Новая категория «Общие» для представлений и макетов, которую можно добавить с помощью команды «Избранное» .
- Улучшен поиск по представлениям и макетам .
- Новые команды для открытия документации по конкретному элементу представления или макета.
В дереве компонентов или редакторе дизайна можно использовать новую команду «Преобразовать представление» , чтобы преобразовать представление или макет в другой тип представления или макета.
Теперь вы можете легко создавать ограничения для элементов, расположенных рядом с выбранным видом, используя новую функцию «Создать соединение».
кнопки в инспекторе представлений в верхней части окна «Атрибуты» .
Бег и мгновенный бег
Поведение параметра « Использовать тот же выбор для будущих запусков » в диалоговом окне «Выбор целевого устройства развертывания» стало более согласованным. Если параметр « Использовать тот же выбор» включен, диалоговое окно «Выбор целевого устройства развертывания» открывается только при первом использовании команды «Выполнить » до тех пор, пока выбранное устройство не будет отключено.
При использовании на устройствах под управлением 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 роль Монитора устройств снизилась по сравнению с предыдущими версиями. Во многих случаях функциональность, доступная через Монитор устройств, теперь обеспечивается новыми и улучшенными инструментами.
Инструкции по запуску монитора устройств из командной строки, а также подробная информация об инструментах, доступных через монитор устройств, содержатся в документации по монитору устройств.