Старые выпуски

Ниже приведены заметки о выпуске Android Studio 3.6 и ниже, а также плагина Android Gradle 3.6.0 и ниже.

Старые версии Android Studio

3.6 (февраль 2020 г.)

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

Мы также хотели бы поблагодарить всех членов нашего сообщества , которые помогли с этим релизом.

3.6.3 (апрель 2020 г.)

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

3.6.2 (март 2020 г.)

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

3.6.1 (февраль 2020 г.)

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

Инструменты дизайна

Эта версия Android Studio включает обновления нескольких инструментов дизайна, включая редактор макетов и менеджер ресурсов.

Разделение вида и масштабирование в редакторах дизайна

разделенный вид показывает одновременно и дизайн, и текст

В этот выпуск включены следующие обновления редакторов визуального дизайна:

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

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

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

Вкладка «Ресурсы палитры цветов»

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

Палитра цветов с заполненными значениями цветов

Менеджер ресурсов

Менеджер ресурсов содержит следующие обновления:

  • Менеджер ресурсов теперь поддерживает большинство типов ресурсов.
  • При поиске ресурса в диспетчере ресурсов теперь отображаются результаты по всем модулям проекта. Ранее поиск возвращал результаты только по выбранному модулю.
  • Кнопка фильтра позволяет просматривать ресурсы из локальных зависимых модулей, внешних библиотек и фреймворка Android. Вы также можете использовать фильтр для отображения атрибутов темы.
  • Теперь вы можете переименовывать ресурсы во время процесса импорта, щелкнув внутри текстового поля над ресурсом.

Более подробную информацию см. в статье Управление ресурсами пользовательского интерфейса приложения с помощью диспетчера ресурсов .

Обновления плагина Android Gradle

Последняя версия плагина Android Gradle включает множество обновлений, включая оптимизацию скорости сборки, поддержку плагина публикации Maven и поддержку View Binding. Подробнее см. в полных примечаниях к выпуску .

Просмотреть привязку

Привязка представлений упрощает написание кода, взаимодействующего с представлениями, путем создания класса привязки для каждого XML-файла макета. Эти классы содержат прямые ссылки на все представления, имеющие идентификатор в соответствующем макете.

Поскольку он заменяет findViewById() , привязка представления устраняет риск возникновения исключений нулевого указателя из-за недопустимого идентификатора представления.

Чтобы включить привязку представлений, необходимо использовать плагин Android Gradle 3.6.0 или выше и включить следующее в файл build.gradle каждого модуля:

Круто

  android {
      buildFeatures.viewBinding = true
  }
  

Котлин

  android {
      buildFeatures.viewBinding = true
  }
  

Применить изменения

Теперь вы можете добавить класс, а затем развернуть это изменение кода в работающем приложении, нажав « Применить изменения кода» или «Применить изменения и перезапустить активность» .

Более подробную информацию о разнице между этими двумя действиями см. в разделе Применить изменения .

Реорганизовать пункт меню для включения поддержки мгновенных приложений

Теперь вы можете мгновенно включить свой базовый модуль в любое время после создания проекта приложения следующим образом:

  1. Откройте панель «Проект» , выбрав в строке меню «Вид» > «Окна инструментов» > «Проект» .
  2. Щелкните правой кнопкой мыши по базовому модулю, обычно называемому «app», и выберите Рефакторинг > Включить поддержку мгновенных приложений .
  3. В открывшемся диалоговом окне выберите базовый модуль из раскрывающегося меню.
  4. Нажмите ОК .

Примечание: возможность мгновенного включения базового модуля приложения из мастера создания нового проекта была удалена.

Чтобы узнать больше, прочитайте Обзор Google Play Instant .

Деобфускация байт-кода классов и методов в APK Analyzer

При использовании APK Analyzer для проверки файлов DEX вы можете деобфусцировать байт-код класса и метода следующим образом:

  1. В строке меню выберите «Сборка» > «Анализ APK» .
  2. В появившемся диалоговом окне перейдите к APK-файлу, который вы хотите проверить, и выберите его.
  3. Нажмите «Открыть» .
  4. В APK Analyzer выберите DEX-файл, который вы хотите проверить.
  5. В средстве просмотра файлов DEX загрузите файл сопоставлений ProGuard для анализируемого APK.
  6. Щелкните правой кнопкой мыши класс или метод, который вы хотите проверить, и выберите Показать байт-код .

Собственные инструменты

Следующие обновления поддерживают нативную разработку (C/C++) в Android Studio.

Поддержка Котлина

Следующие функции NDK в Android Studio, ранее поддерживавшиеся в Java, теперь также поддерживаются в Kotlin:

  • Переход от объявления JNI к соответствующей функции реализации на языке C/C++. Чтобы просмотреть это сопоставление, наведите указатель мыши на маркер элемента C или C++ рядом с номером строки в файле управляемого исходного кода.

  • Автоматически создайте функцию-заглушку для объявления JNI. Сначала определите объявление JNI, а затем введите «jni» или имя метода из файла C/C++ для активации.

  • Неиспользуемые функции реализации нативных функций подсвечиваются в исходном коде как предупреждение. Объявления JNI с отсутствующими реализациями также подсвечиваются как ошибка.

  • При переименовании (рефакторинге) функции реализации нативного кода обновляются все соответствующие объявления JNI. Переименуйте объявление JNI, чтобы обновить функцию реализации нативного кода.

  • Проверка подписи для неявно привязанных реализаций JNI.

Другие улучшения JNI

Редактор кода в Android Studio теперь поддерживает более плавный процесс разработки JNI, включая улучшенные подсказки типов, автодополнение, проверки и рефакторинг кода.

Перезагрузка APK для собственных библиотек {:#3.6-reload-apk}

Вам больше не нужно создавать новый проект при обновлении APK-файла вне IDE. Android Studio обнаруживает изменения в APK-файле и предоставляет возможность повторно импортировать его.

Прикрепите исходные коды APK только на Kotlin

Теперь можно прикреплять внешние источники APK, написанные только на Kotlin, при профилировании и отладке готовых APK. Подробнее см. в разделе «Прикрепление источников Kotlin/Java» .

Обнаружение утечек в Memory Profiler

При анализе дампа кучи в Memory Profiler теперь можно фильтровать данные профилирования, которые, по мнению Android Studio, могут указывать на утечки памяти для экземпляров Activity и Fragment в вашем приложении.

Фильтр отображает следующие типы данных:

  • Экземпляры Activity , которые были уничтожены, но на которые все еще имеются ссылки.
  • Экземпляры Fragment , у которых нет допустимого FragmentManager , но на которые все еще ведутся ссылки.

Прикрепите исходные коды APK только на Kotlin

Теперь можно прикреплять внешние источники APK, написанные только на Kotlin, при профилировании и отладке готовых APK. Подробнее см. в разделе «Прикрепление источников Kotlin/Java» .

Обнаружение утечек в Memory Profiler

При анализе дампа кучи в Memory Profiler теперь можно фильтровать данные профилирования, которые, по мнению Android Studio, могут указывать на утечки памяти для экземпляров Activity и Fragment в вашем приложении.

Фильтр отображает следующие типы данных:

  • Экземпляры Activity , которые были уничтожены, но на которые все еще имеются ссылки.
  • Экземпляры Fragment , у которых нет допустимого FragmentManager , но на которые все еще ведутся ссылки.

В определенных ситуациях, например, в следующих, фильтр может давать ложные срабатывания:

  • Fragment создан, но еще не использован.
  • Fragment кэшируется, но не как часть FragmentTransaction .

Чтобы использовать эту функцию, сначала создайте дамп кучи или импортируйте его в Android Studio. Чтобы отобразить фрагменты и действия, которые могут вызывать утечку памяти, установите флажок «Утечки активности/фрагментов» на панели дампа кучи в профилировщике памяти.

Профилировщик: обнаружение утечек памяти

Фильтрация дампа кучи на предмет утечек памяти.

Эмуляторы

Android Studio 3.6 поможет вам воспользоваться несколькими обновлениями, включенными в Android Emulator 29.2.7 и более поздние версии, как описано ниже.

Улучшенная поддержка местоположения

Эмулятор Android 29.2.7 и более поздних версий обеспечивает дополнительную поддержку эмуляции GPS-координат и информации о маршрутах. При открытии расширенных элементов управления эмулятора параметры на вкладке «Местоположение» теперь организованы на двух вкладках: «Отдельные точки» и «Маршруты» .

Отдельные точки

На вкладке «Отдельные точки» вы можете использовать веб-просмотр Google Карт для поиска объектов, как при использовании Google Карт на телефоне или в браузере. Когда вы ищете или нажимаете на местоположение на карте, вы можете сохранить его, выбрав «Сохранить точку» в нижней части карты. Все сохранённые местоположения отображаются в правой части окна «Расширенные элементы управления» .

Чтобы установить местоположение эмуляторов в соответствии с выбранным вами на карте местоположением, нажмите кнопку « Установить местоположение» в правом нижнем углу окна «Расширенные элементы управления» .

Вкладка «Отдельные точки» в расширенных элементах управления эмулятора. .

Маршруты

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

  1. В режиме просмотра карты используйте текстовое поле для поиска первого пункта назначения на вашем маршруте.
  2. Выберите местоположение из результатов поиска.
  3. Нажмите кнопку «Навигация» .
  4. Выберите начальную точку вашего маршрута на карте.
  5. (Необязательно) Нажмите «Добавить пункт назначения» , чтобы добавить дополнительные остановки в маршрут.
  6. Сохраните свой маршрут, нажав кнопку Сохранить маршрут на карте.
  7. Укажите название маршрута и нажмите кнопку Сохранить .

Чтобы смоделировать движение эмулятора по сохранённому маршруту, выберите его из списка сохранённых маршрутов и нажмите кнопку «Воспроизвести маршрут» в правом нижнем углу окна «Расширенные элементы управления» . Чтобы остановить симуляцию, нажмите кнопку «Остановить маршрут» .

Вкладка «Маршруты» в расширенных элементах управления эмулятора. .

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

Поддержка нескольких дисплеев

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

  1. Откройте расширенные элементы управления и перейдите на вкладку Дисплеи .

  2. Добавьте еще один дисплей, нажав «Добавить дополнительный дисплей» .

  3. В раскрывающемся меню в разделе «Вторичные дисплеи» выполните одно из следующих действий:

  4. Выберите одно из предустановленных соотношений сторон

  5. Выберите «Пользовательский» и задайте высоту , ширину и разрешение для вашего дисплея.

  6. (Необязательно) Нажмите Добавить дополнительный дисплей , чтобы добавить третий дисплей.

  7. Нажмите «Применить изменения », чтобы добавить указанные дисплеи к работающему виртуальному устройству.

Добавить несколько дисплеев. Вкладка «Дисплей» расширенных элементов управления эмулятора.

Новые виртуальные устройства и шаблоны проектов для Android Automotive OS

При создании нового проекта в Android Studio теперь можно выбрать один из трёх шаблонов на вкладке «Автомобильные» в мастере создания нового проекта : «Без активности» , «Служба мультимедиа» и «Служба обмена сообщениями» . Для существующих проектов можно добавить поддержку устройств Android Automotive, выбрав в меню «Файл» пункт «Создать» пункт «Новый модуль» и выбрав «Автомобильный модуль» . Мастер создания нового модуля поможет вам создать новый модуль с использованием одного из шаблонов проектов Android Automotive.

Выбор шаблона проекта Android Automotive. .

Кроме того, теперь вы можете создать виртуальное устройство Android (AVD) для устройств на базе Android Automotive OS, выбрав один из следующих параметров на вкладке «Автомобиль» в мастере настройки виртуального устройства .

  1. Polestar 2 : создайте AVD, эмулирующее головное устройство Polestar 2.
  2. Автомобильные (1024p альбомная ориентация) : создайте AVD для стандартных автомобильных головных устройств Android с разрешением 1024 x 768 пикселей.

Выбор виртуального устройства Android Automotive. .

Возобновляемые загрузки SDK

При загрузке компонентов и инструментов SDK с помощью SDK Manager Android Studio теперь позволяет возобновлять прерванную загрузку (например, из-за проблем с сетью), а не перезапускать её с самого начала. Это улучшение особенно полезно для больших объёмов загрузки, таких как эмулятор Android или образы системы, в условиях нестабильного интернет-соединения.

Кроме того, если у вас есть задача загрузки SDK, работающая в фоновом режиме, теперь вы можете приостановить или возобновить загрузку с помощью элементов управления в строке состояния.

Фоновая загрузка в строке состояния с новыми элементами управления, которые позволяют приостанавливать или возобновлять загрузку.

Фоновая задача загрузки в строке состояния с новыми элементами управления, позволяющими приостанавливать или возобновлять загрузку.

Win32 устарел

32-разрядная версия Android Studio для Windows перестанет получать обновления после декабря 2019 года, а её поддержка прекратится после декабря 2020 года. Вы можете продолжать использовать Android Studio. Однако для получения дополнительных обновлений обновите свою рабочую станцию до 64-разрядной версии Windows.

Чтобы узнать больше, прочтите блог об амортизации 32-разрядной версии Windows.

Новая опция для оптимизации времени синхронизации Gradle

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

Чтобы улучшить производительность Gradle Sync, перейдите в Файл > Настройки > Экспериментальные и выберите Не создавать список задач Gradle во время синхронизации Gradle.

При включении этой опции Android Studio пропускает формирование списка задач во время синхронизации, что ускоряет синхронизацию Gradle и повышает отзывчивость пользовательского интерфейса. Имейте в виду, что когда IDE пропускает формирование списка задач, списки задач на панели Gradle пусты, а автодополнение имён задач в файлах сборки не работает.

Новое место для переключения автономного режима Gradle

Чтобы включить или отключить автономный режим Gradle, сначала выберите «Вид» > «Окна инструментов» > «Gradle» в строке меню. Затем в верхней части окна Gradle нажмите «Переключить автономный режим». Кнопка Gradle offline на панели Gradle. .

IntelliJ IDEA 2019.2

Основная среда разработки Android Studio IDE обновлена с учетом улучшений IntelliJ IDEA в версии 2019.2 .

Дополнительную информацию об улучшениях в других версиях IntelliJ, которые совокупно включены в версию 2019.2, можно найти на следующих страницах:

Участники сообщества

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

  • Альберт Ло
  • Алексей Ротт
  • Андреа Леганца
  • Бенедикт Колб
  • Сесар Пуэрта
  • Кертис Крёч
  • Дамиан Вечорек
  • Дэн Лью
  • Дэвид Бурстрём
  • Дипаншу
  • Егор Андреевич
  • Эли Грабер
  • Эмин Кокалари
  • Эван Татарка
  • Франтишек Надь
  • Грег Моенс
  • Ханнес Ахляйтнер
  • Ханс Петтер Эйде
  • Хеннинг Банк
  • Хуго Виссер
  • Игорь Эскодро
  • Иньяки Виллар
  • Хавентира Лиената
  • Джо Роджерс
  • Кристоффер Даниэльссон
  • Лиран Барсис
  • Луи CAD
  • Лорант Пинтер
  • Лукаш Васильковский
  • Люк Фильке
  • Малвин Сутанто
  • Масатоши Кубоде
  • Мэтью Уинтерс
  • Майкл Бейли
  • Михал Гурни
  • Михай Няксу
  • Майк Скамелл
  • Монте Крезор
  • Нельсон Осаки
  • Нельсон Осаки
  • Ник Фирмани
  • Никлас Ансман Гирц
  • Никлас Крон
  • Николас Лихтмайер
  • Ник Хаарман
  • Нильс ван Хове
  • Никлас Бауди
  • Ренато Гонсалвес
  • Roar Grønmo
  • Руслан Баратов
  • Синан Козак
  • Славомир Червинский
  • Стефан Вольф
  • Стивен Д'Амико
  • Тао Ван
  • Томаш Хладек
  • Томаш Прохазка
  • Тони Робалик
  • Торбьёрн Сёрли
  • Уоррен Хе
  • Йенчи Лин
  • Зак Свирс
  • 3.5 (август 2019 г.)

    Android Studio 3.5 — это крупный релиз, ставший результатом проекта Project Marble. Начиная с выпуска Android Studio 3.3 , инициатива Project Marble охватила несколько релизов, направленных на улучшение трёх основных аспектов IDE: работоспособности системы , доработке функций и исправлению ошибок.

    Информацию об этих и других обновлениях Project Marble можно найти в блоге разработчиков Android или в разделах ниже.

    Мы также хотим поблагодарить всех членов нашего сообщества , которые помогли с этим релизом.

    3.5.3 (декабрь 2019 г.)

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

    3.5.2 (ноябрь 2019 г.)

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

    3.5.1 (октябрь 2019 г.)

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

    Проект Marble: Состояние системы

    В этом разделе описываются изменения в Android Studio 3.5, направленные на улучшение работоспособности системы.

    Рекомендуемые настройки памяти

    Android Studio теперь уведомляет вас, если обнаруживает, что производительность можно повысить, увеличив максимальный объём оперативной памяти, выделяемой ОС для процессов Android Studio, таких как ядро IDE, демон Gradle и демон Kotlin. Вы можете принять рекомендуемые настройки, щёлкнув ссылку действия в уведомлении, или настроить их вручную, выбрав «Файл» > «Настройки» (или «Android Studio» > «Настройки» в macOS), а затем найдя раздел «Настройки памяти» в разделе «Внешний вид и поведение» > «Системные настройки» . Подробнее см. в разделе «Максимальный размер кучи» .

    Уведомление о рекомендуемых настройках памяти.

    Уведомление о рекомендуемых настройках памяти.

    Отчет об использовании памяти

    Проблемы с памятью в Android Studio иногда сложно воспроизвести и сообщить о них. Чтобы решить эту проблему, Android Studio позволяет создать отчёт об использовании памяти, выбрав «Справка» > «Анализ использования памяти» в строке меню. При этом IDE локально очищает данные от персональных данных, прежде чем спросить, хотите ли вы отправить их команде Android Studio для определения источника проблем с памятью. Подробнее см. в разделе «Запуск отчёта об использовании памяти» .

    Отчет об использовании памяти.

    Отчет об использовании памяти.

    Windows: Оптимизация ввода-вывода антивирусных файлов

    Android Studio теперь автоматически проверяет, исключены ли определённые каталоги проекта из антивирусного сканирования в режиме реального времени. Если есть возможность внести изменения для повышения производительности сборки, Android Studio уведомит вас и предоставит инструкции по оптимизации настроек антивируса. Подробнее см. в статье «Минимизация влияния антивирусного ПО на скорость сборки» .

    Проект «Мрамор»: Полировка деталей

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

    Применить изменения

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

    Более подробную информацию см. в разделе Применить изменения .

    Кнопки панели инструментов для применения изменений.

    Кнопки панели инструментов для применения изменений.

    Процесс развертывания приложения

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

    Раскрывающееся меню целевого устройства.

    Раскрывающееся меню целевого устройства.

    Улучшенная синхронизация Gradle и обнаружение кэша

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

    Улучшен вывод ошибок сборки

    Сборка Значок окна сборки Окно теперь предоставляет улучшенные отчеты об ошибках, такие как ссылка на файл и строка с сообщенной ошибкой, для следующих процессов сборки:

    • Компиляция и компоновка AAPT
    • R8 и ProGuard
    • Дексинг
    • Объединение ресурсов
    • Анализ XML-файла
    • Компиляция Javac, Kotlinc и CMake

    Модернизации проекта

    Улучшенный процесс обновления: теперь доступно больше информации и действий, которые помогут вам обновить IDE и плагин Android Gradle. Например, больше ошибок синхронизации и сборки включают действия, которые помогут вам минимизировать ошибки при обновлении.

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

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

    Android Studio 3.5 включает в себя ряд улучшений визуализации макета, управления и взаимодействия.

    При работе с ConstraintLayout новый раздел «Ограничения» на панели «Атрибуты» содержит список связей ограничений выбранного компонента пользовательского интерфейса. Вы можете выбрать ограничение либо на панели конструктора, либо в списке ограничений, чтобы выделить его в обеих областях.

    Ограничительные отношения для выбранного элемента пользовательского интерфейса.

    Ограничительные отношения для выбранного элемента пользовательского интерфейса.

    Аналогичным образом, теперь вы можете удалить ограничение, выделив его и нажав клавишу Delete . Вы также можете удалить ограничение, удерживая клавишу Control ( Command в macOS) и щёлкнув по якорю ограничения. Обратите внимание: при удерживании клавиши Control или Command и наведении курсора на якорь все связанные с ним ограничения становятся красными, указывая на то, что их можно удалить, щёлкнув по ним.

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

    Анимация, показывающая, как использовать виджет ограничений для создания ограничений.

    Использование виджета ограничений для создания ограничений.

    При создании ограничения редактор макетов теперь отображает только доступные опорные точки, которыми можно ограничить объект. Ранее редактор макетов подсвечивал все опорные точки на всех видах, независимо от того, можно ли было ограничить объект. Кроме того, теперь синяя подсветка выделяет целевой объект ограничения. Такая подсветка особенно полезна при попытке ограничить объект компонентом, который перекрывается другим.

    Анимация, показывающая, как создать ограничение для перекрывающегося компонента в Android Studio 3.4.

    Создание ограничения для перекрывающегося компонента в Android Studio 3.4.

    Анимация, показывающая, как создать ограничение для перекрывающегося компонента в Android Studio 3.5.

    Создание ограничения для перекрывающегося компонента в Android Studio 3.5.

    Помимо вышеперечисленных обновлений, Android Studio 3.5 также содержит следующие улучшения редактора макетов:

    • Виджет «Ограничение» и раскрывающийся список полей по умолчанию теперь позволяют использовать ресурсы измерений для полей.
    • На панели инструментов редактора макетов обновлён список устройств, определяющих размер рабочей области. Кроме того, улучшена привязка при изменении размера, а маркеры изменения размера на рабочей области теперь всегда видны. При изменении размера появляются новые наложения, отображающие распространённые размеры устройств.
    • Редактор макетов имеет новую цветовую схему, которая улучшает согласованность и снижает контраст между компонентами, текстом и ограничениями.
    • Режим чертежей теперь включает поддержку текста для некоторых компонентов, где текст не отображался.

    Дополнительную информацию об этих изменениях можно найти в статье Android Studio Project Marble: Layout Editor .

    Привязка данных

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

    Анимация, демонстрирующая производительность редактора кода в Android Studio 3.4.

    Производительность редактора кода в Android Studio 3.4.

    Анимация, демонстрирующая производительность редактора кода в Android Studio 3.5.

    Улучшена производительность редактирования кода в Android Studio 3.5.

    Улучшенная поддержка проектов C/C++

    Android Studio 3.5 включает несколько изменений, улучшающих поддержку проектов C/C++.

    Улучшения панели «Варианты сборки» для синхронизации отдельных вариантов

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

    Более подробную информацию см. в разделе Изменение варианта сборки .

    Панель «Варианты сборки» с выбором одного варианта с помощью ABI.

    Панель вариантов сборки с выбором одного варианта с помощью ABI.

    Параллельные версии NDK

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

    Если в вашем проекте используется плагин Android Gradle версии 3.5.0 или выше, вы также можете указать версию NDK, которую должен использовать каждый модуль в вашем проекте. Эта функция позволяет создавать воспроизводимые сборки и устранять несовместимость между версиями NDK и плагином Android Gradle.

    Дополнительные сведения см. в разделе Установка и настройка NDK, CMake и LLDB .

    Поддержка ChromeOS

    Android Studio теперь официально поддерживает устройства ChromeOS, такие как HP Chromebook x360 14, Acer Chromebook 13/Spin 13 и другие, о которых вы можете узнать в системных требованиях . Чтобы начать работу, загрузите Android Studio на совместимое устройство ChromeOS и следуйте инструкциям по установке .

    Примечание: Android Studio на ChromeOS в настоящее время поддерживает развертывание приложений только на подключенном устройстве. Подробнее см. в статье «Запуск приложений на устройстве» .

    Условная поставка для функциональных модулей

    Условная доставка позволяет задать определённые требования к конфигурации устройства для автоматической загрузки модулей функций при установке приложения. Например, вы можете настроить модуль функций, включающий функции дополненной реальности (AR), так, чтобы он был доступен при установке приложения только для устройств с поддержкой AR.

    В настоящее время этот механизм доставки поддерживает управление загрузкой модуля во время установки приложения на основе следующих конфигураций устройства:

    • Аппаратные и программные характеристики устройства, включая версию OpenGL ES
    • Страна пользователя
    • уровень API

    Если устройство не соответствует всем указанным вами требованиям, модуль не загружается при установке приложения. Однако позднее приложение может запросить загрузку модуля по запросу с помощью библиотеки Play Core Library. Подробнее см. в статье «Настройка условной доставки» .

    IntelliJ IDEA 2019.1

    Основная среда Android Studio IDE обновлена с учетом улучшений IntelliJ IDEA версии 2019.1 , таких как настройка тем.

    Последняя версия IntelliJ, входившая в состав Android Studio, была 2018.3.4. Подробнее об улучшениях в других версиях IntelliJ, которые включены в этот выпуск Android Studio, см. в следующих обновлениях с исправлениями ошибок:

    Обновления плагина Android Gradle 3.5.0

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

    Участники сообщества

    Благодарим всех участников нашего сообщества, которые помогли нам обнаружить ошибки и предложить другие способы улучшения Android Studio 3.5. В частности, мы хотели бы поблагодарить следующих людей, сообщивших об ошибках P0 и P1:

    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, которые вы хотите использовать.

    3.3 (январь 2019 г.)

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

    3.3.2 (март 2019 г.)

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

    3.3.1 (февраль 2019 г.)

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

    IntelliJ IDEA 2018.2.2

    Основная среда разработки Android Studio IDE обновлена с учетом улучшений IntelliJ IDEA в версии 2018.2.2 .

    Обновления плагина Android Gradle

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

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

    Для получения дополнительной информации см. раздел Реализация навигации с помощью компонента архитектуры навигации .

    Удалить неиспользуемые каталоги Android Studio

    При первом запуске основной версии Android Studio программа ищет каталоги, содержащие кэши, настройки, индексы и журналы для версий Android Studio, для которых не удалось найти соответствующую установку. В диалоговом окне « Удаление неиспользуемых каталогов Android Studio» отображаются местоположения, размеры и время последнего изменения этих неиспользуемых каталогов, а также предлагается возможность их удаления.

    Ниже перечислены каталоги, которые Android Studio считает подлежащими удалению:

    • Linux: ~/.AndroidStudio[Preview] XY
    • Mac: ~/Library/{Preferences, Caches, Logs, Application Support}/AndroidStudio[Preview] XY
    • Windows: %USER%.AndroidStudio[Preview] XY

    Улучшения линта

    При вызове Lint из Gradle он работает значительно быстрее: в крупных проектах можно ожидать, что lint будет работать до четырех раз быстрее.

    Мастер создания нового проекта

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

    Более подробную информацию смотрите в разделе Создание проекта .

    Обновления профилировщика

    Android Studio 3.3 включает обновления нескольких отдельных профилировщиков.

    Улучшенная производительность

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

    Параметры отслеживания распределения памяти профилировщика

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

    Используя раскрывающийся список «Отслеживание распределения» , вы можете выбрать один из следующих режимов:

    • Полный: захватывает все выделения памяти для объектов. Обратите внимание: если ваше приложение выделяет много объектов, при профилировании могут возникнуть серьёзные проблемы с производительностью.

    • Выборочно: периодическая выборка выделенной памяти для объектов. Это поведение по умолчанию, которое оказывает меньшее влияние на производительность приложения при профилировании. Вы можете столкнуться с проблемами производительности в приложениях, выделяющих много объектов за короткий промежуток времени.

    • Выкл.: отключает выделение памяти. Если этот режим ещё не выбран, он включается автоматически при записи данных ЦП и возвращается к предыдущим настройкам после завершения записи. Вы можете изменить это поведение в диалоговом окне настройки записи данных ЦП.

      Отслеживание затрагивает как объекты Java, так и ссылки JNI.

    Проверка данных рендеринга кадров

    В CPU Profiler теперь можно посмотреть, сколько времени требуется вашему Java-приложению для отрисовки каждого кадра в основном потоке пользовательского интерфейса и потоке RenderThread. Эти данные могут быть полезны при поиске узких мест, вызывающих подтормаживание пользовательского интерфейса и низкую частоту кадров. Например, каждый кадр, отрисовка которого занимает больше 16 мс, необходимых для поддержания плавной частоты кадров, отображается красным цветом.

    Чтобы просмотреть данные рендеринга кадров, запишите трассировку, используя конфигурацию, позволяющую отслеживать системные вызовы . После записи трассировки найдите информацию о каждом кадре на временной шкале записи в разделе « КАДРЫ» , как показано ниже.

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

    Фрагменты хронологии событий

    Временная шкала событий теперь показывает, когда фрагменты прикреплены и отсоединены. Кроме того, при наведении курсора на фрагмент появляется подсказка с его статусом.

    Просмотр форматированного текста для полезных данных соединения в сетевом профилировщике

    Раньше сетевой профилировщик отображал только необработанный текст из полезных данных подключения. Android Studio 3.3 теперь по умолчанию форматирует некоторые типы текста, включая JSON, XML и HTML. На вкладках «Ответ» и «Запрос» нажмите ссылку «Просмотреть проанализированный» , чтобы отобразить форматированный текст, и ссылку « Просмотреть исходный код» , чтобы отобразить необработанный текст.

    Для получения дополнительной информации см. раздел Проверка сетевого трафика с помощью Network Profiler .

    Автоматическая загрузка компонентов SDK

    Если вашему проекту требуется компонент SDK из платформ SDK, NDK или CMake, Gradle теперь пытается автоматически загрузить требуемые пакеты, если вы ранее приняли все соответствующие лицензионные соглашения с помощью SDK Manager.

    Дополнительную информацию см. в разделе Автоматическая загрузка отсутствующих пакетов с помощью Gradle .

    Поддержка Clang-Tidy

    Android Studio теперь поддерживает статический анализ кода с помощью Clang-Tidy для проектов, содержащих нативный код. Чтобы включить поддержку Clang-Tidy, обновите NDK до версии r18 или выше.

    Затем вы можете включить или повторно включить проверки, открыв диалоговое окно «Настройки» или «Предпочтения» и выбрав «Редактор» > «Инспекции» > «C/C++» > «Общие» > «Clang-Tidy» . При выборе этой проверки в диалоговом окне «Настройки» или «Предпочтения» вы также увидите список включённых и отключенных проверок Clang-Tidy в разделе «Параметры» на крайней правой панели. Чтобы включить дополнительные проверки , добавьте их в список и нажмите «Применить» .

    Чтобы настроить Clang-Tidy с помощью дополнительных параметров , нажмите «Настроить параметры проверки Clang-Tidy» и добавьте их в открывшемся диалоговом окне.

    Удаление возможностей настройки C++

    Из диалогового окна «Настройка поддержки C++» были удалены следующие параметры:

    • Поддержка исключений (-fexceptions)
    • Поддержка информации о типе выполнения (-ftti)

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

    CMake версии 3.10.2

    CMake версии 3.10.2 теперь включён в SDK Manager. Обратите внимание, что Gradle по-прежнему использует версию 3.6.0 по умолчанию.

    Чтобы указать версию CMake для использования Gradle, добавьте следующее в файл build.gradle вашего модуля:

        android {
            ...
            externalNativeBuild {
                cmake {
                    ...
                    version "3.10.2"
                }
            }
        }
        
      

    Дополнительные сведения о настройке CMake в build.gradle см. в разделе Ручная настройка Gradle .

    Новый синтаксис «+» для указания минимальных версий CMake

    При указании версии CMake в файле build.gradle вашего основного модуля теперь можно добавить «+», чтобы соответствовать поведению команды cmake_minimum_required() .

    Внимание: не рекомендуется использовать синтаксис «+» с другими зависимостями сборки , поскольку динамические зависимости могут привести к неожиданным обновлениям версий и затруднить разрешение различий версий.

    Пакеты приложений Android теперь поддерживают мгновенные приложения

    Android Studio теперь позволяет создавать наборы приложений Android App Bundle с полной поддержкой Google Play Instant . Другими словами, теперь вы можете создавать и развертывать как установленные приложения, так и мгновенные версии из одного проекта Android Studio и включать их в один набор приложений Android App Bundle.

    Если вы создаёте новый проект Android Studio с помощью диалогового окна «Создать новый проект» , убедитесь, что установлен флажок «Настроить проект» > «Этот проект будет поддерживать мгновенные приложения» . Затем Android Studio создаёт новый проект приложения как обычно, но включает в манифест следующие свойства, чтобы добавить поддержку мгновенных приложений в базовый модуль вашего приложения:

        <manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
            <dist:module dist:instant="true" />
            ...
        </manifest>
        
      

    Затем вы можете создать модуль функции с мгновенным запуском, выбрав «Файл» > «Создать» > «Новый модуль» в строке меню, а затем «Модуль динамических функций» в диалоговом окне «Создать новый модуль» . Имейте в виду, что создание этого модуля также мгновенно активирует базовый модуль вашего приложения.

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

    Синхронизация одновариантного проекта

    Синхронизация проекта с конфигурацией сборки — важный шаг, позволяющий Android Studio понять структуру вашего проекта. Однако для крупных проектов этот процесс может занять много времени. Если в вашем проекте используется несколько вариантов сборки, теперь вы можете оптимизировать синхронизацию проекта, ограничив её только выбранным в данный момент вариантом.

    Для включения этой оптимизации необходимо использовать Android Studio 3.3 или более позднюю версию с плагином Android Gradle 3.3.0 или более позднюю версию. При соблюдении этих требований IDE предложит включить эту оптимизацию при синхронизации проекта. Оптимизация также включена по умолчанию в новых проектах.

    Чтобы включить эту оптимизацию вручную, выберите Файл > Настройки > Экспериментальный > Gradle ( Android Studio > Настройки > Экспериментальный > Gradle на Mac) и установите флажок Синхронизировать только активный вариант .

    Примечание: эта оптимизация в настоящее время поддерживает проекты, включающие только язык программирования Java. Например, если IDE обнаруживает код Kotlin или C++ в вашем проекте, она не включает эту оптимизацию автоматически, и вам не следует включать её вручную.

    Дополнительные сведения см. в разделе Включение синхронизации одновариантных проектов .

    Обеспечить быструю обратную связь

    Если вы решили поделиться статистикой использования, чтобы помочь улучшить Android Studio, вы увидите эти два новых значка в строке состояния в нижней части окна IDE:

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

    Если вы еще этого не сделали, вы можете включить отправку статистики использования, открыв диалоговое окно настроек (Настройки на Mac), перейдя в раздел Внешний вид и поведение > Системные настройки > Общий доступ к данным и установив флажок Отправлять статистику использования в Google .

    3.2 (сентябрь 2018 г.)

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

    3.2.1 (октябрь 2018 г.)

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

    • Входящая в комплект версия Kotlin теперь имеет номер 1.2.71.
    • Версия инструментов сборки по умолчанию теперь 28.0.3.
    • В библиотеке навигации типы аргументов были переименованы из type в argType .
    • Исправлены следующие ошибки:
      • При использовании библиотеки привязки данных имена переменных с подчеркиванием вызывали ошибки компиляции.
      • CMake приводил к сбоям в работе IntelliSense и других функций CLion.
      • Добавление SliceProvider вызывало ошибки компиляции в проектах, не использующих библиотеки androidx.* .
      • Некоторые модульные тесты Kotlin не запускались.
      • Проблема с привязкой данных вызывала исключение PsiInvalidElementAccessException .
      • Элементы <merge> иногда вызывали сбой редактора макетов.

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

    Примечание: эти проблемы были решены в Android Studio 3.2.1.

    • Мы настоятельно не рекомендуем использовать Kotlin версии 1.2.70.

      В версии Kotlin 1.2.61 исправлена ошибка, которая могла привести к зависанию Android Studio, но в версии Kotlin 1.2.70 это исправление отсутствует .

      Однако версии Kotlin 1.2.71 и более поздние включают это исправление.

    • Хотя обычно вам не нужно указывать версию инструментов сборки, при использовании плагина Android Gradle 3.2.0 с renderscriptSupportModeEnabled , установленным в значение true , вам необходимо включить следующее в файл build.gradle каждого модуля:

      android.buildToolsVersion "28.0.3"

    Что нового в Помощнике

    Новый помощник информирует вас о последних изменениях в Android Studio.

    Помощник открывается при запуске Android Studio после новой установки или обновления, если он обнаруживает новую информацию для отображения. Вы также можете открыть помощника, выбрав «Справка» > «Что нового в Android Studio» .

    Android Jetpack

    Android Jetpack помогает ускорить разработку приложений для Android с помощью компонентов, инструментов и рекомендаций, которые устраняют повторяющиеся задачи и позволяют быстрее и проще создавать высококачественные, легко тестируемые приложения. Android Studio включает следующие обновления для поддержки Jetpack. Подробнее см. в документации Jetpack .

    Новый редактор навигации интегрируется с компонентами навигации Android Jetpack, предоставляя графическое представление для создания структуры навигации вашего приложения. Редактор навигации упрощает проектирование и реализацию навигации между разделами приложения.

    В Android Studio 3.2 редактор навигации является экспериментальной функцией. Чтобы включить редактор навигации, нажмите «Файл» > «Настройки» ( Android Studio > «Настройки» на Mac), выберите категорию «Экспериментальные» на левой панели, установите флажок «Включить редактор навигации» и перезапустите Android Studio.

    Более подробную информацию см. в документации по редактору навигации .

    Миграция AndroidX

    В рамках Jetpack мы переносим библиотеки поддержки Android в новую библиотеку расширений Android, использующую пространство имён androidx . Подробнее см. в обзоре AndroidX .

    Android Studio 3.2 поможет вам в этом процессе с помощью новой функции миграции.

    Чтобы перенести существующий проект в AndroidX, выберите «Рефакторинг» > «Миграция в AndroidX» . Если у вас есть зависимости Maven, которые не были перенесены в пространство имён AndroidX, система сборки Android Studio также автоматически преобразует эти зависимости проекта.

    Плагин Android Gradle предоставляет следующие глобальные флаги, которые можно установить в файле gradle.properties :

    • android.useAndroidX : если этот флаг установлен в true , это означает, что вы хотите начать использовать AndroidX с этого момента. Если флаг отсутствует, Android Studio ведёт себя так, как если бы ему было присвоено значение false .
    • android.enableJetifier : если этот флаг установлен в true , это означает, что вы хотите использовать поддержку инструмента (из плагина Android Gradle) для автоматического преобразования существующих сторонних библиотек, как если бы они были написаны для AndroidX. Если флаг отсутствует, Android Studio ведёт себя так, как если бы ему было установлено значение false .

    При использовании команды «Миграция на AndroidX» оба флага устанавливаются в true .

    Если вы хотите немедленно начать использовать библиотеки AndroidX и вам не нужно конвертировать существующие сторонние библиотеки, вы можете установить флаг android.useAndroidX в true , а флаг android.enableJetifier в значение false .

    Пакет приложений для Android

    Android App Bundle — это новый формат загрузки, который включает в себя весь скомпилированный код и ресурсы вашего приложения, но откладывает генерацию APK и подписание в Google Play Store.

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

    Кроме того, вы можете добавить модули функций в свой проект приложения и включить их в комплект App Bundle. После этого пользователи смогут загружать и устанавливать функции вашего приложения по запросу.

    Чтобы собрать пакет, выберите «Сборка» > «Сборка пакета(ов)/APK» > «Сборка пакета(ов)» .

    Дополнительную информацию, включая инструкции по созданию и анализу Android App Bundle, см. в разделе Android App Bundle .

    Примеры данных в редакторе макетов

    Многие макеты Android содержат данные времени выполнения, которые могут затруднять визуализацию внешнего вида макета на этапе проектирования приложения. Теперь вы можете легко увидеть предварительный просмотр вашего представления в редакторе макетов с примерами данных. При добавлении представления кнопка Кнопка отображается под представлением в окне «Конструктор». Нажмите эту кнопку, чтобы задать атрибуты представления во время разработки. Вы можете выбрать один из множества шаблонов примеров данных и указать количество элементов, которыми будет заполнено представление.

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

    Ломтики

    Фрагменты предоставляют новый способ встраивания частей функциональности вашего приложения в другие элементы пользовательского интерфейса Android. Например, фрагменты позволяют отображать функциональность и контент приложения в подсказках поиска Google.

    В Android Studio 3.2 имеется встроенный шаблон, который поможет вам расширить свое приложение с помощью новых API-интерфейсов поставщика слайсов, а также новых проверок lint, которые позволят вам убедиться, что вы следуете лучшим практикам при создании слайсов.

    Чтобы начать работу, щелкните правой кнопкой мыши папку проекта и выберите «Создать» > «Другое» > «Поставщик срезов» .

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

    Котлин 1.2.61

    Android Studio 3.2 включает Kotlin 1.2.61, а новый Android SDK лучше интегрируется с Kotlin. Подробнее см. в блоге разработчиков Android .

    IntelliJ IDEA 2018.1.6

    Основная среда разработки Android Studio IDE обновлена с учетом улучшений IntelliJ IDEA в версии 2018.1.6 .

    Профилировщики Android

    Попробуйте следующие новые функции Android Profiler в Android Studio 3.2.

    Сессии

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

    Когда вы записываете трассировку метода или получаете дамп кучи , IDE добавляет эти данные (вместе с сетевой активностью вашего приложения) как отдельную запись в текущий сеанс, и вы можете легко переключаться между записями для сравнения данных.

    Системная трассировка

    В CPU Profiler выберите новую конфигурацию System Trace, чтобы проверить загрузку процессора и активность потоков вашего устройства. Эта конфигурация трассировки основана на systrace и полезна для исследования проблем на системном уровне, таких как подтормаживания пользовательского интерфейса.

    Используя эту конфигурацию трассировки, вы можете визуально отмечать важные процедуры кода на временной шкале профилировщика, оснастив свой код C/C++ собственным API трассировки или свой код Java — классом Trace .

    Проверьте ссылки JNI в профилировщике памяти

    Если вы развертываете свое приложение на устройстве под управлением Android 8.0 (уровень API 26) или выше, теперь вы можете проверить выделение памяти для кода JNI вашего приложения с помощью Memory Profiler .

    Во время работы приложения выберите область временной шкалы, которую хотите проверить, и выберите «Куча JNI» в раскрывающемся меню над списком классов, как показано ниже. После этого вы можете просматривать объекты в куче как обычно и дважды щёлкать объекты на вкладке « Стек вызовов распределения», чтобы увидеть, где в вашем коде выделяются и освобождаются ссылки JNI.

    Импорт, экспорт и проверка файлов дампа кучи памяти

    Теперь вы можете импортировать, экспортировать и проверять файлы дампа кучи памяти .hprof , созданные с помощью Memory Profiler .

    Импортируйте файл .hprof , нажав «Начать новый сеанс профилирования». на панели «Сеансы» профилировщика, затем выберите «Загрузить из файла» . После этого вы сможете просмотреть данные в профилировщике памяти, как и любой другой дамп кучи.

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

    Запись активности ЦП во время запуска приложения

    Теперь вы можете записывать активность ЦП во время запуска вашего приложения следующим образом:

    1. В главном меню выберите Выполнить > Изменить конфигурации .
    2. На вкладке Профилирование нужной конфигурации запуска установите флажок рядом с опцией Начать запись трассировки метода при запуске .
    3. Выберите конфигурацию записи ЦП из раскрывающегося меню.
    4. Разверните приложение на устройстве под управлением Android 8.0 (уровень API 26) или выше, выбрав Запустить > Профиль .
    Экспорт трассировок ЦП

    После регистрации активности ЦП с помощью CPU Profiler вы можете экспортировать данные в виде файла .trace , чтобы поделиться ими с другими или изучить их позже.

    Чтобы экспортировать трассировку после записи активности ЦП, выполните следующие действия:

    1. Щелкните правой кнопкой мыши по записи, которую вы хотите экспортировать из временной шкалы ЦП.
    2. В раскрывающемся меню выберите Экспорт трассировки .
    3. Перейдите туда, где вы хотите сохранить файл, и нажмите кнопку Сохранить .
    Импорт и проверка файлов трассировки ЦП

    Теперь вы можете импортировать и проверять файлы .trace , созданные с помощью Debug API или CPU Profiler . (В настоящее время импорт записей System Trace невозможен.)

    Импортируйте файл трассировки, нажав «Начать новый сеанс профилирования». на панели «Сеансы» профилировщика, затем выберите «Загрузить из файла» . После этого вы сможете просматривать данные в профилировщике ЦП, как обычно, за исключением следующих случаев:

    • Активность ЦП не отображается на временной шкале ЦП.
    • Временная шкала активности потока показывает только, где доступны данные трассировки для каждого потока, а не фактические состояния потока (например, выполнение, ожидание или сон).
    Запись активности ЦП с помощью отладочного API

    Теперь вы можете запускать и останавливать запись активности ЦП в CPU Profiler, оснастив приложение API отладки . После развертывания приложения на устройстве профилировщик автоматически начинает запись активности ЦП, когда приложение вызывает startMethodTracing(String tracePath) , и останавливает запись, когда приложение вызывает stopMethodTracing() . При записи активности ЦП, инициированной с помощью этого API, CPU Profiler отображает API отладки в качестве выбранной конфигурации записи ЦП.

    Энергетический профайлер

    Energy Profiler наглядно отображает предполагаемое энергопотребление вашего приложения, а также системные события, которые влияют на энергопотребление, такие как блокировки сна, сигналы тревоги и задания.

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

    Щелкните строку «Энергия» , чтобы развернуть представление «Профилировщик энергии». Наведите указатель мыши на временную шкалу, чтобы увидеть распределение энергопотребления по ресурсам процессора, сети и местоположения (GPS), а также соответствующие системные события.

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

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

    Проверка ворса

    Android Studio 3.2 включает множество новых и улучшенных функций для проверки линта .

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

    Lint проверяет совместимость Java/Kotlin

    Чтобы обеспечить взаимодействие вашего кода Java с кодом Kotlin, новые проверки lint реализуют лучшие практики, описанные в руководстве по взаимодействию с Kotlin . Примеры таких проверок включают поиск аннотаций Nullability, использование жёстких ключевых слов Kotlin и размещение лямбда-параметров в конце.

    Чтобы включить эти проверки, нажмите Файл > Настройки ( Android Studio > Настройки на Mac), чтобы открыть диалоговое окно настроек , перейдите в раздел Редактор > Проверки > Android > Lint > Взаимодействие > Взаимодействие с Kotlin и выберите правила, которые вы хотите включить.

    Чтобы включить эти проверки для сборок из командной строки, добавьте в файл build.gradle следующее:

            android {
                lintOptions {
                    check 'Interoperability'
                }
            }
            
          
    Проверка линта на наличие слайсов

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

    Новая цель Gradle

    Используйте новую задачу Gradle lintFix , чтобы применить все безопасные исправления, предложенные lint-проверкой, непосредственно к исходному коду. Примером lint-проверки, предлагающей безопасное исправление, является SyntheticAccessor .

    Обновления метаданных

    Различные метаданные, такие как проверка приведения сервиса, были обновлены для проверки lint для работы с Android 9 (уровень API 28).

    Предупреждение при запуске lint на новом варианте

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

    Улучшения существующих проверок ворса

    В Android Studio 3.2 реализовано множество улучшений существующих проверок линтинга. Например, проверки цикла ресурсов теперь применяются к дополнительным типам ресурсов, а детектор переводов может находить отсутствующие переводы «на лету» прямо в редакторе.

    Идентификаторы проблем стали более доступными для обнаружения

    Идентификаторы проблем теперь отображаются в большем количестве мест, в том числе в окне «Результаты проверки» . Это упрощает поиск информации, необходимой для включения или отключения определённых проверок через lintOptions в build.gradle .

    Дополнительные сведения см. в разделе Настройка параметров lint с помощью Gradle .

    Привязка данных V2

    Data Binding V2 теперь включен по умолчанию и совместим с V1. Это означает, что если у вас есть зависимости библиотек, скомпилированных с помощью V1, вы можете использовать их в проектах, использующих Data Binding V2. Однако обратите внимание, что проекты, использующие V1, не могут использовать зависимости, скомпилированные с помощью V2.

    D8 десугаризация

    В Android Studio 3.1 мы интегрировали этап дешугаринга в инструмент D8 в качестве экспериментальной функции, что сократило общее время сборки. В Android Studio 3.2 дешугаринг с помощью D8 включен по умолчанию.

    Новый укоротитель кода

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

          android.enableR8 = true
        

    Изменены ABI по умолчанию для мультиAPK

    При создании нескольких APK , каждый из которых ориентирован на отдельный ABI, плагин больше не генерирует APK для следующих ABI по умолчанию: mips , mips64 и armeabi .

    Если вы хотите собрать APK, ориентированные на эти ABI, необходимо использовать NDK r16b или ниже и указать ABI в файле build.gradle , как показано ниже:

        splits {
            abi {
                include 'armeabi', 'mips', 'mips64'
                ...
            }
        }
        
        splits {
            abi {
                include("armeabi", "mips", "mips64")
                ...
            }
        }
        

    Примечание: это изменение поведения также включено в Android Studio 3.1 RC1 и более поздние версии.

    Улучшенные функции редактора для файлов сборки CMake

    Если вы используете CMake для добавления кода C и C++ в свой проект , Android Studio теперь включает улучшенные функции редактора, которые помогут вам редактировать скрипты сборки CMake, например следующие:

    • Подсветка синтаксиса и автодополнение кода: IDE теперь подсвечивает и предлагает варианты автодополнения кода для распространённых команд CMake. Кроме того, вы можете перейти к файлу, щёлкнув по нему с удержанием клавиши Control (Command на Mac).
    • Переформатирование кода: теперь вы можете использовать функцию переформатирования кода IntelliJ, чтобы применять стили кода к скриптам сборки CMake.
    • Безопасный рефакторинг: встроенные в IDE инструменты рефакторинга теперь также проверяют, переименовываете ли вы или удаляете файлы, на которые вы ссылаетесь в скриптах сборки CMake.

    В предыдущих версиях Android Studio при использовании окна «Проект» можно было просматривать и проверять только заголовочные файлы, принадлежащие библиотекам, собранным из локального проекта. В этой версии вы также можете просматривать и проверять заголовочные файлы, входящие в зависимости от внешних библиотек C/C++, импортируемых в проект приложения.

    Если вы уже включили код и библиотеки C/C++ в свой проект , откройте окно «Проект» в левой части IDE, выбрав «Вид» > «Окна инструментов» > «Проект» в главном меню и выберите «Android» в раскрывающемся меню. В каталоге cpp все заголовочные файлы, относящиеся к проекту вашего приложения, организованы в узле include для каждой из локальных зависимостей библиотек C/C++, как показано ниже.

    Собственный мультидекс включен по умолчанию

    Предыдущие версии Android Studio включали встроенную поддержку мультидекса при развёртывании отладочной версии приложения на устройстве с API Android уровня 21 или выше. Теперь, независимо от того, развёртываете ли вы приложение на устройстве или собираете APK для релиза, плагин Android для Gradle включает встроенную поддержку мультидекса для всех модулей, для которых minSdkVersion=21 или выше.

    AAPT2 перенесен в репозиторий Maven от Google

    Начиная с Android Studio 3.2, источником AAPT2 (Android Asset Packaging Tool 2) является репозиторий Maven от Google.

    Чтобы использовать AAPT2, убедитесь, что в вашем файле build.gradle есть зависимость google() , как показано здесь:

        buildscript {
            repositories {
                google() // here
                jcenter()
            }
            dependencies {
                classpath 'com.android.tools.build:gradle:3.2.0'
            }
        }
        allprojects {
            repositories {
                google() // and here
                jcenter()
            }
        }
        
        buildscript {
            repositories {
                google() // here
                jcenter()
            }
            dependencies {
                classpath("com.android.tools.build:gradle:3.2.0")
            }
        }
        allprojects {
            repositories {
                google() // and here
                jcenter()
            }
        }
        

    Новая версия AAPT2 исправляет множество проблем, включая улучшенную обработку не-ASCII символов в Windows.

    Удаление конфигурации по требованию

    Параметр «Настроить по требованию » удален из Android Studio.

    Android Studio больше не передает аргумент --configure-on-demand в Gradle.

    Помощник по подключению к ADB

    Новый помощник по подключению ADB предоставляет пошаговые инструкции, которые помогут вам настроить и использовать устройство через подключение Android Debug Bridge (ADB) .

    Чтобы запустить помощника, выберите «Инструменты» > «Помощник подключения» .

    Помощник по подключению ADB предоставляет инструкции, контекстные элементы управления и список подключенных устройств на нескольких страницах панели Помощника .

    Улучшения эмулятора

    Теперь вы можете в любой момент сохранять и загружать снимки AVD (виртуального устройства Android) в эмуляторе Android, что позволяет быстро и легко вернуть эмулированное устройство в известное состояние для тестирования. При редактировании AVD с помощью AVD Manager вы можете указать, какой снимок AVD следует загружать при его запуске.

    Элементы управления сохранением, загрузкой и управлением снимками AVD теперь находятся на вкладке «Снимки» в окне расширенных элементов управления эмулятора.

    Подробности смотрите в разделе Снимки .

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

    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 ++ с профилировщиком процессора

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

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

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

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

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

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

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

    На вкладке « Пламя ПРОФИЛЕРА» ЦП , стеки вызовов, которые включают методы, связанные с запросом поиска, выделены и перемещены в левую сторону диаграммы.

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

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

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

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

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

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

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

    Инспектор макета получил новые функции, в том числе некоторые функциональные возможности, ранее предоставленные устаревшим зрителем иерархии и Pixel Perfect:

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

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

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

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

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

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

    Запустить и мгновенно запустить

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

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

    Эмулятор

    Для получения подробной информации о том, что нового, и изменилось в эмуляторе со времен Android Studio 3.0, см. Примечания к выпуску эмулятора Android из версии 27.0.2 до версии 27.1.12 .

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

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

    Пользовательский интерфейс и улучшение пользовательского опыта

    Больше всплесков инструментов, сочетания клавиш и полезные сообщения

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

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

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

    Инструменты> Меню Android было удалено. Команды, которые были ранее под этим меню, были перемещены.

    • Многие команды перенесены непосредственно под меню «Инструменты» .
    • Проект Sync с командой Gradle Files переместился в меню файла .
    • Команда монитора устройства была удалена, как описано ниже.

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

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

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

    3.0 (октябрь 2017 г.)

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

    Пользователи macOS: при обновлении старой версии Android Studio может появиться диалоговое окно с сообщением об ошибке обновления «В области установки обнаружены конфликты». Просто проигнорируйте эту ошибку и нажмите «Отмена» , чтобы продолжить установку.

    3.0.1 (ноябрь 2017 г.)

    Это небольшое обновление Android Studio 3.0, включающее в себя общие исправления ошибок и улучшения производительности.

    Плагин Android для Gradle 3.0.0

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

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

    Примечание: эти улучшения потребовали значительных изменений, которые нарушили работу некоторых функций плагина, DSL и API. Обновление до версии 3.0.0 может потребовать внесения изменений в файлы сборки и плагины Gradle.

    Эта версия также включает в себя следующее:

    • Поддержка Android 8.0.
    • Поддержка создания отдельных APK-файлов на основе языковых ресурсов.
    • Поддержка библиотек Java 8 и функций языка Java 8 (без компилятора Jack).
    • Поддержка Android Test Support Library 1.0 (Android Test Utility и Android Test Orchestrator ).
    • Улучшена скорость сборки ndk-build и cmake.
    • Улучшена скорость синхронизации Gradle.
    • AAPT2 теперь включен по умолчанию.
    • Использование ndkCompile теперь более ограничено. Вместо этого вам следует перейти на использование CMake или ndk-build для компиляции нативного кода, который вы хотите упаковать в APK. Подробнее см. в статье «Миграция с ndkcompile» .

    Дополнительную информацию об изменениях см. в заметках о выпуске Android Plugin for Gradle .

    Если вы готовы перейти на новый плагин, см. раздел Переход на плагин Android для Gradle 3.0.0 .

    Поддержка Котлина

    Как было объявлено на конференции Google I/O 2017 , язык программирования Kotlin теперь официально поддерживается на Android. В этом выпуске Android Studio включает поддержку языка Kotlin для разработки под Android.

    Вы можете включить Kotlin в свой проект, преобразовав файл Java в Kotlin (щелкните Код > Преобразовать файл Java в файл Kotlin ) или создав новый проект с поддержкой Kotlin с помощью мастера создания нового проекта.

    Для начала прочитайте, как добавить Kotlin в свой проект .

    Поддержка функций языка Java 8

    Теперь вы можете использовать определенные возможности языка Java 8 и использовать библиотеки, созданные с помощью Java 8. Jack больше не требуется , и вам следует сначала отключить Jack , чтобы использовать улучшенную поддержку Java 8, встроенную в цепочку инструментов по умолчанию.

    Чтобы обновить проект для поддержки нового набора инструментов языка Java 8, обновите параметры «Совместимость с исходным кодом» и «Совместимость с целевым кодом» до версии 1.8 в диалоговом окне «Структура проекта» (щёлкните «Файл» > «Структура проекта» ). Подробнее см. в статье «Как использовать функции языка Java 8» .

    Android Profiler

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

    Чтобы открыть, нажмите «Вид» > «Окна инструментов» > «Профилировщик Android» (или нажмите «Профилировщик Android» на панели инструментов).

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

    Примечание: представление Logcat также перемещено в отдельное окно (ранее оно находилось в Android Monitor, который был удален).

    На временной шкале обзора Android Profiler нажмите на временные шкалы CPU , MEMORY или NETWORK , чтобы получить доступ к соответствующим инструментам профилировщика.

    Профилировщик ЦП

    Профилировщик ЦП помогает анализировать использование потоков ЦП вашим приложением, запуская выборочную или инструментированную трассировку ЦП. Затем вы можете выявлять и устранять проблемы с производительностью ЦП, используя различные представления данных и фильтры.

    Более подробную информацию см. в руководстве CPU Profiler .

    Профилировщик памяти

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

    Более подробную информацию см. в руководстве по профилированию памяти .

    Сетевой профилировщик

    Сетевой профилировщик позволяет отслеживать сетевую активность вашего приложения, проверять полезную нагрузку каждого сетевого запроса и ссылаться на код, сгенерировавший сетевой запрос.

    Более подробную информацию см. в руководстве Network Profiler .

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

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

    Чтобы начать, нажмите «Профиль или отладка APK» на экране приветствия Android Studio. Или, если у вас уже открыт проект, нажмите «Файл» > «Профиль или отладка APK» в строке меню. Это отобразит распакованные APK-файлы, но не декомпилирует код. Таким образом, для корректного добавления точек останова и просмотра трассировки стека необходимо прикрепить исходные файлы Java и нативные отладочные символы.

    Для получения дополнительной информации см. раздел Профилирование и отладка готовых APK-файлов .

    Проводник по файлам устройства

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

    Чтобы открыть, нажмите Вид > Окна инструментов > Проводник файлов устройства .

    Более подробную информацию см. в руководстве Device File Explorer .

    Поддержка мгновенных приложений

    Новая поддержка Android Instant Apps позволяет вам создавать Instant Apps в вашем проекте, используя два новых типа модулей : модули Instant App и модули функций (для этого требуется установить Instant Apps Development SDK ).

    В Android Studio также есть новый метод рефакторинга «Модулизовать», который поможет вам добавить поддержку Instant Apps в существующий проект. Например, если вы хотите рефакторить свой проект, поместив некоторые классы в модуль функции Instant App, выберите классы в окне проекта и нажмите «Рефакторинг» > «Модулировать» . В открывшемся диалоговом окне выберите модуль, в который должны быть помещены классы, и нажмите «ОК» .

    Когда вы будете готовы протестировать свое приложение Instant App, вы можете создать и запустить свой модуль Instant App на подключенном устройстве, указав URL-адрес приложения Instant App в параметрах запуска конфигурации : выберите «Запуск» > «Изменить конфигурации» , выберите свой модуль Instant App, а затем задайте URL-адрес в разделе «Параметры запуска» .

    Более подробную информацию можно найти в разделе Приложения Android Instant Apps .

    Модули Android Things

    Новые шаблоны Android Things в мастерах создания нового проекта и нового модуля помогут вам начать разработку для устройств Интернета вещей на базе Android.

    Для получения дополнительной информации ознакомьтесь с разделом «Как создать проект Android Things» .

    Мастер адаптивных значков

    Image Asset Studio теперь поддерживает векторные рисунки и позволяет создавать адаптивные значки запуска для Android 8.0, одновременно создавая традиционные значки (значки «Legacy») для старых устройств.

    Для начала щёлкните правой кнопкой мыши по папке res в вашем проекте и выберите «Создать» > «Ресурс изображения» . В окне Asset Studio выберите «Значки запуска (адаптивные и устаревшие)» в качестве типа значка.

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

    Более подробную информацию можно найти в статье об адаптивных иконках .

    Поддержка ресурсов шрифтов

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

    Чтобы попробовать загружаемые шрифты, убедитесь, что на вашем устройстве или эмуляторе установлены сервисы Google Play версии 11.2.63 или выше. Подробнее см. в статье «Загружаемые шрифты» .

    Помощник по индексированию приложений Firebase

    В Firebase Assistant добавлено новое руководство по тестированию индексирования приложений . Чтобы открыть помощник, выберите «Инструменты» > «Firebase» . Затем выберите «Индексирование приложений» > «Тестировать индексирование приложений» .

    В руководство включены новые кнопки для проверки индексации вашего публичного и личного контента:

    • На шаге 2 нажмите «Предварительный просмотр результатов поиска», чтобы убедиться, что ваши URL-адреса отображаются в результатах поиска Google.
    • На шаге 3 нажмите Проверить наличие ошибок , чтобы убедиться, что индексируемые объекты вашего приложения добавлены в индекс личного контента.

    Помощник по ссылкам приложений обновлен и дополнен следующими новыми возможностями:

    • Добавьте URL-тесты для каждого сопоставления URL-адресов, чтобы убедиться, что ваши фильтры намерений обрабатывают реальные URL-адреса.

      Вы также можете определить эти проверки URL вручную, используя тег <tools:validation> описанный ниже.

    • Создайте файл ссылок на цифровые активы с соответствующей записью объекта для поддержки Google Smart Lock и добавьте соответствующий тег asset_statements <meta-data> в файл манифеста.

    Валидатор URL-фильтра намерений

    Android Studio теперь поддерживает специальный тег в файле манифеста, позволяющий тестировать URL-адреса фильтров намерений . Это те же теги, которые может создать App Links Assistant .

    Чтобы объявить тестовый URL для фильтра намерений, добавьте элемент <tools:validation> рядом с соответствующим элементом <intent-filter> . Например:

          <activity ...>
              <intent-filter>
                  ...
              </intent-filter>
              <tools:validation testUrl="https://www.example.com/recipe/1138" />
          </activity>
        
        

    Обязательно также включите xmlns:tools="http://schemas.android.com/tools" в тег <manifest> .

    Если какой-либо из тестовых URL-адресов не соответствует определению фильтра намерений, возникает ошибка линтинга. Такая ошибка всё ещё позволяет собирать отладочные варианты, но нарушает работу релизных сборок.

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

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

    • Новая компоновка панели инструментов и значков.
    • Обновленная компоновка дерева компонентов.
    • Улучшена вставка представлений методом перетаскивания.
    • Новая панель ошибок под редактором, на которой отображаются все проблемы с предложениями по их устранению (если таковые имеются).
    • Различные улучшения пользовательского интерфейса для создания с помощью ConstraintLayout , включая следующие:
      • Новая поддержка для создания барьеров .
      • Новая поддержка создания групп: на панели инструментов выберите «Руководства» > «Добавить группу» (требуется ConstraintLayout 1.1.0 beta 2 или выше).
      • Новый пользовательский интерфейс для создания цепочек: выберите несколько представлений, затем щелкните правой кнопкой мыши и выберите Цепочка .

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

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

    APK-анализатор

    Теперь вы можете использовать APK Analyzer из командной строки с помощью инструмента apkanalyzer .

    APK Analyzer также был обновлен и получил следующие улучшения:

    • Для APK, созданных с помощью ProGuard, вы можете загрузить файлы сопоставления ProGuard, которые добавляют возможности средству просмотра DEX, в том числе:
      • Узлы, выделенные жирным шрифтом, указывают на то, что их не следует удалять при сжатии кода.
      • Кнопка для отображения узлов, удаленных в процессе сжатия.
      • Кнопка, восстанавливающая исходные имена узлов в древовидной структуре, которые были скрыты ProGuard.
    • DEX Viewer теперь показывает предполагаемое влияние размера каждого пакета, класса и метода.
    • Новые параметры фильтрации вверху для отображения и скрытия полей и методов.
    • В древовидной структуре узлы, являющиеся ссылками, не определенными в файле DEX, отображаются курсивом.

    Для получения дополнительной информации см. раздел Анализ вашей сборки с помощью APK Analyzer .

    Предварительный просмотр компилятора D8 DEX

    В Android Studio 3.0 доступен новый опциональный компилятор DEX под названием D8. В конечном итоге он заменит компилятор DX, но вы можете уже сейчас включить его использование.

    Компиляция DEX напрямую влияет на время сборки вашего приложения, размер файла .dex и производительность выполнения. Сравнивая новый компилятор D8 с текущим компилятором DX, D8 компилирует быстрее и выводит файлы .dex меньшего размера, обеспечивая при этом такую же или даже лучшую производительность выполнения приложения.

    Чтобы попробовать, установите следующее в файле gradle.properties вашего проекта:

    android.enableD8=true
        

    Более подробную информацию можно найти в блоге о компиляторе D8 .

    Репозиторий Maven от Google

    Android Studio теперь по умолчанию использует репозиторий Maven от Google, а не полагается на Android SDK Manager для получения обновлений для Android Support Library, Google Play Services, Firebase и других зависимостей. Это упрощает поддержание библиотек в актуальном состоянии, особенно при использовании системы непрерывной интеграции (CI).

    Все новые проекты теперь по умолчанию включают репозиторий Google Maven. Чтобы обновить существующий проект, добавьте google() в блок repositories файла build.gradle верхнего уровня:

          allprojects {
              repositories {
                  google()
              }
          }
        
        

    Подробнее о репозитории Maven от Google можно узнать здесь .

    Другие изменения

    • Отладка нативного кода в Android Studio больше не поддерживается в 32-разрядной версии Windows. Мы решили сосредоточиться на других платформах, поскольку их использует очень мало разработчиков. Если вы используете 32-разрядную версию Windows и планируете отлаживать нативный код, вам следует продолжать использовать Android Studio 2.3 .
    • Обновлена базовая IDE до IntelliJ 2017.1.2 , которая добавляет ряд новых функций из версий 2016.3 и 2017.1 , таких как рефакторинг языка Java 8, подсказки параметров, семантическая подсветка, перетаскиваемые точки останова, мгновенные результаты поиска и многое другое.
    • Добавлено много новых проверок линта.
    • Также ознакомьтесь с последними обновлениями эмулятора Android .

    2.3 (март 2017 г.)

    Android Studio 2.3.0 — это в первую очередь версия с исправлением ошибок и повышением стабильности, но она также включает ряд новых функций.

    2.3.3 (июнь 2017 г.)

    Это небольшое обновление для добавления поддержки Android O (уровень API 26).

    2.3.2 (апрель 2017 г.)

    Это небольшое обновление Android Studio 2.3, вносящее следующие изменения:

    • Обновления AVD Manager для поддержки Google Play в образах системы.
    • Исправлены ошибки в сборках NDK при использовании NDK R14+.

    Также смотрите соответствующие обновления для Android Emulator 26.0.3 .

    2.3.1 (апрель 2017 г.)

    Это небольшое обновление для Android Studio 2.3, исправляющее проблему, из-за которой некоторые физические устройства Android не работали должным образом с функцией Instant Run (см. проблему № 235879 ).

    <h3 class="hide-from-toc">
      New
    </h3>
    
    <div class="video-wrapper-left">
      <iframe class="devsite-embedded-youtube-video" data-video-id="VFyKclKBGf0"
              data-autohide="1" data-showinfo="0" frameborder="0" allowfullscreen>
      </iframe>
    </div>
    
    <ul>
      <li>Android Studio can now convert PNG, BMP, JPG, and static GIF files to
      WebP format. WebP is an image file format from Google that provides lossy
      compression (like JPEG) as well as transparency (like PNG) but can provide
      better compression than either JPEG or PNG. For more information, see
        <a href="/studio/write/convert-webp.html">Convert images to WebP in Android
        Studio</a>.
      </li>
    
      <li>The new <a href="/studio/write/app-link-indexing.html">App Links
      Assistant</a> simplifies the process of adding Android App Links to your app
      into a step-by-step wizard. Android App Links are HTTP URLs that bring users
      directly to specific content in your Android app.
      </li>
    
      <li>The Layout Editor now includes support for two new ConstraintLayout
      features:
        <ul>
          <li>Define a view size based on an aspect ratio.
          </li>
          <li>Create packed, spread, and weighted linear groups with constraint
          chains.
          </li>
        </ul>
        For more information, see <a href=
        "/training/constraint-layout/index.html">Build a Responsive UI with
        ConstraintLayout</a>.
      </li>
    
      <li>The Layout Editor also now lets you create a list of <a href=
      "/studio/write/layout-editor.html#edit-properties">favorite attributes</a> so
      you don't have to click <b>View all attributes</b> to access the attributes
      you use most.
      </li>
    
      <li>When adding a material icon using the Vector Import Dialog (<b>File &gt;
      New &gt; Vector Asset</b>), you can now filter the list of available icons by
      category or by icon name. For more information, see <a href=
      "/studio/write/vector-asset-studio.html#materialicon">Adding a material
      icon</a>.
      </li>
    
      <li>
        <a href="/studio/write/annotations.html#accessibility">New and updated
        annotations</a>. The new <code>@RestrictTo</code> annotation for methods,
        classes, and packages lets you restrict an API. The updated
        <code>@VisibleForTesting</code> annotation now has an optional
        <code>otherwise</code> argument that lets you designate what the visibility
        of a method should be if not for the need to make it visible for testing.
        Lint uses the <code>otherwise</code> option to enforce the intended
        visibility of the method.
      </li>
    
      <li>New <a href="/studio/write/lint.html#snapshot">lint baseline support</a>
      allows you to use a snapshot of your project's current set of warnings as a
      baseline for future inspection runs so only new issues are reported. The
      baseline snapshot lets you start using lint to fail the build for new issues
      without having to go back and address all existing issues first.
      </li>
    
      <li>New lint checks, including the following:
        <ul>
          <li>Obsolete <code>SDK_INT</code> Checks: Android Studio removes obsolete
          code that checks for SDK versions.
          </li>
          <li>Object Animator Validation: Lint analyzes your code to make sure that
          your <code>ObjectAnimator</code> calls reference valid methods with the
          right signatures and checks that those methods are annotated with <code>
            @Keep</code> to prevent ProGuard from renaming or removing them during
            release builds.
          </li>
          <li>Unnecessary Item Decorator Copy: Older versions of the
          <code>RecyclerView</code> library did not include a divider decorator
          class, but one was provided as a sample in the support demos. Recent
          versions of the library have a divider decorator class. Lint looks for
          the old sample and suggests replacing it with the new one.
          </li>
          <li>WifiManager Leak: Prior to Android 7.0 (API level 24), initializing
          the <code>WifiManager</code> with <code><a href="/reference/android/content/Context.html#getSystemService(java.lang.Class&lt;T&gt;)">Context.getSystemService()</a></code>
          can cause a memory leak if the context is not the application context.
          Lint looks for these initializations, and if it <em>cannot</em> determine
          that the context is the application context, it suggests you use <code><a href="/reference/android/content/Context.html#getApplicationContext()">Context.getApplicationContext()</a></code> to get the proper context for the
          initialization.
          </li>
          <li>Improved Resource Prefix: The existing <code>resourcePrefix</code>
          lint check had many limitations. You can now configure your project with
          a prefix, such as <code>android { resourcePrefix '<var>my_lib</var>'
          }</code>, and lint makes sure that all of your resources are using this
          prefix. You can use variations of the name for styles and themes. For
          example for the <var>my_lib</var> prefix, you can have themes named
          <code>MyLibTheme</code>, <code>myLibAttr</code>,
          <code>my_lib_layout</code>, and so on.
          </li>
          <li>Switch to WebP: This check identifies images in your project that can
          be converted to WebP format based on your projects
          <code>minSdkVersion</code> setting. An associated quickfix can
          automatically convert the images, or you can <a href=
          "/studio/write/convert-webp.html">convert images to WebP</a> manually.
          </li>
          <li>Unsafe WebP: If your project already includes WebP images, this check
          analyzes your project to ensure that your <code>minSdkVersion</code>
          setting is high enough to support the included images. For more
          information about WebP support in Android and Android Studio, see
          <a class="external" href=
          "https://developers.google.com/speed/webp/faq#which_web_browsers_natively_support_webp">
            Which browsers natively support WebP?</a> and <a href=
            "/studio/write/convert-webp.html">Create WebP Images Using Android
            Studio</a>.
          </li>
        </ul>
      </li>
    </ul>
    
    <h3 class="hide-from-toc">
      Changes
    </h3>
    
    <ul>
      <li>A separate button to push changes with Instant Run: After deploying your
      app, you now click <b>Apply Changes</b> <img src=
      "/studio/images/buttons/toolbar-apply-changes.svg" alt="" class=
      "inline-icon"> to quickly push incremental changes to your running app using
      Instant Run. The <b>Run</b> <img src="/studio/images/buttons/toolbar-run.png"
        alt="" class="inline-icon"> and <b>Debug</b> <img src=
        "/studio/images/buttons/toolbar-debug.png" alt="" class="inline-icon">
        buttons are always available to you when you want to reliably push your
        changes and force an app restart.
        <ul>
          <li>Instant Run is supported only when deploying your app to a target
          device running Android 5.0 (API level 21) or higher.
          </li>
          <li>Instant Run is no longer disabled for projects that <a href=
          "/studio/projects/add-native-code.html">link to external native
          projects</a> using CMake or ndk-build. However, you can only use Instant
          Run to push incremental changes to your Java code, not your native code.
          </li>
          <li>Cold swaps (which you can force for a running app by clicking
          <strong>Run</strong> <img src="/studio/images/buttons/toolbar-run.png"
          alt="" class="inline-icon">) are now more reliable. Forcing a cold swap
          also fixes the issue where changes to notification and widget UIs were
          not updated on the target device.
          </li>
          <li>Includes optimizations that make app startup much faster. These
          optimizations may affect profiling, so you should temporarily <a href=
          "/studio/run/index.html#disable-ir">disable Instant Run</a> whenever
          profiling your app.
          </li>
        </ul>
      </li>
    
      <li>
        <p>
          The <b>AVD Manager</b> <img src=
          "/studio/images/buttons/toolbar-avd-manager.png" alt="" class=
          "inline-icon"> and <b>SDK Manager</b> <img src=
          "/studio/images/buttons/toolbar-sdk-manager.png" alt="" class=
          "inline-icon"> buttons are now included in the lean Navigation Bar as
          well as the full Toolbar. To use the lean Navigation Bar, click
          <b>View</b> to open the View menu, then ensure that <b>Navigation Bar</b>
          is selected and <b>Toolbar</b> is <em>not</em> selected.
        </p>
        <img src="/studio/images/releases/navigationbar_sdkavd_2x.png" width="757">
      </li>
    
      <li>The "Hybrid" debugger has been renamed to "Dual" debugger.
      </li>
    
      <li>In the <a href="/studio/run/rundebugconfig.html">Run/Debug
      Configurations</a> dialog, under Defaults in the left pane, the following run
      configuration names have changed with no behavior changes:
        <ul>
          <li>The JUnit name has changed to Android JUnit. If you have a project
          that uses JUnit run configurations, those configurations are transformed
          to Android JUnit run configurations the first time you open the project
          with Android Studio. A dialog appears to inform you of the name change.
          </li>
          <li>The Android Tests name has changed to Android Instrumented Tests.
          </li>
        </ul>
      </li>
    
      <li>The <a href="/studio/debug/am-gpu-debugger.html">GPU Debugger</a> has
      been removed from Android Studio as of version 2.3. An open-source,
      standalone version of the tool is now available on <a href=
      "https://github.com/google/gapid" class="external-link">GitHub</a>.
      </li>
    
      <li>The Run/Debug option is no longer available when you right-click a <code>
        *.gradle build</code> script.
      </li>
    
      <li>All templates now use <code>ConstraintLayout</code> as the default
      layout.
      </li>
    
      <li>The Widgets palette in the Layout Editor has been redesigned.
      </li>
    </ul>
    
    <p>
      This release also includes a number of bug fixes. <a href=
      "https://code.google.com/p/android/issues/list?can=1&amp;q=target%3D2.3+status%3DReleased&amp;colspec=ID+Status+Priority+Owner+Summary+Stars+Reporter+Opened&amp;cells=tiles">
      See all bug fixes in 2.3.0.</a>
    </p>
    
    <p class="note">
      <b>Known issue:</b> Some device manufacturers block apps from automatically
      launching after being installed on the device. When deploying your app to a
      physical device using Android Studio 2.3, this restriction breaks the
      intended behavior of Instant Run and causes the following error output:
      <code>Error: Not found; no service started</code>. To avoid this issue,
      either <a href="/studio/run/emulator.html">use the emulator</a> or enable
      automatic launching for your app in your device's settings. The procedure
      for doing this is different for each device, so check the instructions
      provided by the manufacturer. To learn more about this issue, see
      <a href="https://code.google.com/p/android/issues/detail?id=235879">Issue
        #235879</a>.
    </p>
    

    2.2 (сентябрь 2016 г.)

    2.2.3 (декабрь 2016 г.)

    <p>
      This is a minor update to Android Studio 2.2. It includes a bug fixes
      focused around gradle, the core IDE, and lint.
    </p>
    
    <p>
      Highlighted build changes:
    </p>
    
    <ul>
      <li>ProGuard version rollback. Due to a <a href=
      "https://sourceforge.net/p/proguard/bugs/625/">correctness issue</a>
      discovered in ProGuard 5.3.1, we have rolled back to ProGuard 5.2.1. We
      have worked with the ProGuard team on getting a fix quickly, and we expect
      to roll forward to ProGuard 5.3.2 in Android Studio 2.3 Canary 3.
      </li>
      <li>Bug fix for <code>aaptOptions</code> <code>IgnoreAssetsPattern</code>
      not working properly (<a href="http://b.android.com/224167">issue
      224167</a>)
      </li>
      <li>Bug fix for Gradle autodownload for Constraint Layout library
        (<a href="https://code.google.com/p/android/issues/detail?id=212128">issue
        212128</a>)
      </li>
      <li>Bug fix for a JDK8/Kotlin compiler + dx issue (<a href=
      "http://b.android.com/227729">issue 227729</a>)
      </li>
    </ul>
    
    <p>
      <a href=
      "https://code.google.com/p/android/issues/list?can=1&amp;q=target%3D2.2.3+status%3AReleased+&amp;colspec=ID+Status+Priority+Owner+Summary+Stars+Reporter+Opened&amp;cells=tiles">
      See all bug fixes in 2.2.3</a>.
    </p>
    

    2.2.2 (октябрь 2016 г.)

    <p>
      This is a minor update to Android Studio 2.2. It includes a number of small
      changes and bug fixes, including:
    </p>
    
    <ul>
      <li>When reporting Instant Run issues through the IDE, the report now also
      includes logcat output for <code>InstantRun</code> events. To help us
      improve Instant Run, please <a href=
      "/studio/run/index.html#submit-feedback">enable extra logging and report
      any issues</a>.
      </li>
      <li>A number of small bug fixes for Gradle.
      </li>
      <li>A fix for problems with generating multiple APKs.
      </li>
    </ul>
    

    2.2.1 (октябрь 2016 г.)

    <p>
      This is a minor update to Android Studio 2.2. It includes several bug fixes
      and a new feature to enable extra logging to help us troubleshoot Instant
      Run issues—to help us improve Instant Run, please <a href=
      "/studio/run/index.html#submit-feedback">enable extra logging and report
      any issues</a>.
    </p>
    

    Новый

    • Совершенно новый редактор макетов с инструментами, специально созданными для поддержки ConstraintLayout .
    • <li>New <strong><a href=
      "http://tools.android.com/tech-docs/layout-inspector">Layout
      Inspector</a></strong> lets you examine snapshots of your layout hierarchy
      while your app is running on the emulator or a device.
      </li>
      
      <li>New <strong><a href="/studio/write/firebase.html">Assistant</a></strong>
      window to help you integrate Firebase services into your app.
      </li>
      
      <li>New <strong><a href="/studio/debug/apk-analyzer.html">APK
      Analyzer</a></strong> tool so you can inspect the contents of your packaged
      app.
      </li>
      
      <li>New <strong><a href=
      "http://tools.android.com/tech-docs/test-recorder">Espresso Test
      Recorder</a></strong> tool (currently in beta) to help you create UI tests by
      recording your own interactions.
      </li>
      
      <li>New <strong><a href=
      "http://tools.android.com/tech-docs/build-cache">build cache</a></strong>
      (currently experimental) to speed up build performance.
      </li>
      
      <li>New <strong>C/C++ build integration with CMake and ndk-build</strong>.
      Compile and build new or existing native code into libraries packaged into
      your APK, and debug using lldb. For new projects, Android Studio uses CMake
      by default, but also supports ndk-build for existing projects. To learn how
      to include native code in your Android application, read <a href=
      "/studio/projects/add-native-code.html">Add C and C++ Code to Your
      Project</a>. To learn how to debug native code with lldb, see <a href=
      "/studio/debug/index.html#debug-native">Debug Native Code</a>.
      </li>
      
      <li>New <strong><a href="/studio/intro/index.html#sample-code">Samples
      Browser</a></strong> so you can easily look up Google Android sample code
      from within Android Studio to jump start app development.
      </li>
      
      <li>New <strong>Merged Manifest Viewer</strong> to help you diagnose how your
      manifest file merges with your app dependencies across project build
      variants.
      </li>
      
      <li>The <strong>Run</strong> window now contains log messages for the current
      running app. Note that you can configure the <a href=
      "/studio/debug/am-logcat.html">logcat Monitor</a> display, but not the
      <strong>Run</strong> window.
      </li>
      
      <li>New <strong><a href="/studio/run/emulator.html">Android
      Emulator</a></strong> features:
        <ul>
          <li>Added new <strong>Virtual</strong> <strong>Sensors</strong> and
          <strong>Cellular</strong> &gt; <strong>Signal Strength</strong> controls.
          </li>
          <li>Added an <strong>LTE</strong> option to the <strong>Cellular</strong>
          &gt; <strong>Network type</strong> control.
          </li>
          <li>Added simulated vertical swipes for scrolling through vertical menus
          with a mouse wheel.
          </li>
        </ul>
      </li>
      
      <li>New <strong><a href="/studio/run/rundebugconfig.html">Run/Debug
      Configuration</a></strong> features:
        <ul>
          <li>The <strong>Debugger</strong> tab of the Android App and Android
          Tests templates now contain several new options for debugging with LLDB.
          </li>
          <li>The <strong>Profiling</strong> tab of the Android App and Android
          Tests templates now contain a <strong>Capture GPU Commands</strong>
          option for enabling GPU tracing. You can display GPU traces in the GPU
          Debugger (a beta feature).
          </li>
          <li>The Android Tests template now has a <strong>Firebase Test Lab Device
          Matrix</strong> option for the <strong>Deployment Target</strong>.
          </li>
          <li>The Native Application template has been deprecated. If you use this
          template in a project, Android Studio automatically converts it to the
          Android App template.
          </li>
          <li>The Android Application template has been renamed to Android App.
          </li>
        </ul>
      </li>
      
      <li>Improved installation, configuration, performance, and UI features in the
      <strong><a href="/studio/debug/am-gpu-debugger.html">GPU
      Debugger</a></strong> (currently in beta).
      </li>
      
      <li>Android Studio now comes bundled with <strong>OpenJDK 8</strong>.
      Existing projects still use the JDK specified in <strong>File &gt; Project
      Structure &gt; SDK Location</strong>. You can switch to use the new bundled
      JDK by clicking <strong>File &gt; Project Structure &gt; SDK
      Location</strong> and checking the <strong>Use embedded JDK</strong>
      checkbox.
      </li>
      
      <li>Added new <strong>help menus and buttons</strong> in the UI so you can
      more easily find the online documentation.
      </li>
      

    Изменения

    • Обновлена кодовая база IDE с IntelliJ 15 до IntelliJ 2016.1.
    • Для Instant Run теперь требуется установка платформенного SDK, соответствующего уровню API целевого устройства.
    • Функция Instant Run автоматически отключается, если пользователь запускает приложение под рабочим профилем или как дополнительный пользователь.
    • Исправлено множество проблем с надежностью Instant Run , из-за которых изменения не применялись или приложение аварийно завершало работу:
      • Некоторые ресурсы приложения не были развернуты в работающем приложении. ( Ошибка: #213454 )
      • Приложение аварийно завершает работу, когда пользователь переходит между сеансами мгновенного запуска и сеансами обычного запуска, где для сериализуемого класса не определен serialVersionUID. ( Ошибка: #209006 )
      • Изменения стиля не отражаются в Instant Run. ( Ошибка: #210851 )
      • Сеанс мгновенного запуска ненадежен и вызывает исключение FileNotFoundException. ( Ошибка: #213083 )
      • Изменения в элементах управления не будут отражены до тех пор, пока не будет выполнена полная перестройка для KitKat. ( Ошибка: #21530 )
      • Изменения ресурсов не отражаются в Instant Run, если пользовательские sourceSet содержат вложенные пути. ( Ошибка: #219145 )
      • Горячая и теплая замена не работают, если измененный класс содержит аннотацию со значением перечисления. ( Ошибка: #209047 )
      • Изменения в данных аннотаций не отражаются в Instant Run. ( Ошибка: #210089 )
      • Функция Instant Run не учитывает изменения кода, внесенные вне среды IDE. ( Ошибка: #213205 )
      • Сеанс мгновенного запуска ненадежен из-за несоответствия токена безопасности. ( Ошибка: #211989
      • Холодная замена не выполняется для устройств, которые не поддерживают должным образом запуск от имени. ( Ошибка: #210875 )
      • Сбой приложения после мгновенного перезапуска. ( Ошибка: #219744 )
      • При переключении с Instant Run на Instant Debug наблюдается исключение ClassNotFoundException. ( Ошибка: #215805 )
    • <li>Improved performance for <strong>Gradle sync</strong> within the IDE,
      especially for large projects.
      </li>
      
      <li>Improved build times for both full and incremental builds with new app
      packaging code.
      </li>
      
      <li>Improved <strong>Jack compiler performance and features</strong>,
      including support for annotation processors and dexing in process. To learn
      more, read the <a href=
      "/studio/releases/gradle-plugin.html#revisions">Android plugin for Gradle
      2.2.0 release notes</a>.
      </li>
      
      <li>Removed the <strong>Scale</strong> AVD property from the AVD Manager.
      </li>
      
      <li>The Android Emulator <strong>-port</strong> and <strong>-ports</strong>
      command-line options now report which ports and serial number the emulator
      instance is using, and warn if there are any issues with the values you
      provided.
      </li>
      
      <li>Improved the <strong><a href=
      "/studio/write/create-java-class.html">Create New Class dialog</a></strong>
      and the corresponding file templates. <strong>Note:</strong> If you've
      previously customized the <strong>AnnotationType</strong>,
      <strong>Class</strong>, <strong>Enum</strong>, <strong>Interface</strong>, or
      <strong>Singleton</strong> file templates, you need to modify your templates
      to comply with the new templates or you wont be able to use the new fields
      in the <strong>Create New Class</strong> dialog.
      </li>
      
      <li>Improved the <strong><a href=
      "/studio/write/vector-asset-studio.html">Vector Asset Studio</a></strong>
      user interface and added support for Adobe Photoshop Document (PSD) files.
      </li>
      
      <li>Improved the <strong><a href=
      "/studio/write/image-asset-studio.html">Image Asset Studio</a></strong> user
      interface.
      </li>
      
      <li>Improved the <strong>Theme Editor</strong>'s Resource Picker.
      </li>
      
      <li>Fixed memory leaks and reduced overall memory usage in Android Studio.
      </li>
      
      <li>Added a <strong>Background</strong> button in the <strong><a href=
      "/studio/intro/update.html#sdk-manager">SDK Manager</a></strong> so you can
      get back to work and install your packages in the background.
      </li>
      
      <li>Improved <strong><a href="/studio/intro/accessibility.html">Accessibility
      features</a></strong>, including support for screen readers and keyboard
      navigation.
      </li>
      
      <li>Enhanced <strong>Code Analysis</strong> includes code quality checks for
      Java 8 language usage and more cross-file analysis.
      </li>
      
      <li>Several toolbar icons have changed.
      </li>
      

    2.1 (апрель 2016 г.)

    Основные изменения в этом обновлении обеспечивают поддержку разработки с предварительным просмотром Android N.

    2.1.3 (август 2016 г.)

    Это обновление добавляет совместимость с Gradle 2.14.1, которая включает улучшение производительности, новые функции и важное исправление безопасности . Для получения более подробной информации см. Примечания к выпуску Gradle .

    По умолчанию новые проекты в Android Studio 2.1.3 используют Gradle 2.14.1. Для существующих проектов IDE побуждает вас перейти на Gradle 2.14.1 и плагин Android для Gradle 2.1.3 , который требуется при использовании Gradle 2.14.1 и выше.

    2.1.2 (июнь 2016 г.)

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

    • Мгновенные обновления запуска и исправления ошибок.
    • Улучшения в производительности LLDB и уведомлений о сбоях.
    • Исправлена регрессия в обновлении безопасности Android Studio 2.1.1, которое заставило git rebase пройти неудачу.

    2.1.1 (май 2016 г.)

    Обновление релиза безопасности.

    Платформа Android N добавляет поддержку языковых функций Java 8 , которые требуют нового экспериментального компилятора под названием Jack. Последняя версия Джека в настоящее время поддерживается только в Android Studio 2.1. Поэтому, если вы хотите использовать языковые функции Java 8, вам нужно использовать Android Studio 2.1 для создания вашего приложения.

    Примечание. Мгновенный прогон отключен, когда вы включаете компилятор Джека, потому что в настоящее время они не совместимы.

    Хотя Android Studio 2.1 теперь стабилен, компилятор Джека все еще экспериментал, и вы должны включить его с свойством jackOptions в вашем файле build.gradle .

    Помимо изменений для поддержки предварительного просмотра N, Android Studio 2.1 включает в себя незначительные исправления ошибок и следующие улучшения:

    • Отладчик Java-AWARE C ++ теперь включен по умолчанию, когда вы используете NEVER или EMULOUT и выбираете режим Tape Debugger (на вкладке Debugger для вашей конфигурации запуска/отладки).

    Для других улучшений сборки, включая инкрементную компиляцию Java и Dexing-In-Process, обновите свой плагин Android для Gradle до версии 2.1.0.

    2.0 (апрель 2016 г.)

    Примечание: если вы разрабатываете для N Developer Preview, вам следует использовать Android Studio 2.1 Preview. Android Studio 2.0 не поддерживает все функции, необходимые для N Preview.

    Мгновенный запуск :

    • Android Studio теперь развёртывает чистые сборки быстрее, чем когда-либо прежде. Кроме того, отправка инкрементальных изменений кода на эмулятор или физическое устройство теперь происходит практически мгновенно. Проверяйте обновления без повторного развёртывания новой отладочной сборки или, во многих случаях, без перезапуска приложения.
    • Instant Run поддерживает подталкивание следующих изменений в запущенном приложении:
      • Изменения в реализации существующего метода экземпляра или статического метода
      • Изменения в существующем ресурсе приложения
      • Изменения в структурном коде, таких как подпись метода или статическое поле (требует целевого устройства, работающего на уровне API 21 или выше).
    • Прочитайте документацию, чтобы узнать больше о мгновенном забеге .

      ПРИМЕЧАНИЕ. Мгновенный запуск поддерживается только при развертывании варианта сборки отладки, используйте плагин Android для Gradle версии 2.0.0 или выше, и настраивать файл на уровне build.gradle модуля вашего приложения для minSdkVersion 15 или выше. Для наилучшей производительности настройте свое приложение для minSdkVersion 21 или выше.

    Новые дополнения к Lint:

    • Проверка операторов switch с использованием аннотированных целых чисел @IntDef для обеспечения обработки всех констант. Чтобы быстро добавить отсутствующие операторы, используйте раскрывающееся меню действий Intent и выберите «Добавить отсутствующие константы @IntDef» .
    • Флаги для некорректных попыток использования интерполяции строк для вставки номеров версий в файл build.gradle .
    • Флаги для анонимных классов, расширяющих класс Fragment .
    • Флаги для нативного кода в небезопасных местах, таких как папки res/ и asset/ . Этот флаг поощряет сохранение нативного кода в папке libs/ , который затем безопасно упаковывается в папку data/app-lib/ приложения во время установки. AOSP: #169950
    • Флаги небезопасных вызовов Runtime.load() и System.load() . AOSP: #179980
    • Найдите и удалите все неиспользуемые ресурсы, выбрав «Рефакторинг» > «Удалить неиспользуемые ресурсы» в строке меню. Теперь функция обнаружения неиспользуемых ресурсов поддерживает только ресурсы, на которые ссылаются неиспользуемые ресурсы, ссылки в необработанных файлах, таких как ссылки на изображения .html , а также атрибуты tools:keep и tools:discard , используемые средством сжатия ресурсов Gradle, с учётом неактивных исходных наборов (например, ресурсов, используемых в других вариантах сборки) и корректной обработкой импорта статических полей.
    • Проверяет, поддерживаются ли неявные ссылки API на всех платформах, на которые указывает minSdkVersion .
    • Указывает на неправильное использование RecyclerView и Parcelable .
    • Проверки @IntDef , @IntRange и @Size теперь также проверяются для массивов int и varargs.

    Дополнительные улучшения :

    • Оптимизирован для Android Emulator 2.0, который стал быстрее, поддерживает более широкий спектр виртуальных устройств и отличается значительно улучшенным пользовательским интерфейсом. Чтобы узнать больше о новом эмуляторе, ознакомьтесь с примечаниями к выпуску SDK Tools .
    • Улучшения в диспетчере виртуальных устройств Android :
      • Системные изображения теперь классифицируются под следующими вкладками: Рекомендуется , x86 и другие .
      • При расширенных настройках вы можете включить многоядерную поддержку и указать количество ядер, которые может использовать эмулятор.
      • При расширенных настройках вы можете определить, как графика отображается на эмуляторе, выбрав один из следующих вариантов:
        • Аппаратное обеспечение: используйте видеокарту компьютера для более быстрого рендеринга.
        • Программное обеспечение: используйте программный рендеринг.
        • Авто: Пусть эмулятор определит лучший вариант. Это настройка по умолчанию.
    • Улучшено время упаковки AAPT путем указания Deploy Target до создания приложения. Это позволяет Android Studio эффективно упаковать только те ресурсы, требуемые указанным устройством.
    • Добавлена интеграция лаборатории Cloud Test для обеспечения тестирования приложений по требованию с удобством и масштабируемостью облачной службы. Узнайте больше о том, как вы можете использовать Cloud Test Lab с Android Studio .
    • Добавлен предварительный просмотр нового отладчика GPU . Для приложений, интенсивных графики, вы теперь можете визуально пройти через свой код OpenGL ES, чтобы оптимизировать ваше приложение или игру.
    • Добавлен тест индексации приложения Google. Добавьте поддержку URL -адресов, индексацию приложений и функциональность поиска в ваши приложения, чтобы помочь привлечь больше трафика в ваше приложение, обнаружите, какой контент приложения используется больше всего, и привлечь новых пользователей. Проверьте и проверяют URL -адреса в вашем приложении в Android Studio. См. Вспомогательные URL -адреса и индексацию приложений в Android Studio .
    • Обновления из последнего релиза Intellij 15, включая улучшенный анализ кода и производительность. Посмотрите , что нового в Intellij для полного описания новых функций и улучшений.
    • XML Editor Auto-Complete теперь добавляет кавычки при завершении атрибутов. Чтобы проверить, включена ли эта опция, откройте диалог настройки или настройки , перейдите к редактору> General> Smart Keys и установите флажок рядом, чтобы добавить кавычки для значения атрибута по завершению атрибута . Выпуск: 195113
    • Редактор XML теперь поддерживает завершение кода для выражений привязки данных .

    Android Studio v1.5.1 (декабрь 2015 г.)

    Исправления и улучшения:

    • Исправлена проблема с ошибкой рендеринга в редакторе макета. Выпуск: 194612
    • Добавлена возможность варьировать description Manifest Attributes по конфигурации. Выпуск: 194705
    • Улучшено контрастность темы Android Studio Darcula в Vector Asset Studio. Выпуск: 191819
    • Добавлена поддержка кнопки справки в Vector Asset Studio.
    • Добавлена поддержка оператора % для привязки данных. Выпуск: 194045
    • Исправлено случай, когда запуск приложения для отладки привело к тому, что отладчик подключился к неправильному устройству. Выпуск: 195167
    • Исправлена исключение из нулевого указателя, которое может произойти при попытке запустить приложение в определенных сценариях.

    Android Studio v1.5.0 (ноябрь 2015 г.)

    Исправления и улучшения:

    • В Android Monitor добавлены новые возможности анализа Memory Monitor. При просмотре файла HPROF, полученного с помощью этого монитора, отображение данных стало более информативным, что позволяет быстрее выявлять проблемы, такие как утечки памяти. Чтобы использовать этот монитор, нажмите кнопку Android Monitor в нижней части главного окна. В Android Monitor перейдите на вкладку Memory . Во время работы монитора нажмите значок Dump Java Heap , затем нажмите Captures в главном окне и дважды щелкните файл, чтобы просмотреть его. Нажмите Capture Analysis справа. (Android Device Monitor не может работать одновременно с Android Monitor.)
    • Добавлена поддержка новых глубоких ссылок и ссылок на приложения. Редактор кода может автоматически создавать фильтр намерений для глубоких ссылок в файле AndroidManifest.xml . Он также может генерировать код для интеграции с API индексации приложений в активности в файле Java. Функция тестирования глубоких ссылок помогает проверить, может ли указанная глубокая ссылка запустить приложение. На вкладке «Общие» диалогового окна «Конфигурации запуска/отладки» можно указать параметры запуска глубоких ссылок. Вы также можете тестировать вызовы API индексации приложений в активности с помощью отображения logcat в Android Monitor. Инструмент Android lint теперь выводит предупреждения о некоторых проблемах, связанных с глубоких ссылками и API индексации приложений.
    • Добавлена возможность использовать короткие имена при заполнении пользовательских представлений в редакторе кода.
    • Добавлена поддержка большего количества элементов VectorDrawable в Vector Asset Studio для обеспечения обратной совместимости. Vector Asset Studio может использовать эти элементы для преобразования векторных изображений в растровые изображения PNG для использования с Android 4.4 (API уровня 20) и ниже.
    • Добавлены новые проверки lint для Android TV и Android Auto, которые позволяют мгновенно получать полезную обратную связь в Android Studio, а также предлагают несколько быстрых решений. Например, для Android TV он может сообщать о проблемах с разрешениями, неподдерживаемым оборудованием, элементом uses-feature и отсутствующим баннером и предлагать быстрое решение. Для Android Auto он может проверять правильность использования в файле дескриптора, указанном в файле AndroidManifest.xml , сообщать об отсутствии фильтра намерений для класса MediaBrowserService и выявлять некоторые проблемы с голосовыми командами.
    • Добавлены новые проверки lint для небезопасных приёмников широковещательных сообщений, использования классов SSLCertificateSocketFactory и HostnameVerifier , а также вызовов File.setReadable() и File.setWritable() . Также обнаружены недействительные запросы к ресурсам манифеста, особенно для ресурсов, которые различаются в зависимости от конфигурации.
    • Исправлен ряд проблем со стабильностью.

    Android Studio v1.4.1 (октябрь 2015 г.)

    Исправления и улучшения:

    • Исправлена проблема с кэшированием модели Градл, которая может привести к чрезмерной синхронизации градл, когда IDE был перезапущен.
    • Исправлена носительская проблема отладки тупика.
    • Исправлена проблема, блокирующая пользователей системы управления версиями Subversion 1.9.
    • Исправлена проблема с выбором устройства , где после подключения устройства, которое было несанкционированным, вы больше не могли выбирать эмулятор. Выпуск: 189658
    • Исправлена неверная отчетность по ошибке перевода для локалов, которые имеют квалификатор региона и перевод в регионе (но не в базовой локале). Выпуск: 188577
    • Исправлена проблема с тупиком в редакторе тем, связанную с его взаимодействием с редактором макета. Выпуск: 188070
    • Исправлено перезагрузка редактора тем и редактируйте конфликт, вызывая атрибуты для правильного обновления. Выпуск: 187726
    • Улучшенное исполнение редактора тем.
    • Исправлена проблема, где android:required атрибут был проигнорирован в манифесте. Выпуск: 187665

    Android Studio v1.4.0 (сентябрь 2015 г.)

    Исправления и улучшения:

    • Добавлено инструмент Vector Asset Studio для импорта векторной графики, такой как значки материалов и файлы SVG. Чтобы использовать этот инструмент, в представлении Android окна проекта щелкните правой кнопкой мыши папку RES и выберите «Новый > векторный актив» .
    • Добавлены новые функции Android Monitor, GPU и сеть. Чтобы использовать эти мониторы, нажмите на Android Monitor в нижней части главного окна. Монитор устройства Android не может работать одновременно с монитором Android.
    • Добавил ранний предварительный просмотр нового редактора тем. Чтобы использовать эту функцию, выберите «Инструменты» > «Android» > «Редактор тем» .
    • Обновил шаблоны Android для библиотеки поддержки дизайна. Шаблоны теперь включают поддержку спецификации проектирования материала, а также библиотеку поддержки appcompat для обратной совместимости.

    Android Studio v1.3.2 (август 2015 г.)

    Исправления и улучшения:

    • Добавлена поддержка Android 6.0 (API -уровне 23), включая новые значки и поддержку AVD Manager для создания устройств с новой плотностью экрана.
    • Исправлена исключение, которое происходило во время проверки обновлений. Выпуск: 183068
    • Исправлена проблема, когда неразрешенные координаты представления могут привести к сбою редактора макета. Выпуск: 178690
    • Исправлена проблема с неверными предупреждениями типа ресурсов. Выпуск: 182433
    • Фиксированная проверка ворса, которая была неправильно помечала ресурсы как частные. Выпуск: 183120

    Android Studio v1.3.1 (август 2015 г.)

    Исправления и улучшения:

    • Фиксированная поддержка для создания виртуального устройства Android износа Android (AVD) в Windows.
    • Обновил мастер проекта , чтобы использовать введенное имя проекта.
    • Добавлена поддержка, чтобы позволить Android SDK храниться в каталоге только для чтения.
    • Обновлено плагин Android для Gradle Version до 1.3.0.
    • Исправлены проблемы с запуском сеанса отладки от Android Debug Bridge (ADB) Unix Shell.
    • Исправлено сообщение о переименовании пакета Java, чтобы показать правильное имя пакета.

    Android Studio v1.3.0 (июль 2015 г.)

    Исправления и улучшения:

    • Добавлены параметры для предоставления услуг разработчиков , таких как Google Admob и Analytics , в вашем приложении из Android Studio.
    • Добавлены дополнительные аннотации , такие как @RequiresPermission , @CheckResults и @MainThread .
    • Добавлена возможность генерировать дистанции кучи Java и анализировать распределения потоков с монитора памяти . Вы также можете преобразовать Android-специфичные для Android File File Format в стандартный формат HPROF из Android Studio.
    • Интегрировал SDK Manager в Android Studio, чтобы упростить доступ пакетов и инструментов и предоставить уведомления об обновлении.

      ПРИМЕЧАНИЕ: автономный диспетчер SDK по -прежнему доступен в командной строке, но рекомендуется использовать только с автономными установками SDK.

    • Добавлена команда finger в консоли эмулятора для моделирования аутентификации отпечатков пальцев .
    • Добавлена <public> Декларация ресурсов для обозначения библиотечных ресурсов в качестве государственных и частных ресурсов.

      Примечание. Требуется плагин Android для Gradle версии 1.3 или выше.

    • Добавлена поддержка привязки данных для создания декларативных макетов, которые связывают логику вашей приложения с элементами макета.
    • Добавлена поддержка отдельного тестового модуля APK для создания тестовых APK в Android Studio.
    • Обновил Manager AVD с оптимизацией HAXM и улучшенными уведомлениями.
    • Добавлено 64-разрядная поддержка эмулятора ARM и MIPS для QEMU 2.1.
    • Упростили разрешение предупреждений с ворсом, добавив быстрое исправление, такие как автоматическая генерация посыточной реализации.
    • Добавлена поддержка в прямом эфире для быстрой вставки фрагментов кода.

    Android Studio v1.2.2 (июнь 2015 г.)

    Исправления и улучшения:

    • Фиксированные проблемы с сборкой, которые блокировали сборки от завершения.

    Android Studio v1.2.1 (май 2015 г.)

    Исправления и улучшения:

    • Исправлены незначительные проблемы с производительностью и функциями.

    Android Studio v1.2.0 (апрель 2015 г.)

    Исправления и улучшения:

    • Обновлено окно среды выполнения Android: теперь оно включает инструмент мониторинга памяти и добавлена вкладка для мониторинга производительности ЦП.
    • Добавлена вкладка «Захваты» в левом поле для отображения захваченных файлов данных о производительности памяти и ЦП, таких как отслеживание методов ЦП и снимки кучи памяти.
    • Расширенная поддержка аннотаций с дополнительными аннотациями метаданных и предполагаемой допустимостью значений NULL.
    • Улучшен редактор переводов за счет дополнительной поддержки Best Current Practice (BCP) 47, в котором используются трехбуквенные коды языков и регионов.
    • Интегрированные функции IntelliJ 14 и 14.1 для улучшенного анализа кода и производительности:
      • Улучшенная отладка для отображения встроенных значений переменных и ссылающихся объектов, а также для выполнения встроенной оценки лямбда-выражений и операторных выражений.
      • Добавлено определение стиля кода для размеров табуляции и отступа.
      • Добавлены файлы с нуля для экспериментов с кодом и создания прототипов без файлов проекта.
      • Добавлена одновременная вставка открывающих и закрывающих тегов в файлы HTML и XML.
      • Добавлен встроенный декомпилятор классов Java, позволяющий посмотреть, что находится внутри библиотеки, исходный код которой недоступен.

      Полное описание новых функций и улучшений см. в разделе «Что нового в IntelliJ» .

    • Добавлены дополнительные представления проекта для Scratches , Project Files , Problems , Production и Tests для улучшения управления проектами и доступа к ним.
    • Улучшено меню «Файл» > «Настройки» и диалоговые окна для улучшенного доступа к настройкам и управления ими.
    • Добавлена поддержка дисплеев высокой плотности для Windows и Linux.
    • Добавлена поддержка ресурсов 280 dpi в папке res/drawable-280dpi/ .

    Android Studio v1.1.0 (февраль 2015 г.)

    Различные исправления и улучшения:

    • Добавлена поддержка шаблона Android Wear Watch.
    • Модифицированный новый проект и создание модулей, чтобы включить папки res/mipmap для значков пускового показателя, специфичной для плотности. Эти папки res/mipmap заменяют папки res/drawable для значков пускового установки.
    • Обновленные значки запуска, чтобы сделать дизайн материала , и добавил значок xxxhdpi Launcher.
    • Добавлены и улучшенные проверки ворса для комбинаций региона и языков, значков запуска, имен ресурсов и других общих задач кода.
    • Добавлена поддержка лучшей текущей практики (BCP) Language Tag 47.

    Android Studio v1.0.1 (декабрь 2014 г.)

    Различные исправления и улучшения:

    • Исправлена проблема AVD Manager и Device.xml File.
    • Исправлено журнал эмулятора в системах Windows.
    • Исправлена проблема с созданием AVD с Android Studio и Android SDK, установленными на разных дисках в Windows Systems.
    • Устанавливает канал обновления по умолчанию для новых загрузок на стабильную . Если вы установили версию 1.0.0 Android Studio и хотели бы стабильные обновления версий, готовые к производству, используйте файл> Настройки> Обновления для изменения в стабильный канал обновления.

    Android Studio v1.0 (декабрь 2014 г.)

    Первоначальный выпуск Android Studio.

    Android Studio v0.8.14 (октябрь 2014 г.)

    См. Tools.android.com для полного списка изменений.

    Android Studio v0.8.6 (август 2014 г.)

    См. Tools.android.com для полного списка изменений.

    Android Studio v0.8.0 (июнь 2014 г.)

    Добавлена поддержка проектов Android Wear.

    См. Tools.android.com для полного списка изменений.

    Android Studio v0.5.2 (май 2014 г.)

    Android Studio v0.4.6 (март 2014 г.)

    Android Studio v0.4.2 (январь 2014 г.)

    Android Studio v0.3.2 (октябрь 2013 г.)

    Android Studio v0.2.x (июль 2013 г.)

    • Объединяется в последних изменениях Intellij Codebase. Включает в себя исправления для проблем, сообщаемых пользователями студии, как Tweaks to Linux Font Size и рендеринг шрифтов.
    • Android Gradle Plug-In обновлен до 0.5.0.

      Внимание: эта новая версия не совместима назад. При открытии проекта, который использует более старую версию плагина, Studio покажет ошибку, в которой указывается gradle <project_name> обновление проекта.

      Обновленный плагин Gradle включает в себя следующие изменения:

      • Исправлена модель IDE, чтобы сдержать выходной файл, даже если он настроен через DSL. Также исправил DSL, чтобы получить/установить выходной файл на объекте Variant, чтобы не было необходимости использовать variant.packageApplication or variant.zipAlign
      • Фиксированное разрешение зависимостей, чтобы мы разрешили комбинацию (конфигурация по умолчанию, типы сборки, аромат (ы)) вместе, а не отдельно.
      • Фиксированная зависимость для тестов библиотечного проекта, чтобы правильно включать все зависимости самой библиотеки.
      • Фиксированный случай, когда две зависимости имеют одинаковое имя листа.
      • Исправлена проблема, в которой файл правил прогика не может быть применен на ароматах.

      Все примечания к выпуску плагина Gradle доступны здесь: http://tools.android.com/tech-docs/new-build-system .

    • Ошибки Gradle от AAPT больше не указывают на объединенные выходные файлы в сборке/ папке, они указывают на реальные местоположения источника.
    • Параллельные сборки. Теперь можно использовать параллельные сборки Градли. Имейте в виду, что параллельные сборки находятся в «инкубации» (см. Документацию Градли .) Эта функция выключена по умолчанию. Чтобы включить это, перейдите в Preventions > Компилятор и отметьте независимые модули компиляции .
    • Дальнейшая работа над новым хранилищем ресурсов, используемым для рендеринга макета, складывания ресурсов в редакторе и многого другого:
      • Основная поддержка библиотечных зависимостей .AAR (например, использование библиотеки без локальной копии источников). Все еще не работаю для проверки и навигации ресурса в редакторах источников.
      • Обнаружение цикла в ссылках на ресурсы.
      • Быстрая документация (F1), которая может отображать все переводы строки в соответствии с смотриной, теперь также покажет все наложения ресурсов из различных вкусов Gradle и типов сборки, а также библиотек. Они перечислены в порядке наложения обратного ресурса, при этом ударил версии строки, которая замаскирована.
      • Исправление для обработки обновления объединенных ресурсов при изменении набора зависимостей модуля.
      • XML -рендеринг исправляет для правильного обработки деклараций сущности символов, а XML и Unicode сбегают.
    • Сохраните поддержку скриншота для предварительного просмотра макета и редактора макетов Windows.
    • Исправления ошибок шаблона.
    • Lint Bug Fixes.
    • Различные исправления для отчетов о сбоях. Спасибо и продолжайте подавать отчеты о сбоях!

    Android Studio v0.1.x (май 2013 г.)

    • Различные исправления ошибок, включая исправление для общей проблемы установки Windows.

    Старые выпуски плагина Android Gradle

    3.6.0 (февраль 2020 г.)

    Эта версия плагина Android требует следующего:

    3.6.4 (июль 2020 г.)

    Это незначительное обновление поддерживает совместимость с новыми настройками и функциями по умолчанию для видимости пакета в Android 11 .

    См. Примечания к выпуску 4.0.1 для деталей.

    Новые функции

    Эта версия плагина Android Gradle включает в себя следующие новые функции.

    Посмотреть привязку

    Просмотр привязки обеспечивает безопасность времени компиляции при ссылке на представления в вашем коде. Теперь вы можете заменить findViewById() на автоподобный ссылку на класс привязки. Чтобы начать использование привязки представления, включите следующее в файл build.gradle каждого модуля:

          android {
              viewBinding.enabled = true
          }
          
          android {
              viewBinding.enabled = true
          }
          

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

    Поддержка плагина Maven Publish

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

    Чтобы узнать больше, перейдите на страницу о том, как использовать плагин Maven Publish .

    Новый инструмент упаковки по умолчанию

    При создании версии вашего приложения отладчика используется новый инструмент упаковки под названием Zipflinger , для создания вашего APK. Этот новый инструмент должен обеспечить улучшение скорости сборки. Если новый инструмент упаковки не работает, как вы ожидаете, сообщите об ошибке . Вы можете вернуться к использованию старого упаковочного инструмента, включив следующее в свой файл gradle.properties :

            android.useNewApkCreator=false
          
    Нативная атрибуция сборки

    Теперь вы можете определить продолжительность времени, необходимого для создания и связывания каждого файла C/C ++ в вашем проекте. Gradle может вывести хромированную трассу, которая содержит временные метки для этих событий компилятора, чтобы вы могли лучше понять время, необходимое для создания своего проекта. Чтобы вывести этот файл атрибуции сборки, сделайте следующее:

    1. Добавьте флаг -Pandroid.enableProfileJson=true при запуске сборки Gradle. Например:

      gradlew assembleDebug -Pandroid.enableProfileJson=true

    2. Откройте Chrome Browser и Type chrome://tracing в панели поиска.

    3. Нажмите кнопку «Загрузить» и перейдите к <var>project-root</var>/build/android-profile чтобы найти файл. Файл называется profile-<var>timestamp</var>.json.gz .

    Вы можете увидеть нативные данные атрибуции сборки в верхней части зрителя:

    Следы атрибуции нативного сборки в Chrome

    Изменения поведения

    При использовании этой версии плагина вы можете встретить следующие изменения в поведении.

    Нативные библиотеки упакованы несжатыми по умолчанию

    Когда вы создаете свое приложение, плагин теперь устанавливает extractNativeLibs по "false" . То есть ваши родные библиотеки выровнены и упакованы в упаковку. Хотя это приводит к большему размеру загрузки, ваши пользователи получают выгоду от следующего:

    • Маленький приложение установить размер, потому что платформа может получить доступ к нативным библиотекам непосредственно из установленного APK, не создавая копию библиотек.
    • Меньший размер загрузки, потому что сжатие Play Store, как правило, лучше, когда вы включаете несжатые нативные библиотеки в свой пакет приложений Apk или Android.

    Если вы хотите, чтобы плагин Android Gradle вместо этого упаковал нативные библиотеки, включите следующее в Manifest вашего приложения:

            <application
              android:extractNativeLibs="true"
              ... >
            </application>
            
          

    ПРИМЕЧАНИЕ. Атрибут Manifest extractNativeLibs был заменен вариантом DSL useLegacyPackaging . Для получения дополнительной информации см. Примечание «Выпуск» Используйте DSL для пакетных сжатых нативных библиотек .

    Версия NDK по умолчанию

    Если вы загружаете несколько версий NDK, плагин Android Gradle теперь выбирает версию по умолчанию для использования при составлении файлов исходного кода. Ранее плагин выбрал последнюю загруженную версию NDK. Используйте свойство android.ndkVersion в файле модуля build.gradle , чтобы переопределить выбранную плагин.

    Упрощенное поколение класса R

    Плагин Android Gradle упрощает Compile ClassPath, генерируя только один класс R для каждого библиотечного модуля в вашем проекте и делясь этими классами R с другими зависимостями модулей. Эта оптимизация должна привести к более быстрым сборкам, но требует, чтобы вы помнят следующее:

    • Поскольку компилятор делится классами R с зависимостями модуля Upstream, важно, чтобы каждый модуль в вашем проекте использовал уникальное имя пакета.
    • Видимость класса R библиотеки для других зависимостей проекта определяется конфигурацией, используемой для включения библиотеки в качестве зависимости. Например, если библиотека A включает в себя библиотеку B как зависимость API, библиотека A и другие библиотеки, которые зависят от библиотеки A, имеют доступ к классу R Библиотеки B. Тем не менее, другие библиотеки могут не иметь доступа к классу библиотеки B. Если библиотека A использует конфигурацию зависимости implementation . Чтобы узнать больше, прочитайте о конфигурациях зависимости .
    Удалить ресурсы, отсутствующие в конфигурации по умолчанию

    Для библиотечных модулей, если вы включите ресурс для языка, который вы не включаете в набор ресурсов по умолчанию-например, если вы включите hello_world в качестве строкового ресурса в /values-es/strings.xml , но вы не определяете этот ресурс в /values/strings.xml Android Gradle больше не включает этот ресурс при комполировании вашего проекта. Это изменение поведения должно привести к меньшему количеству Resource Not Found исключений во время выполнения и улучшенной скорости сборки.

    D8 теперь уважает политику удержания класса для аннотаций

    При составлении вашего приложения D8 теперь уважает, когда аннотации применяют политику удержания класса, и эти аннотации больше не доступны во время выполнения. Такое поведение также существует при установлении целевого SDK приложения на уровень 23 API, который ранее позволял доступа к этим аннотациям во время выполнения при составлении вашего приложения, используя более старые версии плагина Android Gradle и D8.

    Другое поведение меняется
    • aaptOptions.noCompress больше не чувствителен к корпусу на всех платформах (как для APK, так и для пучков) и уважает пути, которые используют символы верхнего регистра.
    • Привлечение данных теперь инкрементно по умолчанию. Чтобы узнать больше, см . Выпуск № 110061530 .

    • Все модульные тесты, в том числе тесты на робоэлектрические единицы, теперь полностью полностью заклеены. Чтобы узнать больше, см. Выпуск № 115873047 .

    Исправления ошибок

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

    • Тесты роболктрических единиц теперь поддерживаются в библиотечных модулях, которые используют привязку данных. Чтобы узнать больше, см. Выпуск № 126775542 .
    • Теперь вы можете запустить задачи connectedAndroidTest к нескольким модулям, в то время как режим параллельного выполнения Gradle включено.

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

    В этом разделе описываются известные проблемы, которые существуют в плагине Android Gradle 3.6.0.

    Медленная производительность задачи Android Lint

    Android Lint может занять гораздо больше времени для завершения некоторых проектов из -за регрессии в инфраструктуре анализа, что приводит к более медленному вычислению предполагаемых типов для Lambdas в определенных кодовых конструкциях.

    Проблема сообщается как ошибка в идее и будет исправлена в Android Gradle Plugin 4.0.

    Отсутствующий манифестный класс {:#agp-missing-manifest}

    Если ваше приложение определяет пользовательские разрешения в своем манифесте, плагин Android Gradle обычно генерирует класс Manifest.java , который включает ваши пользовательские разрешения в качестве константы строки. Плагины пакеты этого класса с вашим приложением, так что вы можете легче ссылаться на эти разрешения во время выполнения.

    Создание манифестного класса сломана в плагине Android Gradle 3.6.0. Если вы создаете свое приложение с помощью этой версии плагина, и оно ссылается на класс Manifest, вы можете увидеть исключение ClassNotFoundException . Чтобы решить эту проблему, сделайте одно из следующих:

    • Ссылка на свои пользовательские разрешения по их полностью квалифицированному имени. Например, "com.example.myapp.permission.DEADLY_ACTIVITY" .

    • Определите свои собственные константы, как показано ниже:

                  public final class CustomPermissions {
                    public static final class permission {
                      public static final String DEADLY_ACTIVITY="com.example.myapp.permission.DEADLY_ACTIVITY";
                    }
                  }
                  
                

    3.5.0 (август 2019 г.)

    Android Gradle Plugin 3.5.0, наряду с Android Studio 3.5 , является основным релизом и результатом Project Marble, который сосредоточен на улучшении трех основных областей инструментов разработчика Android: здоровье системы, польский характер и исправление ошибок. Примечательно, что улучшение скорости сборки проекта было основным направлением для этого обновления.

    Для получения информации об этих и других обновлениях Project Marble прочитайте сообщение в блоге Android Developers или разделы ниже.

    Эта версия плагина Android требует следующего:

    3.5.4 (июль 2020 г.)

    Это незначительное обновление поддерживает совместимость с новыми настройками и функциями по умолчанию для видимости пакета в Android 11 .

    См. Примечания к выпуску 4.0.1 для деталей.

    3.5.3 (декабрь 2019 г.)

    Это незначительное обновление поддерживает Android Studio 3.5.3 и включает в себя различные исправления ошибок и улучшения производительности.

    3.5.2 (ноябрь 2019 г.)

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

    3.5.1 (октябрь 2019 г.)

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

    Инкрементная обработка аннотаций

    Процессор аннотации привязки данных поддерживает инкрементную обработку аннотаций, если вы установите android.databinding.incremental=true в вашем файле gradle.properties . Эта оптимизация приводит к улучшению инкрементной производительности сборки. Для полного списка оптимизированных процессоров аннотации см. В таблице процессоров инкрементных аннотаций .

    Кроме того, KAPT 1.3.30 и выше также поддерживают инкрементные процессоры аннотации, которые вы можете включить, включив kapt.incremental.apt=true в вашем файле gradle.properties .

    Кэшируемые модульные тесты

    Когда вы включаете модульные тесты для использования ресурсов, активов и манифестов Android, настройки, включив includeAndroidResources в true , плагин Android Gradle генерирует файл тестового конфигурации, содержащий абсолютные пути, который разрушает перемежаемость кеша. Вы можете указать плагину вместо этого генерировать тестовую конфигурацию, используя относительные пути, что позволяет полностью обстоятельствовать задачу AndroidUnitTest , включив следующее в свой файл gradle.properties :

          android.testConfig.useRelativePath = true
        

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

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

                WARNING: API 'variant.getPackageLibrary()' is obsolete and has been replaced
                        with 'variant.getPackageLibraryProvider()'.
                
              

      Чтобы решить эту проблему , обновите плагин до версии 1.3.40 или выше.

    3.4.0 (апрель 2019 г.)

    Эта версия плагина Android требует следующего:

    3.4.3 (июль 2020 г.)

    Это незначительное обновление поддерживает совместимость с новыми настройками и функциями по умолчанию для видимости пакета в Android 11 .

    См. Примечания к выпуску 4.0.1 для деталей.

    3.4.2 (июль 2019 г.)

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

    3.4.1 (май 2019 г.)

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

    Новые функции

    • Новые конфигурации зависимостей с помощью Lint: поведение lintChecks изменилось, и была введена новая конфигурация зависимостей, lintPublish , была введена, чтобы дать вам больше контроля, по которой чеки с воротами упакованы в ваши библиотеки Android.

      • lintChecks : This is an existing configuration that you should use for lint checks you want to only run when building your project locally. If you were previously using the lintChecks dependency configuration to include lint checks in the published AAR, you need to migrate those dependencies to instead use the new lintPublish configuration described below.
      • lintPublish : Use this new configuration in library projects for lint checks you want to include in the published AAR, as shown below. This means that projects that consume your library also apply those lint checks.

      The following code sample uses both dependency configurations in a local Android library project.

      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"))
          }
              
      • In general, packaging and signing tasks should see an overall build speed improvement. If you notice a performance regression related to these tasks, please report a bug .

    Изменения поведения

    • Android Instant Apps Feature plugin deprecation warning: If you're still using the com.android.feature plugin to build your instant app, Android Gradle plugin 3.4.0 will give throw you a deprecation warning. To make sure you can still build you instant app on future versions of the plugin, migrate your instant app to using the dynamic feature plugin , which also allows you to publish both your installed and instant app experiences from a single Android App Bundle.

    • R8 enabled by default: R8 integrates desugaring, shrinking, obfuscating, optimizing, and dexing all in one step—resulting in noticeable build performance improvements . R8 was introduced in Android Gradle plugin 3.3.0 and is now enabled by default for both app and Android library projects using plugin 3.4.0 and higher.

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

    Before R8, ProGuard was a different compile step from dexing and
              desugaring.

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

    With R8, desugaring, shrinking, obfuscating, optimizing, and
      dexing are all performed in a single compile step.

    Keep in mind, R8 is designed to work with your existing ProGuard rules, so you'll likely not need to take any actions to benefit from R8. However, because it's a different technology to ProGuard that's designed specifically for Android projects, shrinking and optimization may result in removing code that ProGuard may have not. So, in this unlikely situation, you might need to add additional rules to keep that code in your build output.

    Если у вас возникли проблемы с 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 is deprecated: You now get a build error if you try to use ndkBuild to compile your native libraries. You should instead use either CMake or ndk-build to Add C and C++ code to your project .

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

    • The correct usage of unique package names are currently not enforced but will become more strict on later versions of the plugin. On Android Gradle plugin version 3.4.0, you can opt-in to check whether your project declares acceptable package names by adding the line below to your gradle.properties file.

                android.uniquePackageNames = true
                
              

      To learn more about setting a package name through the Android Gradle plugin, see Set the application ID .

    3.3.0 (January 2019)

    This version of the Android plugin requires the following:

    3.3.3 (July 2020)

    This minor update supports compatibility with new default settings and features for package visibility in Android 11 .

    See the 4.0.1 release notes for details.

    3.3.2 (March 2019)

    This minor update supports Android Studio 3.3.2 and includes various bug fixes and performance improvements. To see a list of noteable bug fixes, read the related post on the Release Updates blog .

    3.3.1 (February 2019)

    This minor update supports Android Studio 3.3.1 and includes various bug fixes and performance improvements.

    Новые функции

    • Improved classpath synchronization: When resolving dependencies on your runtime and compile time classpaths, the Android Gradle plugin attempts to fix certain downstream version conflicts for dependencies that appear across multiple classpaths.

      For example, if the runtime classpath includes Library A version 2.0 and the compile classpath includes Library A version 1.0, the plugin automatically updates the dependency on the compile classpath to Library A version 2.0 to avoid errors.

      However, if the runtime classpath includes Library A version 1.0 and the compile includes Library A version 2.0, the plugin does not downgrade the dependency on the compile classpath to Library A version 1.0, and you will get an error. To learn more, see Fix conflicts between classpaths .

    • Improved incremental Java compilation when using annotation processors: This update decreases build time by improving support for incremental Java compilation when using annotation processors.

      Note: This feature is compatible with Gradle 4.10.1 and higher, except Gradle 5.1 due to Gradle issue 8194 .

      • For projects using Kapt (most Kotlin-only projects and Kotlin-Java hybrid projects): Incremental Java compilation is enabled, even when you use data binding or the retro-lambda plugin. Annotation processing by the Kapt task is not yet incremental.

      • For projects not using Kapt (Java-only projects): If the annotation processors you use all support incremental annotation processing , incremental Java compilation is enabled by default. To monitor incremental annotation processor adoption, watch Gradle issue 5277 .

        If, however, one or more annotation processors do not support incremental builds, incremental Java compilation is not enabled. Instead, you can include the following flag in your gradle.properties file:

        android.enableSeparateAnnotationProcessing=true
                    

        When you include this flag, the Android Gradle plugin executes the annotation processors in a separate task and allows the Java compilation task to run incrementally.

    • Better debug info when using obsolete API: When the plugin detects that you're using an API that's no longer supported, it can now provide more-detailed information to help you determine where that API is being used. To see the additional info, you need to include the following in your project's gradle.properties file:

                android.debug.obsoleteApi=true
              

      You can also enable the flag by passing -Pandroid.debug.obsoleteApi=true from the command line.

    • You can run instrumentation tests on feature modules from the command line.

    Изменения поведения

    • Lazy task configuration: The plugin now uses Gradle's new task creation API to avoid initializing and configuring tasks that are not required to complete the current build (or tasks not on the execution task graph). For example, if you have multiple build variants, such as “release” and “debug” build variants, and you're building the “debug” version of your app, the plugin avoids initializing and configuring tasks for the “release” version of your app.

      Calling certain older methods in the Variants API, such as variant.getJavaCompile() , might still force task configuration. To make sure that your build is optimized for lazy task configuration, invoke new methods that instead return a TaskProvider object, such as variant.getJavaCompileProvider() .

      If you execute custom build tasks, learn how to adapt to Gradle's new task-creation API .

    • For a given build type, when setting useProguard false , the plugin now uses R8 instead of ProGuard to shrink and obfuscate your app's code and resources. To learn more about R8, read this blog post from the Android Developer's Blog.

    • Faster R class generation for library projects: Previously, the Android Gradle plugin would generate an R.java file for each of your project's dependencies and then compile those R classes alongside your app's other classes. The plugin now generates a JAR containing your app's compiled R class directly, without first building intermediate R.java classes. This optimization may significantly improve build performance for projects that include many library subprojects and dependencies, and improve the indexing speed in Android Studio.

    • When building an Android App Bundle , APKs generated from that app bundle that target Android 6.0 (API level 23) or higher now include uncompressed versions of your native libraries by default. This optimization avoids the need for the device to make a copy of the library and thus reduces the on-disk size of your app. If you'd rather disable this optimization, add the following to your gradle.properties file:

      android.bundle.enableUncompressedNativeLibs = false
              
    • The plugin enforces minimum versions of some third-party plugins.

    • Single-variant project sync : Syncing your project with your build configuration is an important step in letting Android Studio understand how your project is structured. However, this process can be time-consuming for large projects. If your project uses multiple build variants, you can now optimize project syncs by limiting them to only the variant you have currently selected.

      You need to use Android Studio 3.3 or higher with Android Gradle Plugin 3.3.0 or higher to enable this optimization. When you meet these requirements, the IDE prompts you to enable this optimization when you sync your project. The optimization is also enabled by default on new projects.

      To enable this optimization manually, click File > Settings > Experimental > Gradle ( Android Studio > Preferences > Experimental > Gradle on a Mac) and select the Only sync the active variant checkbox.

      Note : This optimization fully supports projects that include Java and C++ languages, and has some support for Kotlin. When enabling the optimization for projects with Kotlin content, Gradle sync falls back to using full variants internally.

    • Automatic downloading of missing SDK packages : This functionality has been expanded to support NDK. To learn more, read Auto-download missing packages with Gradle .

    Исправления ошибок

    • Android Gradle plugin 3.3.0 fixes the following issues:

      • The build process calling android.support.v8.renderscript.RenderScript instead of the AndroidX version, despite Jetifier being enabled
      • Clashes due to androidx-rs.jar including statically bundled annotation.AnyRes
      • When using RenderScript, you no longer have to manually set the Build Tools version in your build.gradle files

    3.2.0 (September 2018)

    This version of the Android plugin requires the following:

    3.2.1 (октябрь 2018 г.)

    With this update, you no longer need to specify a version for the SDK Build Tools. The Android Gradle plugin now uses version 28.0.3 by default.

    Новые функции

    • Support for building Android App Bundles: The app bundle is a new upload format that includes all your app's compiled code and resources while deferring APK generation and signing to the Google Play Store. You no longer have to build, sign, and manage multiple APKs, and users get smaller downloads that are optimized for their device. To learn more, read About Android App Bundles .

    • Support for improved incremental build speeds when using annotation processors: The AnnotationProcessorOptions DSL now extends CommandLineArgumentProvider , which enables either you or the annotation processor author to annotate arguments for the processor using incremental build property type annotations . Using these annotations improves the correctness and performance of incremental and cached clean builds. To learn more, read Pass arguments to annotation processors .

    • Migration tool for AndroidX: When using Android Gradle plugin 3.2.0 with Android 3.2 and higher, you can migrate your project's local and Maven dependencies to use the new AndroidX libraries by selecting Refactor > Migrate to AndroidX from the menu bar. Using this migration tool also sets the following flags to true in your gradle.properties file:

      • android.useAndroidX : When set to true , the Android plugin uses the appropriate AndroidX library instead of a Support Library. When this flag is not specified, the plugin sets it to false by default.

      • android.enableJetifier : When set to true , the Android plugin automatically migrates existing third-party libraries to use AndroidX by rewriting their binaries. When this flag is not specified, the plugin sets it to false by default. You can set this flag to true only while android.useAndroidX is also set to true , otherwise you get a build error.

        To learn more, read the AndroidX overview .

    • New code shrinker, R8: R8 is a new tool for code shrinking and obfuscation that replaces ProGuard. You can start using the preview version of R8 by including the following in your project's gradle.properties file:

              android.enableR8 = true
              
              android.enableR8 = true
              

    Изменения поведения

    • Desugaring with D8 is now enabled by default.

    • AAPT2 is now on Google's Maven repo. To use AAPT2, make sure that you have the google() dependency in your build.gradle file, as shown below:

                buildscript {
                      repositories {
                          google() // here
                          jcenter()
                      }
                      dependencies {
                          classpath 'com.android.tools.build:gradle:3.2.0'
                      }
                  }
                  allprojects {
                      repositories {
                          google() // and here
                          jcenter()
                  }
                
                buildscript {
                      repositories {
                          google() // here
                          jcenter()
                      }
                      dependencies {
                          classpath 'com.android.tools.build:gradle:3.2.0'
                      }
                  }
                  allprojects {
                      repositories {
                          google() // and here
                          jcenter()
                  }
                
    • Native multidex is now enabled by default. Previous versions of Android Studio enabled native multidex when deploying the debug version of an app to a device running Android API level 21 or higher. Now, whether you're deploying to a device or building an APK for release, the Android Gradle plugin enables native multidex for all modules that set minSdkVersion=21 or higher.

    • The plugin now enforces a minimum version of the protobuf plugin (0.8.6), Kotlin plugin (1.2.50), and Crashlytics plugin (1.25.4).

    • The feature module plugin, com.android.feature , now enforces the use of only letters, digits, and underscores when specifying a module name. For example, if your feature module name includes dashes, you get a build error. This behavior matches that of the dynamic feature plugin.

    Исправления ошибок

    3.1.0 (March 2018)

    This version of the Android plugin requires the following:

    • Gradle 4.4 or higher.

      To learn more, read the section about updating Gradle .

    • Build Tools 27.0.3 or higher.

      Keep in mind, you no longer need to specify a version for the build tools using the android.buildToolsVersion property—the plugin uses the minimum required version by default.

    New DEX compiler, D8

    By default, Android Studio now uses a new DEX compiler called D8. DEX compilation is the process of transforming .class bytecode into .dex bytecode for the Android Runtime (or Dalvik, for older versions of Android). Compared to the previous compiler, called DX, D8 compiles faster and outputs smaller DEX files, all while having the same or better app runtime performance.

    D8 shouldn't change your day-to-day app development workflow. However, if you experience any issues related to the new compiler, please report a bug . You can temporarily disable D8 and use DX by including the following in your project's gradle.properties file:

          android.enableD8=false
        

    For projects that use Java 8 language features , incremental desugaring is enabled by default. You can disable it by specifying the following in your project's gradle.properties file:

          android.enableIncrementalDesugaring=false.
        

    Preview users: If you're already using a preview version of D8, note that it now compiles against libraries included in the SDK build tools —not the JDK. So, if you are accessing APIs that exist in the JDK but not in the SDK build tools libraries, you get a compile error.

    Изменения поведения

    • When building multiple APKs that each target a different ABI, the no longer generates APKs for the following ABIs by default: mips , mips64 , and armeabi .

      Если вы хотите собрать APK, ориентированные на эти ABI, необходимо использовать NDK r16b или ниже и указать ABI в файле build.gradle , как показано ниже:

                splits {
                    abi {
                        include 'armeabi', 'mips', 'mips64'
                        ...
                    }
                }
              
                splits {
                    abi {
                        include("armeabi", "mips", "mips64")
                        ...
                    }
                }
              
    • The Android plugin's build cache now evicts cache entries that are older than 30 days.

    • Passing "auto" to resConfig no longer automatically picks string resources to package into your APK. If you continue to use "auto" , the plugin packages all string resources your app and its dependencies provide. So, you should instead specify each locale that you want the plugin to package into your APK.

    • Because local modules can't depend on your app's test APK, adding dependencies to your instrumented tests using the androidTestApi configuration, instead of androidTestImplementation , causes Gradle to issue the following warning:

              WARNING: Configuration 'androidTestApi' is obsolete
              and has been replaced with 'androidTestImplementation'
              
              WARNING: Configuration 'androidTestApi' is obsolete
              and has been replaced with 'androidTestImplementation'
              

    Исправления

    • Fixes an issue where Android Studio doesn't properly recognize dependencies in composite builds.
    • Fixes an issue where you get a project sync error when loading the Android plugin multiple times in a single build–for example, when multiple subprojects each include the Android plugin in their buildscript classpath.

    3.0.0 (October 2017)

    Android Gradle plugin 3.0.0 includes a variety of changes that aim to address performance issues of large projects.

    For example, on a sample skeleton project with ~130 modules and a large number of external dependencies (but no code or resources), you can experience performance improvements similar to the following:

    Android plugin version + Gradle version Android plugin 2.2.0 + Gradle 2.14.1 Android plugin 2.3.0 + Gradle 3.3 Android plugin 3.0.0 + Gradle 4.1
    Configuration (eg running ./gradlew --help ) ~2 мин. ~9 s ~2.5 s
    1-line Java change (implementation change) ~2 mins 15 s ~29 s ~6.4 s

    Some of these changes break existing builds. So, you should consider the\ effort of migrating your project before using the new plugin.

    If you don't experience the performance improvements described above, please file a bug and include a trace of your build using the Gradle Profiler .

    This version of the Android plugin requires the following:

    • Gradle 4.1 or higher. To learn more, read the section about updating Gradle .
    • Build Tools 26.0.2 or higher. With this update, you no longer need to specify a version for the build tools—the plugin uses the minimum required version by default. So, you can now remove the android.buildToolsVersion property.

    3.0.1 (ноябрь 2017 г.)

    This is a minor update to support Android Studio 3.0.1, and includes general bug fixes and performance improvements.

    Оптимизации

    • Better parallelism for multi-module projects through a fine grained task graph.
    • When making changes to dependency, Gradle performs faster builds by not re-compiling modules that do not have access to that dependency's API. You should restrict which dependencies leak their APIs to other modules by using Gradle's new dependency configurations : implementation , api , compileOnly , and runtimeOnly .
    • Faster incremental build speed due to per-class dexing. Each class is now compiled into separate DEX files, and only the classes that are modified are re-dexed. You should also expect improved build speeds for apps that set minSdkVersion to 20 or lower, and use legacy multi-dex .
    • Improved build speeds by optimizing certain tasks to use chached outputs. To benefit from this optimization, you need to first enable the Gradle build cache .
    • Improved incremental resource processing using AAPT2, which is now enabled by default. If you are experiencing issues while using AAPT2, please report a bug . You can also disable AAPT2 by setting android.enableAapt2=false in your gradle.properties file and restarting the Gradle daemon by running ./gradlew --stop from the command line.

    Новые функции

    • Variant-aware dependency management . When building a certain variant of a module, the plugin now automatically matches variants of local library module dependencies to the variant of the module you are building.
    • Includes a new Feature module plugin to support Android Instant Apps and the Android Instant Apps SDK (which you can download using the SDK manager ). To learn more about creating Feature modules with the new plugin, read Structure of an instant app with multiple features .
    • Built-in support for using certain Java 8 language features and Java 8 libraries. Jack is now deprecated and no longer required , and you should first disable Jack to use the improved Java 8 support built into the default toolchain. For more information, read Use Java 8 language features .
    • Added support for running tests with Android Test Orchestrator , which allows you to run each of your app's tests within its own invocation of Instrumentation. Because each test runs in its own Instrumentation instance, any shared state between tests doesn't accumulate on your device's CPU or memory. And, even if one test crashes, it takes down only its own instance of Instrumentation, so your other tests still run.

      • Added testOptions.execution to determine whether to use on-device test orchestration. If you want to use Android Test Orchestrator , you need to specify ANDROID_TEST_ORCHESTRATOR , as shown below. By default, this property is set to HOST , which disables on-device orchestration and is the standard method of running tests.

      Круто

              android {
                testOptions {
                  execution 'ANDROID_TEST_ORCHESTRATOR'
                }
              }
              

      Котлин

              android {
                testOptions {
                  execution = "ANDROID_TEST_ORCHESTRATOR"
                }
              }
              
    • New androidTestUtil dependency configuration allows you to install another test helper APK before running your instrumentation tests, such as Android Test Orchestrator:

      Круто

              dependencies {
                androidTestUtil 'com.android.support.test:orchestrator:1.0.0'
                ...
              }
              

      Котлин

              dependencies {
                androidTestUtil("com.android.support.test:orchestrator:1.0.0")
                ...
              }
              
    • Added testOptions.unitTests.includeAndroidResources to support unit tests that require Android resources, such as Roboelectric . When you set this property to true , the plugin performs resource, asset, and manifest merging before running your unit tests. Your tests can then inspect com/android/tools/test_config.properties on the classpath for the following keys:

      • android_merged_assets : the absolute path to the merged assets directory.

        Note: For library modules, the merged assets do not contain the assets of dependencies (see issue #65550419 ).

      • android_merged_manifest : the absolute path to the merged manifest file.

      • android_merged_resources : the absolute path to the merged resources directory, which contains all the resources from the module and all its dependencies.

      • android_custom_package : the package name of the final R class. If you dynamically modify the application ID, this package name may not match the package attribute in the app's manifest.

    • Support for fonts as resources (which is a new feature introduced in Android 8.0 (API level 26) ).
    • Support for language-specific APKs with Android Instant Apps SDK 1.1 and higher.
    • You can now change the output directory for your external native build project, as shown below:

      Круто

              android {
                  ...
                  externalNativeBuild {
                      // For ndk-build, instead use the ndkBuild block.
                      cmake {
                          ...
                          // Specifies a relative path for outputs from external native
                          // builds. You can specify any path that's not a subdirectory
                          // of your project's temporary build/ directory.
                          buildStagingDirectory "./outputs/cmake"
                      }
                  }
              }
              

      Котлин

              android {
                  ...
                  externalNativeBuild {
                      // For ndk-build, instead use the ndkBuild block.
                      cmake {
                          ...
                          // Specifies a relative path for outputs from external native
                          // builds. You can specify any path that's not a subdirectory
                          // of your project's temporary build/ directory.
                          buildStagingDirectory = "./outputs/cmake"
                      }
                  }
              }
              
    • You can now use CMake 3.7 or higher when building native projects from Android Studio.
    • New lintChecks dependency configuration allows you to build a JAR that defines custom lint rules, and package it into your AAR and APK projects.

      Your custom lint rules must belong to a separate project that outputs a single JAR and includes only compileOnly dependencies. Other app and library modules can then depend on your lint project using the lintChecks configuration:

      Круто

              dependencies {
                  // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file
                  // and package it with your module. If the module is an Android library,
                  // other projects that depend on it automatically use the lint checks.
                  // If the module is an app, lint includes these rules when analyzing the app.
                  lintChecks project(':lint-checks')
              }
              

      Котлин

              dependencies {
                  // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file
                  // and package it with your module. If the module is an Android library,
                  // other projects that depend on it automatically use the lint checks.
                  // If the module is an app, lint includes these rules when analyzing the app.
                  lintChecks(project(":lint-checks"))
              }
              

    Изменения поведения

    • Android plugin 3.0.0 removes certain APIs, and your build will break if you use them. For example, you can no longer use the Variants API to access outputFile() objects or use processManifest.manifestOutputFile() to get the manifest file for each variant. To learn more, read API changes .
    • You no longer need to specify a version for the build tools (so, you can now remove the android.buildToolsVersion property). By default, the plugin automatically uses the minimum required build tools version for the version of Android plugin you're using.
    • You now enable/disable PNG crunching in the buildTypes block, as shown below. PNG crunching is enabled by default for all builds except debug builds because it increases build times for projects that include many PNG files. So, to improve build times for other build types, you should either disable PNG crunching or convert your images to WebP .

      Круто

            android {
              buildTypes {
                release {
                  // Disables PNG crunching for the release build type.
                  crunchPngs false
                }
              }
            }
            

      Котлин

            android {
              buildTypes {
                release {
                  // Disables PNG crunching for the release build type.
                  isCrunchPngs = false
                }
              }
            }
            
    • The Android plugin now automatically builds executable targets that you configure in your external CMake projects.
    • You must now add annotation processors to the processor classpath using the annotationProcessor dependency configuration.
    • Using the deprecated ndkCompile is now more restricted. You should instead migrate to using either CMake or ndk-build to compile native code that you want to package into your APK. To learn more, read Migrate from ndkcompile .

    3.0.0 (October 2017)

    Android Gradle plugin 3.0.0 includes a variety of changes that aim to address performance issues of large projects.

    For example, on a sample skeleton project with ~130 modules and a large number of external dependencies (but no code or resources), you can experience performance improvements similar to the following:

    Android plugin version + Gradle version Android plugin 2.2.0 + Gradle 2.14.1 Android plugin 2.3.0 + Gradle 3.3 Android plugin 3.0.0 + Gradle 4.1
    Configuration (eg running ./gradlew --help ) ~2 мин. ~9 s ~2.5 s
    1-line Java change (implementation change) ~2 mins 15 s ~29 s ~6.4 s

    Some of these changes break existing builds. So, you should consider the\ effort of migrating your project before using the new plugin.

    If you don't experience the performance improvements described above, please file a bug and include a trace of your build using the Gradle Profiler .

    This version of the Android plugin requires the following:

    • Gradle 4.1 or higher. To learn more, read the section about updating Gradle .
    • Build Tools 26.0.2 or higher. With this update, you no longer need to specify a version for the build tools—the plugin uses the minimum required version by default. So, you can now remove the android.buildToolsVersion property.

    3.0.1 (ноябрь 2017 г.)

    This is a minor update to support Android Studio 3.0.1, and includes general bug fixes and performance improvements.

    Оптимизации

    • Better parallelism for multi-module projects through a fine grained task graph.
    • When making changes to dependency, Gradle performs faster builds by not re-compiling modules that do not have access to that dependency's API. You should restrict which dependencies leak their APIs to other modules by using Gradle's new dependency configurations : implementation , api , compileOnly , and runtimeOnly .
    • Faster incremental build speed due to per-class dexing. Each class is now compiled into separate DEX files, and only the classes that are modified are re-dexed. You should also expect improved build speeds for apps that set minSdkVersion to 20 or lower, and use legacy multi-dex .
    • Improved build speeds by optimizing certain tasks to use chached outputs. To benefit from this optimization, you need to first enable the Gradle build cache .
    • Improved incremental resource processing using AAPT2, which is now enabled by default. If you are experiencing issues while using AAPT2, please report a bug . You can also disable AAPT2 by setting android.enableAapt2=false in your gradle.properties file and restarting the Gradle daemon by running ./gradlew --stop from the command line.

    Новые функции

    • Variant-aware dependency management . When building a certain variant of a module, the plugin now automatically matches variants of local library module dependencies to the variant of the module you are building.
    • Includes a new Feature module plugin to support Android Instant Apps and the Android Instant Apps SDK (which you can download using the SDK manager ). To learn more about creating Feature modules with the new plugin, read Structure of an instant app with multiple features .
    • Built-in support for using certain Java 8 language features and Java 8 libraries. Jack is now deprecated and no longer required , and you should first disable Jack to use the improved Java 8 support built into the default toolchain. For more information, read Use Java 8 language features .
    • Added support for running tests with Android Test Orchestrator , which allows you to run each of your app's tests within its own invocation of Instrumentation. Because each test runs in its own Instrumentation instance, any shared state between tests doesn't accumulate on your device's CPU or memory. And, even if one test crashes, it takes down only its own instance of Instrumentation, so your other tests still run.

      • Added testOptions.execution to determine whether to use on-device test orchestration. If you want to use Android Test Orchestrator , you need to specify ANDROID_TEST_ORCHESTRATOR , as shown below. By default, this property is set to HOST , which disables on-device orchestration and is the standard method of running tests.

      Круто

              android {
                testOptions {
                  execution 'ANDROID_TEST_ORCHESTRATOR'
                }
              }
              

      Котлин

              android {
                testOptions {
                  execution = "ANDROID_TEST_ORCHESTRATOR"
                }
              }
              
    • New androidTestUtil dependency configuration allows you to install another test helper APK before running your instrumentation tests, such as Android Test Orchestrator:

      Круто

              dependencies {
                androidTestUtil 'com.android.support.test:orchestrator:1.0.0'
                ...
              }
              

      Котлин

              dependencies {
                androidTestUtil("com.android.support.test:orchestrator:1.0.0")
                ...
              }
              
    • Added testOptions.unitTests.includeAndroidResources to support unit tests that require Android resources, such as Roboelectric . When you set this property to true , the plugin performs resource, asset, and manifest merging before running your unit tests. Your tests can then inspect com/android/tools/test_config.properties on the classpath for the following keys:

      • android_merged_assets : the absolute path to the merged assets directory.

        Note: For library modules, the merged assets do not contain the assets of dependencies (see issue #65550419 ).

      • android_merged_manifest : the absolute path to the merged manifest file.

      • android_merged_resources : the absolute path to the merged resources directory, which contains all the resources from the module and all its dependencies.

      • android_custom_package : the package name of the final R class. If you dynamically modify the application ID, this package name may not match the package attribute in the app's manifest.

    • Support for fonts as resources (which is a new feature introduced in Android 8.0 (API level 26) ).
    • Support for language-specific APKs with Android Instant Apps SDK 1.1 and higher.
    • You can now change the output directory for your external native build project, as shown below:

      Круто

              android {
                  ...
                  externalNativeBuild {
                      // For ndk-build, instead use the ndkBuild block.
                      cmake {
                          ...
                          // Specifies a relative path for outputs from external native
                          // builds. You can specify any path that's not a subdirectory
                          // of your project's temporary build/ directory.
                          buildStagingDirectory "./outputs/cmake"
                      }
                  }
              }
              

      Котлин

              android {
                  ...
                  externalNativeBuild {
                      // For ndk-build, instead use the ndkBuild block.
                      cmake {
                          ...
                          // Specifies a relative path for outputs from external native
                          // builds. You can specify any path that's not a subdirectory
                          // of your project's temporary build/ directory.
                          buildStagingDirectory = "./outputs/cmake"
                      }
                  }
              }
              
    • You can now use CMake 3.7 or higher when building native projects from Android Studio.
    • New lintChecks dependency configuration allows you to build a JAR that defines custom lint rules, and package it into your AAR and APK projects.

      Your custom lint rules must belong to a separate project that outputs a single JAR and includes only compileOnly dependencies. Other app and library modules can then depend on your lint project using the lintChecks configuration:

      Круто

              dependencies {
                  // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file
                  // and package it with your module. If the module is an Android library,
                  // other projects that depend on it automatically use the lint checks.
                  // If the module is an app, lint includes these rules when analyzing the app.
                  lintChecks project(':lint-checks')
              }
              

      Котлин

              dependencies {
                  // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file
                  // and package it with your module. If the module is an Android library,
                  // other projects that depend on it automatically use the lint checks.
                  // If the module is an app, lint includes these rules when analyzing the app.
                  lintChecks(project(":lint-checks"))
              }
              

    Изменения поведения

    • Android plugin 3.0.0 removes certain APIs, and your build will break if you use them. For example, you can no longer use the Variants API to access outputFile() objects or use processManifest.manifestOutputFile() to get the manifest file for each variant. To learn more, read API changes .
    • You no longer need to specify a version for the build tools (so, you can now remove the android.buildToolsVersion property). By default, the plugin automatically uses the minimum required build tools version for the version of Android plugin you're using.
    • You now enable/disable PNG crunching in the buildTypes block, as shown below. PNG crunching is enabled by default for all builds except debug builds because it increases build times for projects that include many PNG files. So, to improve build times for other build types, you should either disable PNG crunching or convert your images to WebP .

      Круто

            android {
              buildTypes {
                release {
                  // Disables PNG crunching for the release build type.
                  crunchPngs false
                }
              }
            }
            

      Котлин

            android {
              buildTypes {
                release {
                  // Disables PNG crunching for the release build type.
                  isCrunchPngs = false
                }
              }
            }
            
    • The Android plugin now automatically builds executable targets that you configure in your external CMake projects.
    • You must now add annotation processors to the processor classpath using the annotationProcessor dependency configuration.
    • Using the deprecated ndkCompile is now more restricted. You should instead migrate to using either CMake or ndk-build to compile native code that you want to package into your APK. To learn more, read Migrate from ndkcompile .

    2.3.0 (February 2017)

    2.3.3 (июнь 2017 г.)

    Это небольшое обновление, которое добавляет совместимость с Android Studio 2.3.3 .

    2.3.2 (май 2017 г.)

    Это небольшое обновление, которое добавляет совместимость с Android Studio 2.3.2 .

    2.3.1 (апрель 2017 г.)

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

    Зависимости:
    Новый:
    • Использует Gradle 3.3, который включает в себя улучшенную производительность и новые функции. Подробнее см. в заметках о выпуске Gradle .
    • Кэш сборки : хранит определённые выходные данные, генерируемые плагином Android при сборке вашего проекта (например, неупакованные AAR-файлы и предустановленные удалённые зависимости). Чистые сборки выполняются гораздо быстрее при использовании кэша, поскольку система сборки может повторно использовать эти кэшированные файлы при последующих сборках, а не создавать их заново. Проекты, использующие плагин Android версии 2.3.0 и выше, используют кэш сборки по умолчанию. Подробнее см. в статье «Повышение скорости сборки с помощью кэша сборки» .
      • Включает задачу cleanBuildCache , которая очищает кэш сборки .
      • Если вы используете экспериментальную версию кэша сборки (включенную в более ранние версии плагина), вам следует обновить плагин до последней версии.
    Изменения:

    2.2.0 (September 2016)

    Зависимости:
    Новый:
    • Использует Gradle 2.14.1, который включает в себя улучшенную производительность и новые функции, а также устраняет уязвимость безопасности, допускающую локальное повышение привилегий при использовании демона Gradle. Подробнее см. в заметках о выпуске Gradle .
    • Используя внешний DSL-пакет externalNativeBuild {} , Gradle теперь позволяет вам подключаться к исходным кодам нативных приложений и компилировать нативные библиотеки с помощью CMake или ndk-build. После сборки нативных библиотек Gradle упаковывает их в ваш APK-файл. Чтобы узнать больше об использовании CMake и ndk-build с Gradle, прочтите статью «Добавление кода C и C++ в ваш проект» .
    • При запуске сборки из командной строки Gradle теперь пытается автоматически загрузить все отсутствующие компоненты SDK или обновления, от которых зависит ваш проект. Подробнее см. в статье «Автоматическая загрузка отсутствующих пакетов с помощью Gradle» .
    • Новая экспериментальная функция кэширования позволяет Gradle ускорить сборку за счёт предексирования, хранения и повторного использования предексированных версий ваших библиотек. Подробнее об использовании этой экспериментальной функции см. в руководстве по кэшированию сборки .
    • Повышает производительность сборки за счёт внедрения нового конвейера упаковки по умолчанию, который выполняет сжатие, подписание и выравнивание в рамках одной задачи. Вы можете вернуться к использованию старых инструментов упаковки, добавив android.useOldPackaging=true в файл gradle.properties . При использовании нового инструмента упаковки задача zipalignDebug недоступна. Однако вы можете создать её самостоятельно, вызвав метод createZipAlignTask(String taskName, File inputFile, File outputFile) .
    • Подпись APK теперь использует схему подписи APK v2 в дополнение к традиционной подписи JAR. Все платформы Android принимают полученные APK. Любое изменение этих APK после подписания делает их подписи v2 недействительными и предотвращает установку на устройство. Чтобы отключить эту функцию, добавьте следующее в файл build.gradle на уровне модуля:

      Круто

      android {
        ...
        signingConfigs {
          config {
            ...
            v2SigningEnabled false
          }
        }
      }
            

      Котлин

      android {
        ...
        signingConfigs {
          create("config") {
            ...
            v2SigningEnabled = false
          }
        }
      }
            
    • Для сборок Multidex теперь можно использовать правила ProGuard, чтобы определить, какие классы Gradle следует скомпилировать в основной DEX-файл вашего приложения. Поскольку система Android загружает основной DEX-файл первым при запуске приложения, вы можете задать приоритет определённых классов при запуске, скомпилировав их в основной DEX-файл. После создания файла конфигурации ProGuard специально для основного DEX-файла передайте путь к нему в Gradle с помощью buildTypes.multiDexKeepProguard . Использование этого DSL отличается от использования buildTypes.proguardFiles , который задаёт общие правила ProGuard для вашего приложения и не определяет классы для основного DEX-файла.
    • Добавляет поддержку флага android:extractNativeLibs , который может уменьшить размер вашего приложения при установке на устройство. Если установить этот флаг в значение false в элементе <application> манифеста приложения, Gradle упаковывает несжатые и выровненные версии ваших нативных библиотек вместе с вашим APK. Это предотвращает копирование нативных библиотек из APK в файловую систему устройства во время установки PackageManager и обеспечивает дополнительное преимущество: уменьшает размер дельта-обновлений вашего приложения.
    • Теперь вы можете указать versionNameSuffix и applicationIdSuffix для разновидностей продукта. ( Проблема 59614 )
    Изменения:
    • getDefaultProguardFile теперь возвращает файлы ProGuard по умолчанию, предоставляемые плагином Android для Gradle, и больше не использует файлы из Android SDK.
    • Улучшена производительность и функции компилятора Jack:
      • Теперь Jack поддерживает тестовое покрытие Jacoco при установке testCoverageEnabled в true .
      • Улучшенная поддержка обработчиков аннотаций. Обработчики аннотаций в вашем classpath, такие как любые зависимости compile , автоматически применяются к вашей сборке. Вы также можете указать обработчик аннотаций в аргументах сборки и передачи, используя DSL-операцию javaCompileOptions.annotationProcessorOptions {} в файле build.gradle на уровне модуля:

        Круто

        android {
          ...
          defaultConfig {
            ...
            javaCompileOptions {
              annotationProcessorOptions {
                className 'com.example.MyProcessor'
                // Arguments are optional.
                arguments = [ foo : 'bar' ]
              }
            }
          }
        }
            

        Котлин

        android {
          ...
          defaultConfig {
            ...
            javaCompileOptions {
              annotationProcessorOptions {
                className = "com.example.MyProcessor"
                // Arguments are optional.
                arguments(mapOf(foo to "bar"))
              }
            }
          }
        }
            

        Если вы хотите применить процессор аннотаций во время компиляции, но не включать его в свой APK, используйте область зависимости annotationProcessor :

        Круто

        dependencies {
            compile 'com.google.dagger:dagger:2.0'
            annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
           // or use buildVariantAnnotationProcessor to target a specific build variant
        }
            

        Котлин

        dependencies {
            implementation("com.google.dagger:dagger:2.0")
            annotationProcessor("com.google.dagger:dagger-compiler:2.0")
           // or use buildVariantAnnotationProcessor to target a specific build variant
        }
            
      • Чтобы получить список параметров, которые можно установить, выполните следующую команду из командной строки:

        java -jar /build-tools/jack.jar --help-properties
        
      • По умолчанию, если размер кучи демона Gradle составляет не менее 1,5 ГБ, Jack запускается в том же процессе, что и Gradle. Чтобы изменить размер кучи демона, добавьте в файл gradle.properties следующее:
        # This sets the daemon heap size to 1.5GB.
        org.gradle.jvmargs=-Xmx1536M
        

    2.1.0 (April 2016)

    2.1.3 (August 2016)

    This update requires Gradle 2.14.1 and higher. Gradle 2.14.1 includes performance improvements, new features, and an important security fix . For more details, see the Gradle release notes .

    Зависимости:
    Новый:
    • Added support for the N Developer Preview, JDK 8, and Java 8 language features using the Jack toolchain. To find out more, read the N Preview guide .

      Note: Instant Run does not currently work with Jack and will be disabled while using the new toolchain. You only need to use Jack if you are developing for the N Preview and want to use the supported Java 8 language features.

    • Added default support for incremental Java compilation to reduce compilation time during development. It does this by only recompiling portions of the source that have changed or need to be recompiled. To disable this feature, add the following code to your module-level build.gradle file:

      Круто

      android {
        ...
        compileOptions {
          incremental false
        }
      }

      Котлин

      android {
        ...
        compileOptions {
          incremental = false
        }
      }
    • Added support for dexing-in-process which performs dexing within the build process rather than in a separate, external VM processes. This not only makes incremental builds faster, but also speeds up full builds. The feature is enabled by default for projects that have set the Gradle daemon's maximum heap size to at least 2048 MB. You can do this by including the following in your project's gradle.properties file:

      ```none org.gradle.jvmargs = -Xmx2048m ```

      If you have defined a value for javaMaxHeapSize in your module-level build.gradle file, you need to set org.gradle.jvmargs to the value of javaMaxHeapSize + 1024 MB. For example, if you have set javaMaxHeapSize to "2048m", you need to add the following to your project's gradle.properties file:

      ```none org.gradle.jvmargs = -Xmx3072m ```

      To disable dexing-in-process, add the following code to your module-level build.gradle file:

      Круто

      android {
        ...
        dexOptions {
            dexInProcess false
        }
      }

      Котлин

      android {
        ...
        dexOptions {
            dexInProcess = false
        }
      }

    2.0.0 (April 2016)

    Зависимости:
    Новый:
    • Enables Instant Run by supporting bytecode injection, and pushing code and resource updates to a running app on the emulator or a physical device.
    • Added support for incremental builds, even when the app isn't running. Full build times are improved by pushing incremental changes through the Android Debug Bridge to the connected device.
    • Added maxProcessCount to control how many worker dex processes can be spawned concurrently. The following code, in the module-level build.gradle file, sets the maximum number of concurrent processes to 4:

      Круто

      android {
        ...
        dexOptions {
          maxProcessCount = 4 // this is the default value
        }
      }

      Котлин

      android {
        ...
        dexOptions {
          maxProcessCount = 4 // this is the default value
        }
      }
        </li>
      
        <li>Added an experimental code shrinker to support pre-dexing and reduce re-dexing
        of dependencies, which are not supported with Proguard. This improves the build
        speed of your debug build variant. Because the experimental shrinker does not
        support optimization and obfuscation, you should enable Proguard for your
        release builds. To enable the experimental shrinker for your debug builds, add
        the following to your module-level <code>build.gradle</code> file:
      

      Круто

      android {
        ...
        buildTypes {
          debug {
            minifyEnabled true
            useProguard false
          }
          release {
            minifyEnabled true
            useProguard true // this is a default setting
          }
        }
      }

      Котлин

      android {
        ...
        buildTypes {
          getByName("debug") {
            minifyEnabled = true
            useProguard = false
          }
          getByName("release") {
            minifyEnabled = true
            useProguard = true // this is a default setting
          }
        }
      }
        </li>
      
        <li>Added logging support and improved performance for the resource shrinker.
        The resource shrinker now logs all of its operations into a <code>resources.txt</code>
        file located in the same folder as the Proguard log files.
        </li>
      </ul>
      

    Changed behavior:
    • When minSdkVersion is set to 18 or higher, APK signing uses SHA256.
    •   <li>DSA and ECDSA keys can now sign APK packages.
      
          <p class="note">
            <strong>Note:</strong> The <a href=
            "/training/articles/keystore.html">Android keystore</a> provider no
            longer supports <a href=
            "/about/versions/marshmallow/android-6.0-changes.html#behavior-keystore">
            DSA keys on Android 6.0</a> (API level 23) and higher.
          </p>
      
        </li>
      </ul>
      

    Исправленные проблемы:
    • Fixed an issue that caused duplicate AAR dependencies in both the test and main build configurations.

    Android plugin for Gradle, revision 1.5.0 (November 2015)

    Зависимости:
    • Gradle 2.2.1 or higher.
    • Build Tools 21.1.1 or higher.
    Общие примечания:
    • Integrated the Data Binding plugin into the Android plugin for Gradle. To enable it, add the following code to each per-project build.gradle file that uses the plugin:
    • android {
          dataBinding {
              enabled = true
          }
      }
              
      android {
          dataBinding {
              enabled = true
          }
      }
              
    • Added a new Transform API to allow third-party plugins to manipulate compiled .class files before they're converted to .dex files. The Transform API simplifies injecting custom class manipulations while offering more flexibility regarding what you can manipulate. To insert a transform into a build, create a new class implementing one of the Transform interfaces, and register it with android.registerTransform(theTransform) or android.registerTransform(theTransform, dependencies) . There's no need to wire tasks together. Note the following about the Transform API:
      • A transform can apply to one or more of the following: the current project, subprojects, and external libraries.
      • A transform must be registered globally, which applies them to all variants.
      • Internal code processing, through the Java Code Coverage Library (JaCoCo), ProGuard, and MultiDex, now uses the Transform API. However, the Java Android Compiler Kit (Jack) doesn't use this API: only the javac/dx code path does.
      • Gradle executes the transforms in this order: JaCoCo, third-party plugins, ProGuard. The execution order for third-party plugins matches the order in which the transforms are added by the third party plugins; third-party plugin developers can't control the execution order of the transforms through an API.
    • Deprecated the dex getter from the ApplicationVariant class. You can't access the Dex task through the variant API anymore because it's now accomplished through a transform. There's currently no replacement for controlling the dex process.
    • Fixed incremental support for assets.
    • Improved MultiDex support by making it available for test projects, and tests now automatically have the com.android.support:multidex-instrumentation dependency.
    • Added the ability to properly fail a Gradle build and report the underlying error cause when the Gradle build invokes asynchronous tasks and there's a failure in the worker process.
    • Added support for configuring a specific Application Binary Interface (ABI) in variants that contain multiple ABIs.
    • Added support for a comma-separated list of device serial numbers for the ANDROID_SERIAL environment variable when installing or running tests.
    • Fixed an installation failure on devices running Android 5.0 (API level 20) and higher when the APK name contains a space.
    • Fixed various issues related to the Android Asset Packaging Tool (AAPT) error output.
    • Added JaCoCo incremental instrumentation support for faster incremental builds. The Android plugin for Gradle now invokes the JaCoCo instrumenter directly. To force a newer version of the JaCoCo instrumenter, you need to add it as a build script dependency.
    • Fixed JaCoCo support so it ignores files that aren't classes.
    • Added vector drawable support for generating PNGs at build time for backward-compatibility. Android plugin for Gradle generates PNGs for every vector drawable found in a resource directory that doesn't specify an API version or specifies an android:minSdkVersion attribute of 20 or lower in the <uses-sdk> element in the app manifest. You can set PNG densities by using the generatedDensities property in the defaultConfig or productFlavor sections of a build.gradle file.
    • Added sharing of the mockable android.jar , which the plugin generates only once and uses for unit testing. Multiple modules, such as app and lib , now share it. Delete $rootDir/build to regenerate it.
    • Changed the processing of Java resources to occur before the obfuscation tasks instead of during the packaging of the APK. This change allows the obfuscation tasks to have a chance to adapt the Java resources following packages obfuscation.
    • Fixed an issue with using Java Native Interface (JNI) code in the experimental library plugin.
    • Added the ability to set the platform version separately from the android:compileSdkVersion attribute in the experimental library plugin.

    Плагин Android для Gradle, версия 1.3.1 (август 2015 г.)

    Зависимости:
    • Gradle 2.2.1 or higher.
    • Build Tools 21.1.1 or higher.
    Общие примечания:
    • Исправлена задача ZipAlign для правильного использования выходных данных предыдущей задачи при использовании настроенного имени файла.
    • Исправлена упаковка Renderscript с помощью NDK .
    • Поддерживается задача сборки createDebugCoverageReport .
    • Исправлена поддержка настраиваемого использования свойства archiveBaseName в файле сборки build.gradle .
    • Исправлено предупреждение Invalid ResourceType lint , вызванное поиском аннотации метода параметра при запуске lint вне Android Studio.

    Android plugin for Gradle, revision 1.3.0 (July 2015)

    Зависимости:
    • Gradle 2.2.1 or higher.
    • Build Tools 21.1.1 or higher.
    Общие примечания:
    • Added support for the com.android.build.threadPoolSize property to control the Android task thread pool size from the gradle.properties file or the command line. The following example sets this property to 4.

              
              -Pcom.android.build.threadPoolSize=4
              
            
    • Set the default build behavior to exclude LICENSE and LICENSE.txt files from APKs. To include these files in an APK, remove these files from the packagingOptions.excludes property in the build.gradle file. Например:
      android {
            packagingOptions.excludes = []
          }
            
      android {
            packagingOptions.excludes.clear()
          }
          
    • Added the sourceSets task to inspect the set of all available source sets.
    • Enhanced unit test support to recognize multi-flavor and build variant source folders. For example, to test an app with multi-flavors flavor1 and flavorA with the Debug build type, the test source sets are:
      • тест
      • testFlavor1
      • testFlavorA
      • testFlavor1FlavorA
      • testFlavor1FlavorADebug

      Android tests already recognized multi-flavor source folders.

    • Improved unit test support to:
      • Run javac on main and test sources, even if the useJack property is set to true in your build file.
      • Correctly recognize dependencies for each build type.
    • Added support for specifying instrumentation test-runner arguments from the command line. Например:
      ./gradlew connectedCheck \
         -Pandroid.testInstrumentationRunnerArguments.size=medium \
         -Pandroid.testInstrumentationRunnerArguments.class=TestA,TestB
              
    • Added support for arbitrary additional Android Asset Packaging Tool (AAPT) parameters in the build.gradle file. Например:

      android {
          aaptOptions {
            additionalParameters "--custom_option", "value"
          }
      }
            
      android {
          aaptOptions {
            additionalParameters += listOf("--custom_option", "value")
          }
      }
            
    • Added support for a test APK module as a separate test module, using the targetProjectPath and targetVariant properties to set the APK path and target variant.

      Note: A test APK module does not support product flavors and can only target a single variant. Also, Jacoco is not supported yet.

    • Added resource name validation before merging resources.
    • When building an AAR (Android ARchive) package for library modules, do not provide an automatic @{applicationId} placeholder in the manifest merger settings. Instead, use a different placeholder, such as @{libApplicationId} and provide a value for it if you want to include application Ids in the archive library.

    Android plugin for Gradle, revision 1.2.0 (April 2015)

    Зависимости:
    • Gradle 2.2.1 or higher.
    • Build Tools 21.1.1 or higher.
    Общие примечания:
    • Enhanced support for running unit tests with Gradle.
      • Added support to include Java-style resources in the classpath when running unit tests directly from Gradle.
      • Added unit test dependency support for Android Archive (AAR) artifacts.
      • Added support for the unitTestVariants property so unit test variants can be manipulated using the build.gradle file.
      • Added the unitTest.all code block under testOptions to configure customized tasks for unit test. The following sample code shows how to add unit test configuration settings using this new option:
        android {
          testOptions {
            unitTest.all {
              jvmArgs '-XX:MaxPermSize=256m' // Or any other gradle option.
            }
          }
        }
        android {
          testOptions {
            unitTest.all {
              jvmArgs += listOf("-XX:MaxPermSize=256m") // Or any other gradle option.
            }
          }
        }
                    
      • Fixed the handling of enums and public instance fields in the packaging of the mockable-android.jar file.
      • Fixed library project task dependencies so test classes recompile after changes.
    • Added the testProguardFile property to apply ProGuard files when minifying a test APK.
    • Added the timeOut property to the adbOptions code block for setting the maximum recording time for Android Debug Bridge screen recording.
    • Added support for 280 dpi resources.
    • Improved performance during project evaluation.

    Android plugin for Gradle, revision 1.1.3 (March 2015)

    Зависимости:
    • Gradle 2.2.1 or higher.
    • Build Tools 21.1.1 or higher.
    Общие примечания:
    • Fixed issue with duplicated dependencies on a test app that triggered a ProGuard failure.
    • Fixed Comparator implementation which did not comply with the JDK Comparator contract and generated a JDK 7 error.

    Android plugin for Gradle, revision 1.1.2 (February 2015)

    Зависимости:
    • Gradle 2.2.1 or higher.
    • Build Tools 21.1.1 or higher.
    Общие примечания:
    • Normalized path when creating a mockable JAR for unit testing.
    • Fixed the archivesBaseName setting in the build.gradle file.
    • Fixed the unresolved placeholder failure in manifest merger when building a library test application.

    Android plugin for Gradle, revision 1.1.1 (February 2015)

    Зависимости:
    • Gradle 2.2.1 or higher.
    • Build Tools 21.1.1 or higher.
    Общие примечания:
    • Modified build variants so only variants that package a Wear app trigger Wear-specific build tasks.
    • Changed dependency related issues to fail at build time rather than at debug time. This behavior allows you to run diagnostic tasks (such as 'dependencies') to help resolve the conflict.
    • Fixed the android.getBootClasspath() method to return a value.

    Плагин Android для Gradle, версия 1.1.0 (февраль 2015 г.)

    Зависимости:
    • Gradle 2.2.1 or higher.
    • Build Tools 21.1.1 or higher.
    Общие примечания:
    • Добавлена поддержка новых модульных тестов
      • Реализована возможность запуска модульных тестов на локальной JVM с использованием специальной версии файла android.jar , совместимой с популярными фреймворками для имитации, например Mockito.
      • Добавлены новые тестовые задачи testDebug , testRelease и testMyFlavorDebug при использовании вариантов продукта.
      • Добавлены новые исходные папки, распознаваемые как модульные тесты: src/test/java/ , src/testDebug/java/ , src/testMyFlavor/java/ .
      • Добавлены новые конфигурации в файл build.gradle для объявления зависимостей, предназначенных только для тестирования, например, testCompile 'junit:junit:4.11' , testMyFlavorCompile 'some:library:1.0' .

        Note: Test-only dependencies are not currently compatible with Jack (Java Android Compiler Kit).

      • Добавлен параметр android.testOptions.unitTests.returnDefaultValues для управления поведением макета android.jar.
    • В названиях тестовых задач Test заменено на AndroidTest . Например, задача assembleDebugTest теперь называется assembleDebugAndroidTest . В названиях задач модульного тестирования по-прежнему присутствует UnitTest , например, assembleDebugUnitTest .
    • Изменённые файлы конфигурации ProGuard больше не применяются к тестовому APK. Если включена минимизация, ProGuard обрабатывает тестовый APK и применяет только файл сопоставления, сгенерированный при минимизации основного APK.
    • Обновленное управление зависимостями
      • Исправлены проблемы с использованием provided и package областей.

        Note: These scopes are incompatible with AAR (Android ARchive) packages and will cause a build with AAR packages to fail.

      • Изменено разрешение зависимостей для сравнения зависимостей тестируемого и тестового приложений. Если артефакт с одинаковой версией обнаружен для обоих приложений, он не включается в тестовое приложение и упаковывается только вместе с тестируемым приложением. Если артефакт с разной версией обнаружен для обоих приложений, сборка завершается ошибкой.
    • Добавлена поддержка квалификатора ресурсов anyDpi при слиянии ресурсов.
    • Улучшена скорость оценки и синхронизации IDE для проектов с большим количеством модулей Android.

    Android plugin for Gradle, revision 1.0.1 (January 2015)

    Зависимости:
    • Gradle 2.2.1 up to 2.3.x.

      Note: This version of the Android plugin for Gradle is not compatible with Gradle 2.4 and higher.

    • Build Tools 21.1.1 or higher.
    Общие примечания:
    • Fixed issue with Gradle build failure when accessing the extractReleaseAnnotations module. ( Issue 81638 ).
    • Fixed issue with Disable passing the --no-optimize setting to the Dalvik Executable (dex) bytecode. ( Issue 82662 ).
    • Fixed manifest merger issues when importing libraries with a targetSdkVersion less than 16.
    • Fixed density ordering issue when using Android Studio with JDK 8.

    Android plugin for Gradle, revision 1.0.0 (December 2014)

    Зависимости:
    • Gradle 2.2.1 up to 2.3.x.

      Note: This version of the Android plugin for Gradle is not compatible with Gradle 2.4 and higher.

    • Build Tools 21.1.1 or higher.
    Общие примечания:
    • Initial plugin release.