Android Studio Iguana | 2023.2.1

Android Studio は Android 開発用の公式 IDE であり、Android アプリの構築に必要なものがすべて含まれています。

このページでは、Stable チャンネルの最新バージョンである Android Studio Iguana の新機能と改善点を紹介します。ダウンロードはこちらから行うことができます。更新する場合は、Android Studio 内で [Help] > [Check for updates](macOS では [Android Studio] > [Check for updates])を選択してください。

このバージョンの Android Studio で修正された項目については、クローズされた問題をご覧ください。

旧バージョンの Android Studio のリリースノートについては、Android Studio の過去のリリースをご覧ください。

今後リリースされる機能や改良点の早期アクセスについては、Android Studio のプレビュー ビルドのページをご覧ください。

Android Studio で問題が発生した場合は、既知の問題またはトラブルシューティングのページをご確認ください。

Android Gradle プラグインと Android Studio の互換性

Android Studio ビルドシステムは Gradle をベースにしており、Android Gradle プラグイン(AGP)は Android アプリのビルドに役立つ複数の機能を追加します。次の表に、Android Studio の各バージョンに必要な AGP のバージョンを示します。

Android Studio バージョン 必要な AGP バージョン
クラゲ | 2023.3.1 3.2 ~ 8.4
Iguana | 2023.2.1 3.2-8.3
Hedgehog | 2023.1.1 3.2-8.2
Giraffe | 2022.3.1 3.2-8.1
Flamingo | 2022.2.1 3.2-8.0
Electric Eel | 2022.1.1 3.2-7.4

古いバージョン

Android Studio バージョン 必要な AGP バージョン
Dolphin | 2021.3.1 3.2-7.3
Chipmunk | 2021.2.1 3.2-7.2
Bumblebee | 2021.1.1 3.2-7.1
Arctic Fox | 2020.3.1 3.1-7.0

Android Gradle プラグインの新機能については、Android Gradle プラグインのリリースノートをご覧ください。

Android API レベルをサポートするツールの最小バージョン

特定の API レベルをサポートする Android Studio と AGP には最小バージョンがあります。プロジェクトの targetSdk または compileSdk で必要とされるバージョンよりも低いバージョンの Android Studio または AGP を使用すると、予期しない問題が発生する可能性があります。Android OS のプレビュー版をターゲットとするプロジェクトでは、最新プレビュー版の Android Studio と AGP の使用をおすすめします。Android Studio のプレビュー版を安定版と一緒にインストールできます。

Android Studio と AGP の最小バージョンは次のとおりです。

API レベル Android Studio の最小バージョン AGP の最小バージョン
VanillaIceCream のプレビュー クラゲ | 2023.3.1 8.4
34 Hedgehog | 2023.1.1 8.1.1
33 Flamingo | 2022.2.1 7.2

Android Studio Iguana の新機能は次のとおりです。

パッチリリース

Android Studio Iguana と Android Gradle プラグイン 8.3 のパッチリリースを以下に示します。

Android Studio Iguana | 2023.2.1 パッチ 1 と AGP 8.3.1(2024 年 3 月)

このマイナー アップデートには、こちらのバグの修正が含まれています。

App Quality Insights でのバージョン管理システムの統合

App Quality Insights を使用すると、Crashlytics スタック トレースからクラッシュが発生した時点で関連するコードに移動できるようになりました。AGP は、git commit ハッシュデータをクラッシュ レポートに添付します。これにより、Android Studio はコードに移動して、問題が発生したバージョンの状態を確認できます。App Quality Insights でクラッシュ レポートを表示すると、現在の Git チェックアウトのコード行に移動するか、現在のチェックアウトとクラッシュを生成したコードベースのバージョンの差分を表示できます。

バージョン管理システムを App Quality Insights と統合するには、次の最小要件を満たす必要があります。

デバッグ可能なビルドタイプにバージョン管理の統合を使用するには、モジュール レベルのビルドファイルで vcsInfo フラグを有効にします。リリース(デバッグ可能でない)ビルドでは、このフラグはデフォルトで有効になっています。

Kotlin

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

Groovy

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

アプリをビルドして Google Play に公開すると、IDE がスタック トレースから以前のバージョンのアプリにリンクするために必要なデータがクラッシュ レポートに含まれるようになりました。

App Quality Insights で Crashlytics クラッシュ バリアントを表示する

App Quality Insights を使用して、クラッシュの根本原因を分析するため、問題のバリアント別、または類似したスタック トレースを共有するイベントのグループ別にイベントを表示できるようになりました。クラッシュ レポートの各バリアントでイベントを表示するには、プルダウンからバリアントを選択します。すべてのバリアントの情報を集計するには、[すべて] を選択します。

Compose UI チェック

デベロッパーが Jetpack Compose でアダプティブで使いやすい UI を作成できるように、Android Studio Iguana Canary 5 に、Compose プレビューに新しい UI チェックモードが導入されました。この機能は、ビューのビジュアル lintユーザー補助機能チェックの統合と同様に機能します。Compose UI Check モードを有効にすると、Android Studio は Compose UI を自動的に監査し、大画面で引き伸ばされるテキストや色のコントラストが低いなど、さまざまな画面サイズにおけるアダプティブとユーザー補助の問題をチェックします。このモードでは、さまざまなプレビュー構成で見つかった問題がハイライト表示され、問題パネルに一覧表示されます。

Compose プレビューで UI チェックボタン をクリックし、フィードバックを送信して、この機能を今すぐお試しください。

[Compose UI Check mode] ボタンをクリックしてチェックを有効にします。

UI チェックモードの既知の問題:

  • 問題パネルで選択した問題はフォーカスを失う可能性があります
  • 「抑制ルール」が機能しない
Compose UI チェックモードが有効になり、問題パネルに詳細が表示されます。

Compose プレビューのプログレッシブ レンダリング

Android Studio Iguana Canary 3 では、Compose プレビューでプログレッシブ レンダリングが導入されています。プレビューのパフォーマンスを向上させる継続的な取り組みの一環として、範囲外のプレビューについては、使用メモリを節約するために意図的にレンダリング品質を下げています。

この機能は、1 つのファイルでより多くのプレビューを同時に処理できるようにすることで、プレビューのユーザビリティをさらに改善することを目的に開発されました。ぜひお試しいただき、フィードバックをお送りください

IntelliJ IDEA 2023.2 プラットフォームのアップデート

Android Studio Iguana には、Studio IDE のエクスペリエンスを向上させる IntelliJ IDEA 2023.2 アップデートが含まれています。変更の詳細については、IntelliJ IDEA 2023.2 リリースノートをご覧ください。

ベースライン プロファイル モジュール ウィザード

Android Studio Iguana 以降では、新しいモジュール ウィザード([File] > [New] > [New Module])でベースライン プロファイル ジェネレータ テンプレートを使用して、アプリのベースライン プロファイルを生成できます。

このテンプレートは、ベースライン プロファイルをサポートできるようにプロジェクトを設定します。新しいベースライン プロファイル Gradle プラグインを使用します。このプラグインは、1 つの Gradle タスクで、必要な方法でプロジェクトを設定するプロセスを自動化します。

このテンプレートでは、[Select Run/Debug Configuration] プルダウン リストからワンクリックでベースライン プロファイルを生成できる実行構成も作成します。

Espresso Device API を使用して構成変更に対するテストを行う

Espresso Device API を使用して、デバイスで一般的な構成変更(回転や画面の展開など)が発生したときにアプリをテストします。Espresso Device API を使用すると、このような構成変更を仮想デバイスでシミュレートしてテストを同期的に実行できるため、一度に 1 つの UI アクションまたはアサーションしか実行されないため、テスト結果の信頼性が向上します。詳しくは、Espresso で UI テストを作成する方法をご覧ください。

Espresso Device API を使用するには、次のものが必要です。

  • Android Studio Iguana 以降
  • Android Gradle プラグイン 8.3 以降
  • Android Emulator 33.1.10 以降
  • API レベル 24 以降を搭載した Android 仮想デバイス

Espresso Device API 用のプロジェクトをセットアップする

Espresso Device API をサポートするようにプロジェクトをセットアップする手順は次のとおりです。

  1. テストからテストデバイスにコマンドを渡すには、androidTest ソースセットのマニフェスト ファイルに INTERNET 権限と ACCESS_NETWORK_STATE 権限を追加します。

      <uses-permission android:name="android.permission.INTERNET" />
      <uses-permission android:name="android.permissions.ACCESS_NETWORK_STATE" />
  2. gradle.properties ファイルで enableEmulatorControl 試験運用版フラグを有効にします。

      android.experimental.androidTest.enableEmulatorControl=true
  3. モジュール レベルのビルド スクリプトで emulatorControl オプションを有効にします。

    Kotlin

      testOptions {
        emulatorControl {
          enable = true
        }
      }

    Groovy

      testOptions {
        emulatorControl {
          enable = true
        }
      }
  4. モジュール レベルのビルド スクリプトで、Espresso デバイス ライブラリをプロジェクトにインポートします。

    Kotlin

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

    Groovy

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

一般的な構成変更に対するテスト

Espresso Device API には複数の画面の向きと折りたたみ式状態があり、これらを使用してデバイス構成の変更をシミュレートできます。

画面の回転に対するテスト

デバイスの画面が回転したときにアプリがどのように動作するかをテストする方法の例を次に示します。

  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. 画面が回転したら、UI が想定どおりに新しいレイアウトに適応することを確認します。

      @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() {
  ...
}