Android Studio 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 с помощью компонентов, инструментов и рекомендаций, которые устраняют повторяющиеся задачи и позволяют быстрее и проще создавать высококачественные, тестируемые приложения. 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 .

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

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

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

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

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

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

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

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

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

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

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

Ломтики

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

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

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

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

Котлин 1.2.61

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

IntelliJ ИДЕЯ 2018.1.6

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

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

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

Сессии

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

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

Трассировка системы

В профилировщике ЦП выберите новую конфигурацию трассировки системы , чтобы проверить активность ЦП и потоков системы вашего устройства. Эта конфигурация трассировки построена на 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, профилировщик ЦП отображает API отладки в качестве выбранной конфигурации записи ЦП.

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

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

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

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

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

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

Проверка на наличие ворса

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

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

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

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

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

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

        android {
            lintOptions {
                check 'Interoperability'
            }
        }
        
      

Проверка на наличие ворса для срезов

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

Новая цель Gradle

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

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

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

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

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

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

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

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

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

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

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

Привязка данных версии 2 теперь включена по умолчанию и совместима с версией 1. Это означает, что если у вас есть зависимости библиотеки, скомпилированные с помощью версии 1, вы можете использовать их в проектах, использующих привязку данных версии 2. Однако обратите внимание, что проекты, использующие 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 включали встроенный мультидекс при развертывании отладочной версии приложения на устройстве с Android API уровня 21 или выше. Теперь, независимо от того, выполняете ли вы развертывание на устройстве или создаете APK для выпуска, плагин Android для Gradle включает встроенный мультидекс для всех модулей, для которых установлено minSdkVersion=21 или выше.

AAPT2 перемещен в репозиторий Google Maven.

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

Чтобы использовать 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.

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

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

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