Android-студия Игуана | 2023.2.1 (февраль 2024 г.)

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

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

Ниже приведен список выпусков исправлений для Android Studio Iguana и плагина Android Gradle 8.3.

Android-студия Игуана | 2023.2.1, исправление 2 и AGP 8.3.2 (апрель 2024 г.)

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

Android-студия Игуана | Обновление 1 2023.2.1 и AGP 8.3.1 (март 2024 г.)

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

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

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

Интеграция системы контроля версий в App Quality Insights

App Quality Insights теперь позволяет переходить от трассировки стека Crashlytics к соответствующему коду — в тот момент, когда произошел сбой. AGP прикрепляет хэш-данные git commit к отчетам о сбоях, что помогает Android Studio перейти к вашему коду и показать, как все было в версии, в которой возникла проблема. При просмотре отчета о сбое в App Quality Insights вы можете перейти к строке кода в текущей проверке git или просмотреть разницу между текущей проверкой и версией вашей кодовой базы, вызвавшей сбой.

Чтобы интегрировать вашу систему контроля версий с App Quality Insights , вам необходимы следующие минимальные требования:

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

Котлин

android {
  buildTypes {
    getByName("debug") {
      vcsInfo {
        include = true
      }
    }
  }
}

классный

android {
  buildTypes {
    debug {
      vcsInfo {
        include true
      }
    }
  }
}

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

Просмотрите варианты сбоя Crashlytics в App Quality Insights

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

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

Чтобы помочь разработчикам создавать более адаптивные и доступные пользовательские интерфейсы в Jetpack Compose, Android Studio Iguana Canary 5 представила новый режим проверки пользовательского интерфейса в Compose Preview. Эта функция работает аналогично интеграции визуального анализа и проверки доступности для представлений. Когда вы активируете режим проверки пользовательского интерфейса Compose, Android Studio автоматически проверяет ваш пользовательский интерфейс Compose и проверяет наличие проблем с адаптивностью и доступностью на экранах разных размеров, таких как растянутый текст на больших экранах или низкий цветовой контраст. Этот режим выделяет проблемы, обнаруженные в различных конфигурациях предварительного просмотра, и перечисляет их на панели проблем.

Попробуйте эту функцию сегодня, нажав кнопку «Проверка пользовательского интерфейса». в Preview Compose и отправьте свой отзыв :

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

Известные проблемы режима проверки пользовательского интерфейса:

  • Выбранная проблема на панели проблем может потерять фокус
  • «Правило подавления» не работает
Активирован режим проверки пользовательского интерфейса Compose с подробной информацией на панели проблем.

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

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

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

Мастер модуля «Базовые профили»

Начиная с Android Studio Iguana, вы можете создавать базовые профили для своего приложения с помощью шаблона генератора базовых профилей в мастере создания новых модулей ( Файл > Создать > Новый модуль ).

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

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

Проверка изменений конфигурации с помощью API устройства Espresso

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

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

  • Android Studio Iguana или выше
  • Плагин Android Gradle 8.3 или выше
  • Эмулятор Android 33.1.10 или выше
  • Виртуальное устройство Android с API уровня 24 или выше.

Настройте свой проект для API устройства Espresso.

Чтобы настроить проект для поддержки API устройств Espresso, выполните следующие действия:

  1. Чтобы тест мог передавать команды на тестовое устройство, добавьте разрешения INTERNET и ACCESS_NETWORK_STATE в файл манифеста в исходном наборе androidTest :

      <uses-permission android:name="android.permission.INTERNET" />
      <uses-permission android:name="android.permissions.ACCESS_NETWORK_STATE" />
  2. Включите экспериментальный флаг enableEmulatorControl в файле gradle.properties :

      android.experimental.androidTest.enableEmulatorControl=true
  3. Включите опцию emulatorControl в скрипте сборки на уровне модуля:

    Котлин

      testOptions {
        emulatorControl {
          enable = true
        }
      }

    классный

      testOptions {
        emulatorControl {
          enable = true
        }
      }
  4. В скрипте сборки на уровне модуля импортируйте библиотеку Espresso Device в свой проект:

    Котлин

      dependencies {
        androidTestImplementation("androidx.test.espresso:espresso-device:3.6.1")
      }

    классный

      dependencies {
        androidTestImplementation 'androidx.test.espresso:espresso-device:3.6.1'
      }

Тестирование на общие изменения конфигурации

API устройства Espresso имеет несколько ориентаций экрана и сворачиваемые состояния, которые можно использовать для имитации изменений конфигурации устройства.

Тест на поворот экрана

Вот пример того, как проверить, что происходит с вашим приложением при повороте экрана устройства:

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

      import androidx.test.espresso.device.action.ScreenOrientation
      import androidx.test.espresso.device.rules.ScreenOrientationRule
      ...
      @get:Rule
      val screenOrientationRule: ScreenOrientationRule = ScreenOrientationRule(ScreenOrientation.PORTRAIT)
  2. Создайте тест, который устанавливает альбомную ориентацию устройства во время выполнения теста:

      @Test
      fun myRotationTest() {
        ...
        // Sets the device to landscape orientation during test execution.
        onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE)
        ...
      }
  3. После поворота экрана убедитесь, что пользовательский интерфейс адаптируется к новому макету, как ожидалось:

      @Test
      fun myRotationTest() {
        ...
        // Sets the device to landscape orientation during test execution.
        onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE)
        composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed()
        composeTestRule.onNodeWithTag("BottomBar").assertDoesNotExist()
      }

Тест на раскрытие экрана

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

  1. Сначала протестируйте устройство в сложенном состоянии, вызвав onDevice().setClosedMode() . Убедитесь, что макет вашего приложения адаптируется к ширине компактного экрана:

      @Test
      fun myUnfoldedTest() {
        onDevice().setClosedMode()
        composeTestRule.onNodeWithTag("BottomBar").assetIsDisplayed()
        composeTestRule.onNodeWithTag("NavRail").assetDoesNotExist()
        ...
      }
  2. Чтобы перейти в полностью развернутое состояние, вызовите onDevice().setFlatMode() . Убедитесь, что макет приложения адаптируется к расширенному классу размеров:

      @Test
      fun myUnfoldedTest() {
        onDevice().setClosedMode()
        ...
        onDevice().setFlatMode()
        composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed()
        composeTestRule.onNodeWithTag("BottomBar").assetDoesNotExist()
      }

Укажите, какие устройства нужны для ваших тестов

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

Например, чтобы указать, что тест следует запускать только на устройствах, поддерживающих развертывание в плоскую конфигурацию, добавьте в тест следующий код @RequiresDeviceMode :

@Test
@RequiresDeviceMode(mode = FLAT)
fun myUnfoldedTest() {
  ...
}