Android-студия «Ежик» | 2023.1.1 (ноябрь 2023 г.)

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

Обновление платформы IntelliJ IDEA 2023.1

Android Studio Hedgehog включает обновления IntelliJ IDEA 2023.1, которые улучшают работу Studio IDE. Подробности об изменениях см. в примечаниях к выпуску IntelliJ IDEA 2023.1 .

Анализируйте показатели Android Vitals в App Quality Insights

App Quality Insights теперь включает данные Android Vitals , поэтому вам будет проще получить доступ к основным показателям, собранным Google Play, и улучшить взаимодействие с пользователем. Используйте Android Vitals для решения проблем, связанных со стабильностью приложения, и повышения качества вашего приложения в Google Play.

Вы можете просматривать проблемы Android Vitals, фильтровать их и переходить от трассировки стека к написанию кода в окне инструмента App Quality Insights . Чтобы начать, выполните следующие действия:

  1. Войдите в свою учетную запись разработчика в Android Studio, используя значок профиля. в конце панели инструментов.
  2. Откройте App Quality Insights , щелкнув окно инструмента в Android Studio или выбрав «Просмотр» > «Окна инструментов» > «App Quality Insights» .
  3. Откройте вкладку Android Vitals в App Quality Insights .

Разные цифры между Android Vitals и Crashlytics

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

  • Play фиксирует сбои, начиная с момента загрузки, тогда как Crashlytics фиксирует сбои, которые происходят после инициализации Crashlytics SDK.
  • Если пользователь отказывается от отправки отчетов о сбоях при покупке нового телефона, об этих сбоях не сообщается в Play; однако Crashlytics выявляет сбои на основе собственной политики конфиденциальности приложения.

Новый профилировщик мощности

Начиная с Android Studio Hedgehog, Power Profiler показывает энергопотребление на устройствах. Вы можете просмотреть эти новые данные в мониторе Power Rails на устройстве (ODPM). ODPM сегментирует данные по подсистемам, называемым Power Rails . Список поддерживаемых подсистем см. в разделе Профилируемые шины питания .

System Trace записывает и отображает данные о энергопотреблении. Это часть профилировщика ЦП. Эти данные помогут вам визуально соотнести энергопотребление устройства с действиями, происходящими в вашем приложении. Power Profiler позволяет визуализировать эти данные.

Новый профилировщик мощности

Чтобы просмотреть данные нового Power Profiler, выполните трассировку системы на устройстве Pixel 6+:

  1. Выберите «Просмотр» > «Окна инструментов» > «Профилировщик» .
  2. Щелкните в любом месте временной шкалы ЦП , чтобы открыть профилировщик ЦП и начать трассировку системы.

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

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

Live Edit обновлен ярлык ручного режима

Live Edit в Android Studio Hedgehog включает новый ярлык для ручного режима ( Push Manually ): Control+\ ( Command+\ для macOS). Ручной режим полезен в ситуациях, когда вы хотите иметь точный контроль над развертыванием обновлений в работающем приложении. Например, если вы вносите крупномасштабные изменения в файл и не хотите, чтобы какое-либо промежуточное состояние отражалось на устройстве. Вы можете выбрать между «Нажать вручную» и «Нажать вручную при сохранении» в настройках Live Edit или с помощью индикатора пользовательского интерфейса Live Edit. Для получения дополнительной информации смотрите видеоклип в Live Edit для Jetpack Compose .

Создание шаблонов мультипревью

androidx.compose.ui:ui-tooling-preview 1.6.0-alpha01+ представляет новые шаблоны API Multipreview : @PreviewScreenSizes , @PreviewFontScales , @PreviewLightDark и @PreviewDynamicColors , так что с помощью одной единственной аннотации вы можете просмотреть общий интерфейс Compose сценарии.

В Android Studio Hedgehog в Compose Preview появился новый режим галереи, который позволяет сосредоточиться на одном предварительном просмотре за раз и сэкономить ресурсы на рендеринге. Мы рекомендуем использовать режим галереи, когда вам нужно переработать пользовательский интерфейс вашего приложения, и переключаться на другие режимы, например, «Сетка» или «Список», когда вам нужно просмотреть варианты пользовательского интерфейса.

Составьте информацию о состоянии в отладчике

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

Зеркальное отображение устройств

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

Зеркальное отображение устройств всегда доступно, если к компьютеру подключены устройства с включенной отладкой по USB или беспроводной сети. Вы можете запускать и останавливать зеркалирование с помощью окна «Работающие устройства» или диспетчера устройств ( «Просмотр» > «Инструменты Windows» > «Диспетчер устройств» ). Вы также можете настроить время активации зеркального отображения устройства в его настройках ( Настройки > Инструменты > Зеркальное отображение устройства ).

Пользовательский интерфейс запущенных устройств

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

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

2023-06-01 15:32:22,675 [  56094]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - Too many video encoder errors:
2023-06-01 15:32:22,676 [  56095]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - encoder: c2.android.vp8.encoder
2023-06-01 15:32:22,676 [  56095]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - mime type: video/x-vnd.on2.vp8
2023-06-01 15:32:22,676 [  56095]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - max resolution: 640x640
2023-06-01 15:32:22,676 [  56095]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - min resolution: 2x2
2023-06-01 15:32:22,676 [  56095]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - alignment: 2x2
2023-06-01 15:32:22,676 [  56095]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - max frame rate: 960
2023-06-01 15:32:22,676 [  56095]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - max frame rate for 288x640: 960
2023-06-01 15:32:22,870 [  56289]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - max bitrate: 20000000
2023-06-01 15:32:22,871 [  56290]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - terminated with code 1

Уведомление о конфиденциальности

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

Аппаратная переадресация ввода

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

Управляйте устройствами непосредственно из окна «Работающие устройства».

Теперь вы можете запустить виртуальное устройство Android (AVD) или начать зеркалирование физического устройства прямо из окна «Работающие устройства» , щелкнув значок + и выбрав устройство. Чтобы остановить AVD или зеркалирование физического устройства, закройте вкладку устройства.

Раскрывающийся список устройств в разделе «Работающие устройства»

Встроенный инспектор макетов

Начиная с Android Studio Hedgehog Canary 2, вы можете запускать Инспектор макетов непосредственно в окне инструментов «Работающие устройства» . Эта экспериментальная функция экономит пространство экрана и помогает организовать рабочий процесс отладки пользовательского интерфейса в одном окне инструмента. Во встроенном режиме вы можете отображать иерархию представлений, проверять свойства каждого представления и получать доступ к другим общим функциям инспектора макетов. Чтобы получить доступ ко всему набору параметров, вам все равно необходимо запустить Инспектор макетов в отдельном окне ( Файл > Настройки > Экспериментальный > Инспектор макетов в Windows или Android Studio > Настройки > Экспериментальный > Инспектор макетов в macOS).

Ограничением встроенного инспектора макетов является то, что 3D-режим доступен только в снимках .

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

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

Новый пользовательский интерфейс для Android Studio придает Studio IDE более современный и понятный вид. На данный момент мы прислушались к вашим отзывам и устранили проблемы, связанные со следующими функциями Android Studio Hedgehog:

  • Компактный режим
  • Поддержка разделения по вертикали и горизонтали.
  • Вкладки проекта для macOS
  • Исправления в режиме без отвлечений
  • Расширенные настройки для постоянного отображения действий в окне инструментов

Обновления Ассистента обновления SDK

Помощник по обновлению SDK предоставляет пошаговый мастер, который поможет вам с обновлениями targetSdkVersion . Вот обновления помощника по обновлению SDK в Android Studio Hedgehog:

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

Отключить оптимизацию сборки только для целевого уровня API

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

[Только для Windows] Минимизируйте влияние антивирусного программного обеспечения на скорость сборки.

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

Проекты Eclipse Android Development Tool больше не поддерживаются.

Android Studio Hedgehog и более поздние версии не поддерживают импорт проектов Eclipse ADT. Вы по-прежнему можете открывать эти проекты, но они больше не распознаются как проекты Android. Если вам нужно импортировать проект такого типа, вы можете использовать более раннюю версию Android Studio . Если данная версия Android Studio не может импортировать ваш проект, вы можете попробовать использовать еще более раннюю версию. После преобразования проекта в проект Android с использованием более ранней версии Android Studio вы можете использовать Помощник по обновлению AGP для работы над этим проектом с использованием последней версии Android Studio.

Используйте устройства Firebase Test Lab с устройствами, управляемыми Gradle.

При использовании AGP 8.2.0-alpha03 или более поздней версии вы можете запускать автоматизированные инструментальные тесты в любом масштабе на устройствах Firebase Test Lab при использовании устройств, управляемых Gradle . Test Lab позволяет запускать тесты одновременно на широком спектре устройств Android, как физических, так и виртуальных. Эти тесты проводятся в удаленных центрах обработки данных Google. Благодаря поддержке устройств, управляемых Gradle (GMD), система сборки теперь может полностью управлять выполнением тестов на этих устройствах Test Lab на основе конфигураций в файлах Gradle вашего проекта.

Начало работы с устройствами Firebase Test Lab под управлением Gradle

Следующие шаги описывают, как начать использовать устройства Firebase Test Lab с GMD. Обратите внимание, что в этих шагах используется интерфейс командной строки gcloud для предоставления учетных данных пользователя, что может не применяться ко всем средам разработки. Дополнительные сведения о том, какой процесс аутентификации использовать для ваших нужд, см. в разделе Как работают учетные данные приложения по умолчанию .

  1. Чтобы создать проект Firebase, перейдите в консоль Firebase . Нажмите «Добавить проект» и следуйте инструкциям на экране, чтобы создать проект. Запомните свой идентификатор проекта.

  2. Чтобы установить Google Cloud CLI, выполните действия, описанные в разделе Установка gcloud CLI .
  3. Настройте локальную среду.
    1. Ссылка на ваш проект Firebase в gcloud:
        gcloud config set project FIREBASE_PROJECT_ID
        
    2. Разрешите использование ваших учетных данных пользователя для доступа к API. Мы рекомендуем авторизоваться, передав JSON-файл сервисной учетной записи в Gradle с помощью DSL в скрипте сборки на уровне модуля:

      Котлин

        firebaseTestLab {
          ...
          serviceAccountCredentials.set(file(SERVICE_ACCOUNT_JSON_FILE))
        }
        

      классный

        firebaseTestLab {
          ...
          serviceAccountCredentials = file(SERVICE_ACCOUNT_JSON_FILE)
        }
        

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

        gcloud auth application-default login
        
    3. Необязательно: добавьте свой проект Firebase в качестве проекта квоты. Этот шаг необходим только в том случае, если вы превысите бесплатную квоту для Test Lab .

        gcloud auth application-default set-quota-project FIREBASE_PROJECT_ID
        
  4. Включите необходимые API.

    На странице библиотеки API консоли Google Developers включите Cloud Testing API и Cloud ToolResults API, введя имена этих API в поле поиска в верхней части консоли, а затем нажав «Включить API» на странице обзора для каждого API.

  5. Настройте свой Android-проект.

    1. Добавьте плагин Firebase Test Lab в скрипт сборки верхнего уровня:

      Котлин

        plugins {
          ...
          id("com.google.firebase.testlab") version "0.0.1-alpha05" apply false
        }
        

      классный

        plugins {
          ...
          id 'com.google.firebase.testlab' version '0.0.1-alpha05' apply false
        }
        
    2. Включите пользовательские типы устройств в файле gradle.properties :

        android.experimental.testOptions.managedDevices.customDevice=true
        
    3. Добавьте плагин Firebase Test Lab в скрипт сборки на уровне модуля:

      Котлин

        plugins {
          ...
          id "com.google.firebase.testlab"
        }
        

      классный

        plugins {
          ...
          id 'com.google.firebase.testlab'
        }
        

    Создание и запуск тестов на устройстве Firebase Test Lab, управляемом Gradle.

    Вы можете указать устройство Firebase Test Lab, которое Gradle будет использовать для тестирования вашего приложения, в сценарии сборки на уровне модуля. В следующем примере кода создается Pixel 3 с API-уровнем 30 в качестве устройства Test Lab, управляемого Gradle, под названием ftlDevice . Блок firebaseTestLab {} доступен, когда вы применяете плагин com.google.firebase.testlab к своему модулю. Минимальная поддерживаемая версия плагина Android Gradle — 8.2.0-alpha01.

    Котлин

    firebaseTestLab {
      managedDevices {
        create("ftlDevice") {
          device = "Pixel3"
          apiLevel = 30
        }
      }
      ...
    }
    

    классный

    firebaseTestLab {
      managedDevices {
        ftlDevice {
          device = "Pixel3"
          apiLevel = 30
        }
      }
      ...
    }
    

    Чтобы запустить тесты с использованием настроенных вами устройств Test Lab, управляемых Gradle, используйте следующую команду. device-name — это имя устройства, которое вы настроили в сценарии сборки Gradle, например ftlDevice , а BuildVariant — это вариант сборки вашего приложения, которое вы хотите протестировать. Обратите внимание, что Gradle не запускает тесты параллельно и не поддерживает другие конфигурации Google Cloud CLI для устройств Test Lab.

    В Windows:

    gradlew device-nameBuildVariantAndroidTest
    

    В Linux или macOS:

    ./gradlew device-nameBuildVariantAndroidTest
    

    Выходные данные теста включают путь к HTML-файлу, содержащему отчет о тестировании. Вы также можете импортировать результаты тестов в Android Studio для дальнейшего анализа, нажав «Выполнить» > «История тестов» в IDE.

    Создание и запуск тестов на группе устройств

    Чтобы масштабировать тестирование, добавьте несколько устройств Firebase Test Lab, управляемых Gradle, в группу устройств, а затем запустите тесты на всех из них с помощью одной команды. Предположим, у вас есть несколько устройств, настроенных следующим образом:

    firebaseTestLab {
      managedDevices {
        create("GalaxyS23Ultra") { ... }
        create("GalaxyZFlip3") { ... }
        create("GalaxyZFold3") { ... }
        create("GalaxyTabS2") { ... }
      }
    }
    

    Чтобы добавить их в группу устройств под названием samsungGalaxy , используйте блок groups {} :

    firebaseTestLab {
      managedDevices {...}
    }
    
    android {
      ...
      testOptions {
        managedDevices {
          groups {
            create("samsungGalaxy") {
              targetDevices.add(devices["GalaxyS23Ultra"])
              targetDevices.add(devices["GalaxyZFlip3"])
              targetDevices.add(devices["GalaxyZFold3"])
              targetDevices.add(devices["GalaxyTabS3"])
            }
          }
        }
      }
    }
    

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

    В Windows:

    gradlew group-nameGroupBuildVariantAndroidTest
    

    В Linux или macOS:

    ./gradlew group-nameGroupBuildVariantAndroidTest
    

    Оптимизируйте тестовые прогоны с помощью интеллектуального сегментирования

    Тестирование на устройствах Test Lab, управляемых Gradle, теперь поддерживает интеллектуальное сегментирование. Интеллектуальное сегментирование автоматически распределяет ваши тесты по сегментам, так что каждый сегмент выполняется примерно одинаковое время, что сокращает усилия по ручному распределению и общую продолжительность выполнения теста. Интеллектуальное сегментирование использует историю тестов или информацию о том, сколько времени потребовалось для предыдущего выполнения тестов, для оптимального распределения тестов. Обратите внимание, что для использования интеллектуального сегментирования вам нужна версия 0.0.1-alpha05 плагина Gradle для Firebase Test Lab.

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

    firebaseTestLab {
      ...
      testOptions {
        targetedShardDurationMinutes = 2
      }
    }
    

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

    Обновлен DSL для устройств Firebase Test Lab, управляемых Gradle.

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

    firebaseTestLab {
      ...
    
      /**
       * A path to a JSON file that contains service account credentials to access to
       * a Firebase Test Lab project.
       */
      serviceAccountCredentials.set(file("your_service_account_credentials.json"))
    
    
      testOptions {
        fixture {
          /**
           * Whether to grant permissions on the device before tests begin.
           * Available options are "all" or "none".
           *
           * Default value is "all".
           */
          grantedPermissions = "all"
    
          /**
           * Map of files to push to the device before starting the test.
           *
           * The key is the location on the device.
           * The value is the location of the file, either local or in Google Cloud.
           */
          extraDeviceFiles["/sdcard/dir1/file1.txt"] = "local/file.txt"
          extraDeviceFiles["/sdcard/dir2/file2.txt"] = "gs://bucket/file.jpg"
    
          /**
           * The name of the network traffic profile.
           *
           * Specifies network conditions to emulate when running tests.
           *
           * Default value is empty.
           */
          networkProfile = "LTE"
        }
    
        execution {
          /**
           * The maximum time to run the test execution before cancellation,
           * measured in minutes. Does not include the setup or teardown of device,
           * and is handled server-side.
           *
           * The maximum possible testing time is 45 minutes on physical devices
           * and 60 minutes on virtual devices.
           *
           * Defaults to 15 minutes.
           */
           timeoutMinutes = 30
    
          /**
           * Number of times the test should be rerun if tests fail.
           * The number of times a test execution should be retried if one
           * or more of its test cases fail.
           *
           * The max number of times is 10.
           *
           * The default number of times is 0.
           */
          maxTestReruns = 2
    
          /**
           * Ensures only a single attempt is made for each execution if
           * an infrastructure issue occurs. This doesn't affect `maxTestReruns`.
           * Normally, two or more attempts are made by Firebase Test Lab if a
           * potential infrastructure issue is detected. This is best enabled for
           * latency sensitive workloads. The number of execution failures might be
           * significantly greater with `failFast` enabled.
           *
           * Defaults to false.
           */
          failFast = false
    
          /**
           * The number of shards to split the tests across.
           * 
           * Default to 0 for no sharding.
           */
          numUniformShards = 20
    
          /**
          * For smart sharding, the target length of time each shard should takes in
          * minutes. Maxes out at 50 shards for physical devices and 100 shards for
          * virtual devices.
          *
          * Only one of numUniformShards or targetedShardDurationMinutes can be set.
          *
          * Defaults to 0 for no smart sharding.
          */
          targetedShardDurationMinutes = 15
        }
    
        results {
          /**
           * The name of the Google storage bucket to store the test results in.
           *
           * If left unspecified, the default bucket is used.
           *
           * Please refer to Firebase Test Lab permissions for required permissions
           * for using the bucket.
           */
          cloudStorageBucket = "bucketLocationName"
    
          /**
           * Name of test results for the Firebase console history list.
           * All tests results with the same history name are grouped
           * together in the Firebase console in a time-ordered test history list.
           *
           * Defaults to the application label in the APK manifest in Flank/Fladle.
           */
          resultsHistoryName = "application-history"
    
          /**
           * List of paths to copy from the test device's storage to the test
           * results folder. These must be absolute paths under /sdcard or
           * /data/local/tmp.
           */
          directoriesToPull.addAll(
            "/sdcard/path/to/something"
          )
    
          /**
           * Whether to enable video recording during the test.
           *
           * Disabled by default.
           */
          recordVideo = false
    
          /**
           * Whether to enable performance metrics. If enabled, monitors and records
           * performance metrics such as CPU, memory, and network usage.
           *
           * Defaults to false.
           */
          performanceMetrics = true
        }
      }
    }