Android-студия Дельфин | 2021.3.1 (сентябрь 2022 г.), Android Studio Dolphin | 2021.3.1 (сентябрь 2022 г.)

Ниже приведены новые функции Android Studio Dolphin.

Новое в Compose

Ниже приведены новые функции и улучшения Jetpack Compose в Android Studio.

Создание координации анимации

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

Gif, показывающий осмотр с использованием пользовательского интерфейса All Animations.

Создание аннотаций для нескольких предпросмотров

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

Пользовательский интерфейс аннотаций с несколькими предварительным просмотром

Составление счетчиков рекомпозиции в Layout Inspector

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

Инспектор макетов теперь позволяет вам видеть, когда отдельные составные элементы в вашей иерархии макетов были перекомпонованы или пропущены. Эта информация отображается в реальном времени, пока вы взаимодействуете со своим приложением. Для начала убедитесь, что ваше приложение использует Compose 1.2.0-alpha03 или выше. Затем разверните свое приложение, как обычно.

Новая композиция и счетчик пропусков в Layout Inspector.

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

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

Включите композицию и счетчик пропусков в Layout Inspector.

Обновлен помощник по сопряжению с эмулятором Wear OS.

Начиная с Android Studio Dolphin Canary 3, помощник по сопряжению эмуляторов Wear OS имеет улучшенные функции, которые упрощают управление эмуляторами Wear и их подключение. Теперь вы можете сделать следующее:

  • См. раздел «Износ устройств» в диспетчере устройств .
  • Подключите несколько устройств Wear к одному виртуальному или физическому телефону.
  • Автоматически повторно подключайте ранее сопряженные устройства при их запуске. Android Studio теперь запоминает и повторно соединяет последнюю настроенную пару.

Чтобы использовать эти новые функции, убедитесь, что ваши эмуляторы телефона имеют уровень API 30 или выше и на них установлен Google Play Store. Кроме того, убедитесь, что ваши эмуляторы Wear имеют уровень API 28 или выше. Чтобы обновить образы системы для эмулируемых устройств до последних версий, выберите «Инструменты» > «Менеджер SDK» .

Дополнительную информацию см. в разделе Использование помощника по сопряжению с эмулятором Wear OS .

Обновлена ​​панель инструментов эмулятора Wear OS.

Начиная с Android Studio Dolphin Canary 2, для эмуляторов Wear с уровнем API 28 или выше на панели инструментов эмулятора теперь есть кнопки, имитирующие физические кнопки и общие действия на устройстве. Новые кнопки: кнопка 1 и кнопка 2 (кнопка 2 доступна только на уровне API 30 или выше), кнопка «Пальма» и кнопка «Наклон». Вот некоторые действия, которые вы можете выполнять с помощью новых кнопок эмулятора Wear:

  • Чтобы перевести устройство в режим окружающей среды, нажмите кнопку Palm.
  • Чтобы вернуть устройство к последнему экрану, на котором оно было перед режимом окружающей среды, нажмите кнопку «Наклон».

Дополнительные сведения см. в разделе Выполнение стандартных действий в эмуляторе .

Эмулятор Wear с кнопками, специфичными для Wear

Новые конфигурации запуска Wear OS

Были добавлены новые конфигурации запуска для быстрого запуска и отладки поверхностей, специфичных для Wear OS, таких как циферблаты, плитки и осложнения. Вы можете создать эти новые конфигурации в диалоговом окне «Конфигурации запуска/отладки» при запуске приложения.

Дополнительную информацию см. в разделе Конфигурации запуска/отладки Wear OS .

Новые конфигурации запуска WearOS

Новый логкат

Logcat был обновлен, чтобы упростить анализ, запрос и отслеживание журналов.

Новый форматтер

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

Новое форматирование журналов в Logcat.

Создать несколько окон Logcat

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

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

Создайте несколько окон logcat, используя разделения.

Переключение между пресетами просмотра

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

Скриншот переключения между различными режимами просмотра

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

Снимок экрана: новый синтаксис запроса с автозаполнением

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

  • PID для проекта локального приложения : package:mine
  • Конкретные значения :
    • package:<package-ID>
    • tag:<tag>
    • level:[VERBOSE | INFO | ASSERT |DEBUG | WARN | ERROR ]
  • Исключите определенное значение , предварив ключ знаком - :
    • -tag:<exclude-tag>
  • Используйте регулярные выражения с заданным ключом, поместив ~ после ключа:
    • tag~:<regular-expression-tag>
    • Объедините с тегом исключения: -tag~:<exclude-regular-expression-tag>

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

История запросов скриншотов с избранным

Отслеживайте журналы сбоев/перезапусков приложений.

Новый Logcat теперь упрощает отслеживание журналов вашего приложения при сбоях и перезапусках приложения, чтобы вы не пропустили важные журналы этих событий. Когда Logcat заметит, что процесс вашего приложения остановлен и перезапущен, вы увидите сообщение в выходных данных, например PROCESS ENDED и PROCESS STARTED , как показано ниже:

Скриншот перезапуска процесса в logcat

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

Управляемые устройства Gradle

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

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

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

Кроме того, в управляемых устройствах Gradle представлен новый тип устройств-эмуляторов, называемый устройствами автоматического тестирования (ATD), которые оптимизированы для повышения производительности при выполнении инструментальных тестов. В сочетании с поддержкой сегментирования тестов вы можете поэкспериментировать с разделением набора тестов на несколько экземпляров ATD, чтобы сократить общее время выполнения тестов. Дополнительные сведения об управляемых устройствах Gradle и связанных с ними функциях см. в разделе Масштабирование тестов с помощью управляемых устройств Gradle .

Поддержка R8 с использованием файлов сопоставления на основе смещений инструкций DEX.

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

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

Лямбды без гражданства больше не обесцвечиваются как одиночные элементы.

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

R8 позволяет избежать замедления проверки во время выполнения Android

Чтобы устранить проблемы с производительностью в средах выполнения Android (Dalvik и ART), в R8 (не D8) теперь представлены заглушки библиотек и структурированные вызовы библиотечных методов для библиотечных классов и методов, которые могут отсутствовать во время выполнения. Это устраняет многие проблемы с проверкой и повышает производительность во время выполнения. Эта функция всегда включена.

Поддержка API JDK-11 с очисткой API Java 8+.

При использовании зависимости coreLibraryDesugaring теперь поддерживается библиотека реализации на основе JDK-11. Дополнительную информацию смотрите в журнале изменений desugar_jdk_libs .

Выпуски патчей

Ниже приведен список выпусков исправлений в Android Studio Dolphin.

Android-студия Дельфин | Обновление 1 2021.3.1 (октябрь 2022 г.)

С выпуском патча 1 Android Studio Dolphin теперь поддерживает плагин Kotlin 1.7.20. Это незначительное обновление также включает следующие исправления ошибок:

Исправленные проблемы
Плагин Android Gradle
Запуск инструментальных тестов Android через gradle не позволяет правильно применить обессеривание
AGP 7.3.0 нарушает синхронизацию Gradle для проектов платформы Gradle
Дексер (D8)
Добавьте общедоступный API для разрешения конфликтов при слиянии DEX (чтобы bazel разрешил дублирование классов).
Импорт/синхронизация
Импорт проекта Gradle завершается сбоем после обновления с патча 2 «Бурундук» (2021.2.1)
Ресурсы
NPE в AarResourceRepositoryCache.createCachingData (AS Dolphin+)
Шринкер (R8)
Метаданные Kotlin не копируются при замене типов полей
Неожиданное преобразование неточного типа: TOP (все)
Gradle 7.3.0 вызывает ошибку сборки APK com.android.tools.r8.CompilationFailedException
Удалить мертвые конструкторы по умолчанию в режиме совместимости.
Конфликт с JetBrains Markdown
Поддержка ThreadLocal.withInitial(java.util.function.Supplier
AGP 7.3 генерирует dex для классов со сломанным конструктором
Неожиданная попытка определить, нуждается ли в обессеривании код, отличный от CF.
ктор VerifyError
Неопределенное значение, обнаруженное во время компиляции, выброшенное при обработке okio-jvm 3.2.0
Ошибка компиляции из объекта встраивания класса с косвенным экземпляром пользователей
java.lang.IllegalAccessError с R8 3.3.75

,

Ниже приведены новые функции Android Studio Dolphin.

Новое в Compose

Ниже приведены новые функции и улучшения Jetpack Compose в Android Studio.

Создание координации анимации

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

Gif, показывающий осмотр с использованием пользовательского интерфейса All Animations.

Создание аннотаций для нескольких предпросмотров

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

Пользовательский интерфейс аннотаций с несколькими предварительным просмотром

Составление счетчиков рекомпозиции в Layout Inspector

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

Инспектор макетов теперь позволяет вам видеть, когда отдельные составные элементы в вашей иерархии макетов были перекомпонованы или пропущены. Эта информация отображается в реальном времени, пока вы взаимодействуете со своим приложением. Для начала убедитесь, что ваше приложение использует Compose 1.2.0-alpha03 или выше. Затем разверните свое приложение, как обычно.

Новая композиция и счетчик пропусков в Layout Inspector.

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

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

Включите композицию и счетчик пропусков в Layout Inspector.

Обновлен помощник по сопряжению с эмулятором Wear OS.

Начиная с Android Studio Dolphin Canary 3, помощник по сопряжению эмуляторов Wear OS имеет улучшенные функции, которые упрощают управление эмуляторами Wear и их подключение. Теперь вы можете сделать следующее:

  • См. раздел «Износ устройств» в диспетчере устройств .
  • Подключите несколько устройств Wear к одному виртуальному или физическому телефону.
  • Автоматически повторно подключайте ранее сопряженные устройства при их запуске. Android Studio теперь запоминает и повторно соединяет последнюю настроенную пару.

Чтобы использовать эти новые функции, убедитесь, что ваши эмуляторы телефона имеют уровень API 30 или выше и на них установлен Google Play Store. Кроме того, убедитесь, что ваши эмуляторы Wear имеют уровень API 28 или выше. Чтобы обновить образы системы для эмулируемых устройств до последних версий, выберите «Инструменты» > «Менеджер SDK» .

Дополнительную информацию см. в разделе Использование помощника по сопряжению с эмулятором Wear OS .

Обновлена ​​панель инструментов эмулятора Wear OS.

Начиная с Android Studio Dolphin Canary 2, для эмуляторов Wear с уровнем API 28 или выше на панели инструментов эмулятора теперь есть кнопки, имитирующие физические кнопки и общие действия на устройстве. Новые кнопки: кнопка 1 и кнопка 2 (кнопка 2 доступна только на уровне API 30 или выше), кнопка «Пальма» и кнопка «Наклон». Вот некоторые действия, которые вы можете выполнять с помощью новых кнопок эмулятора Wear:

  • Чтобы перевести устройство в режим окружающей среды, нажмите кнопку Palm.
  • Чтобы вернуть устройство к последнему экрану, на котором оно было перед режимом окружающей среды, нажмите кнопку «Наклон».

Дополнительные сведения см. в разделе Выполнение стандартных действий в эмуляторе .

Эмулятор Wear с кнопками, специфичными для Wear

Новые конфигурации запуска Wear OS

Были добавлены новые конфигурации запуска для быстрого запуска и отладки поверхностей, специфичных для Wear OS, таких как циферблаты, плитки и осложнения. Вы можете создать эти новые конфигурации в диалоговом окне «Конфигурации запуска/отладки» при запуске приложения.

Дополнительную информацию см. в разделе Конфигурации запуска/отладки Wear OS .

Новые конфигурации запуска WearOS

Новый логкат

Logcat был обновлен, чтобы упростить анализ, запрос и отслеживание журналов.

Новый форматтер

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

Новое форматирование журналов в Logcat.

Создать несколько окон Logcat

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

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

Создайте несколько окон logcat, используя разделения.

Переключение между пресетами просмотра

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

Скриншот переключения между различными режимами просмотра

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

Снимок экрана: новый синтаксис запроса с автозаполнением

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

  • PID для проекта локального приложения : package:mine
  • Конкретные значения :
    • package:<package-ID>
    • tag:<tag>
    • level:[VERBOSE | INFO | ASSERT |DEBUG | WARN | ERROR ]
  • Исключите определенное значение , предварив ключ знаком - :
    • -tag:<exclude-tag>
  • Используйте регулярные выражения с заданным ключом, поместив ~ после ключа:
    • tag~:<regular-expression-tag>
    • Объедините с тегом исключения: -tag~:<exclude-regular-expression-tag>

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

История запросов скриншотов с избранным

Отслеживайте журналы сбоев/перезапусков приложений.

Новый Logcat теперь упрощает отслеживание журналов вашего приложения при сбоях и перезапусках приложения, чтобы вы не пропустили важные журналы этих событий. Когда Logcat заметит, что процесс вашего приложения остановлен и перезапущен, вы увидите сообщение в выходных данных, например PROCESS ENDED и PROCESS STARTED , как показано ниже:

Скриншот перезапуска процесса в logcat

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

Управляемые устройства Gradle

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

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

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

Кроме того, в управляемых устройствах Gradle представлен новый тип устройств-эмуляторов, называемый устройствами автоматического тестирования (ATD), которые оптимизированы для повышения производительности при выполнении инструментальных тестов. В сочетании с поддержкой сегментирования тестов вы можете поэкспериментировать с разделением набора тестов на несколько экземпляров ATD, чтобы сократить общее время выполнения тестов. Дополнительные сведения об управляемых устройствах Gradle и связанных с ними функциях см. в разделе Масштабирование тестов с помощью управляемых устройств Gradle .

Поддержка R8 с использованием файлов сопоставления на основе смещений инструкций DEX.

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

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

Лямбды без гражданства больше не обесцвечиваются как одиночные элементы.

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

R8 позволяет избежать замедления проверки во время выполнения Android

Чтобы устранить проблемы с производительностью в средах выполнения Android (Dalvik и ART), в R8 (не D8) теперь представлены заглушки библиотек и структурированные вызовы библиотечных методов для библиотечных классов и методов, которые могут отсутствовать во время выполнения. Это устраняет многие проблемы с проверкой и повышает производительность во время выполнения. Эта функция всегда включена.

Поддержка API JDK-11 с очисткой API Java 8+.

При использовании зависимости coreLibraryDesugaring теперь поддерживается библиотека реализации на основе JDK-11. Дополнительную информацию смотрите в журнале изменений desugar_jdk_libs .

Выпуски патчей

Ниже приведен список выпусков исправлений в Android Studio Dolphin.

Android-студия Дельфин | Обновление 1 2021.3.1 (октябрь 2022 г.)

С выпуском патча 1 Android Studio Dolphin теперь поддерживает плагин Kotlin 1.7.20. Это незначительное обновление также включает следующие исправления ошибок:

Исправленные проблемы
Плагин Android Gradle
Запуск инструментальных тестов Android через gradle не позволяет правильно применить обессеривание
AGP 7.3.0 нарушает синхронизацию Gradle для проектов платформы Gradle
Дексер (D8)
Добавьте общедоступный API для разрешения конфликтов при слиянии DEX (чтобы bazel разрешил дублирование классов).
Импорт/синхронизация
Импорт проекта Gradle завершается сбоем после обновления с патча 2 «Бурундук» (2021.2.1)
Ресурсы
NPE в AarResourceRepositoryCache.createCachingData (AS Dolphin+)
Шринкер (R8)
Метаданные Kotlin не копируются при замене типов полей
Неожиданное преобразование неточного типа: TOP (все)
Gradle 7.3.0 вызывает ошибку сборки APK com.android.tools.r8.CompilationFailedException
Удалить мертвые конструкторы по умолчанию в режиме совместимости.
Конфликт с JetBrains Markdown
Поддержка ThreadLocal.withInitial(java.util.function.Supplier
AGP 7.3 генерирует dex для классов со сломанным конструктором
Неожиданная попытка определить, нуждается ли в обессеривании код, отличный от CF.
ктор VerifyError
Неопределенное значение, обнаруженное во время компиляции, выброшенное при обработке okio-jvm 3.2.0
Ошибка компиляции из объекта встраивания класса с косвенным экземпляром пользователей
java.lang.IllegalAccessError с R8 3.3.75