Android Studio プレビュー版の新機能

このページでは、Android Studio プレビュー リリースで導入された新機能の一覧を示します。プレビュー ビルドでは、Android Studio の最新機能や改善された機能に早期アクセスできます。プレビュー版はこちらからダウンロードできます。Android Studio のプレビュー版の使用中に問題が発生した場合は、お知らせください。バグレポートは Android Studio の改善に役立てさせていただきます。

Android Studio プレビュー リリースの最新情報(各プレビュー リリースにおける重要な修正のリストなど)については、Android Studio ブログのリリース アップデート情報をご覧ください。

Android Studio の最新バージョン

次の表に、Android Studio の現行バージョンとそれぞれのチャンネルを示します。

バージョン チャンネル
Android Studio Hedgehog | 2023.1.1 安定版
Android Gradle プラグイン 8.2.2 安定版
Android Studio Iguana | 2023.2.1 ベータ版
Android Studio Jellyfish | 2023.3.1 Canary 版

Android Gradle プラグイン プレビューとの互換性

Android Studio の各プレビュー版は、対応する Android Gradle プラグイン(AGP)とともに公開されます。Studio のプレビュー版は、AGP の互換性のある安定版の AGP で動作するはずです。ただし、AGP のプレビュー版を使用している場合は、対応するプレビュー版の Studio を使用する必要があります(例: Android Studio Chipmunk Canary 7 と AGP 7.2.0-alpha07)。異なるバージョン(AGP 7.2.0-alpha07 を含む Android Studio Chipmunk ベータ版 1 など)を使用すると、同期が失敗し、対応する AGP バージョンへの更新を求めるメッセージが表示されます。

Android Gradle プラグイン API のサポート終了と削除の詳細なログについては、Android Gradle プラグイン API の更新をご覧ください。

Android Studio Iguana | 2023.2.1

Android Studio Iguana の新機能は次のとおりです。このバージョンの Android Studio で修正された内容については、クローズされた問題をご覧ください。

Studio Bot のご紹介

Studio Bot は Android 開発のコーディング コンパニオンです。これは、Android Studio の AI を活用した会話エクスペリエンスであり、Android 開発クエリに応答することで生産性を高めることができます。詳細については、Meet Studio Bot をご覧ください。

Android Studio をセーフモードで起動する

Android Studio Hedgehog に、Android Studio をセーフモードで起動する機能が導入されました。このモードは、特定の機能が動作しない場合や IDE 全体が起動できない状況(カスタム構成、環境変数、Android Studio と互換性のないプラグインなど)に遭遇した場合に有用です。

セーフモードを使用すると、IDE が一時的に起動可能な一連のデフォルト構成に戻されるため、そこからトラブルシューティングを行い、問題を特定して機能を復元できます。セーフモードでは、次のような操作を行って、機能が限定された Android Studio を開くことを試みます。

  • サードパーティ プラグインを無効にする
  • バンドルされた Kotlin プラグインを Studio に元々含まれていたバージョンに復元しました
  • studio.vmoptions ファイルなどで、構成を一時的にリセットする
  • 起動を妨げる可能性のある環境変数(JRE_HOMETMP など)を検証する
  • 必要に応じて JRE を互換性のあるバージョンに戻す

Android Studio をセーフモードで起動する手順は次のとおりです。

  1. セーフモード スクリプトを探します。
    • Windows の場合は、AndroidStudio/bin に移動して studio_safe.bat スクリプトを見つけます。
    • macOS の場合、Android Studio/Contents/bin に移動して studio_safe.sh スクリプトを見つけます。
    • Linux の場合は、android-studio/bin に移動して studio_safe.sh スクリプトを見つけます。
  2. スクリプトを実行します。コマンドラインを開き、「studio_safe.bat」(macOS または Linux の場合は studio_safe.sh)と入力して、Enter キーを押します。

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

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

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

バージョン管理の統合を使用するには、gradle.properties ファイルで android.enableVcsInfo フラグを有効にします。

android.enableVcsInfo=true

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

Compose UI チェック

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

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

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

  • 問題パネルで問題を選択すると、フォーカスが失われる可能性がある
  • 「抑制ルール」が機能しない

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

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

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

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

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

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

  • Android Studio Iguana の最新版 Canary 版
  • Android Gradle プラグイン 8.3 の最新のアルファ版
  • Android Emulator 33.1.10 以降
  • API レベル 24 以降を搭載した Android 仮想デバイス

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

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

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

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

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

    Kotlin

      testOptions {
        emulatorControl {
          enable = true
        }
      }
      

    Groovy

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

    Kotlin

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

    Groovy

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

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

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

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

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

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

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

Gradle バージョン カタログのサポート

Android Studio Giraffe では、TOML ベースの Gradle バージョン カタログのサポートが導入されています。これは、依存関係を 1 か所で管理し、モジュールまたはプロジェクト間で依存関係を共有するための機能です。Android Studio では、エディタの候補表示や [Project Structure] ダイアログとの統合により、バージョン カタログを簡単に構成できるようになりました。Gradle バージョン カタログに更新する方法については、ビルドをバージョン カタログに移行するをご覧ください。

コード補完とナビゲーション

Android Studio では、TOML ファイル形式のバージョン カタログを編集する場合、またはバージョン カタログからビルドファイルに依存関係を追加する場合に、コード補完を利用できます。コード補完を使用するには、Ctrl+Space キー(macOS では command+Space キー)を押します。また、Ctrl+b(macOS では command+b)を押すと、アプリの build.gradle ファイル内の依存関係参照からバージョン カタログ内で宣言されている場所にすばやく移動できます。

依存関係を追加する際のコード補完

[Project Structure] ダイアログとの統合

プロジェクトで、TOML ファイル形式で定義されたバージョン カタログを使用している場合は、Android Studio の [Project Structure] ダイアログの [Variables] ビュー([File] > [Project Structure] > [Variables])で、定義した変数を編集できます。バージョン カタログごとに、そのカタログの変数を一覧表示するプルダウンがあります。変数を編集するには、その値をクリックして上書きします。これらの変更を保存すると、それに応じて TOML ファイルが更新されます。

[Project Structure] ダイアログのバージョン カタログの変数

依存関係は、[Project Structure] ダイアログの [Dependencies] ビュー([File] > [Project Structure] > [Dependencies])で更新することもできます。[Project Structure] ダイアログを使用してバージョンを更新するには、編集するモジュールと依存関係に移動して、[Requested Version] フィールドを更新します。これらの変更を保存すると、それに応じて TOML ファイルが更新されます。依存関係のバージョンが変数を使用して定義されている場合、この方法でバージョンを直接更新すると、変数がハードコードされた値に置き換えられます。また、[Project Structure] ダイアログを使用するかどうかにかかわらず、ビルドファイルから依存関係を削除しても、バージョン カタログから依存関係は削除されません。

[Project Structure] ダイアログのバージョン カタログからの依存関係

既知の問題と制限事項

Android Studio での Gradle バージョン カタログのサポートに関する既知の問題と制限事項は次のとおりです。

Kotlin スクリプト ファイル内のプラグイン エイリアス宣言のハイライト表示でエラーが発生する

alias(libs.plugins.example) という形式のプラグイン宣言を追加すると、エディタにより libs の部分に赤の下線が追加されます。これは Gradle バージョン 8.0 以前における既知の問題であり、Gradle の今後のリリースで解決される予定です。

Android Studio は TOML 形式のバージョン カタログのみをサポートしています。

現在、Android Studio のコード補完、ナビゲーション、プロジェクト構造ダイアログのサポートは、TOML ファイル形式で定義されたバージョン カタログでのみ利用できます。ただし、settings.gradle ファイルにバージョン カタログを直接追加し、その依存関係をプロジェクトで使用することもできます。

Kotlin スクリプトを使用して記述したビルドファイルでは、Ctrl キーを押しながらクリック(macOS では Command キーを押しながらクリック)してバージョン カタログ内の依存関係定義に移動することはできません。

Firebase Assistant がビルド スクリプトに依存関係を直接追加する

Firebase Assistant は、バージョン カタログからではなく、ビルド スクリプトに依存関係を直接追加します。

「使用箇所の検索」機能はサポートされていません

ビルドファイルが KTS と Groovy のどちらにあるかにかかわらず、他のビルドファイルのバージョン カタログ変数の使用状況を検出することはまだサポートされていません。つまり、バージョン カタログの変数定義を Ctrl キーを押しながらクリック(macOS では command キーを押しながらクリック)しても、その変数が使用されているビルドファイルは作成されません。

[Project Structure] ダイアログに複合ビルドのカタログが表示されない

Android Studio の [Project Structure] ダイアログでは、ルートの gradle フォルダ内にある複数のカタログ ファイルが表示されますが、複合ビルドのカタログは表示されません。たとえば、アプリ用とコンポジット ビルド用の 2 つのカタログ ファイルがある場合、[Project Structure] ダイアログにはアプリカタログ ファイルのみが表示されます。複合ビルドを使用することもできますが、その TOML ファイルを直接編集する必要があります。

Android Studio の compileSdk バージョンのサポート

現在のバージョンの Android Studio でサポートされていない compileSdk がプロジェクトで使用されている場合、Android Studio は警告を表示します。可能であれば、プロジェクトで使用されている compileSdk をサポートするバージョンの Android Studio に移行することもおすすめします。Android Studio をアップグレードするには、AGP のアップグレードも必要になる場合があるので注意してください。プロジェクトで使用されている compileSdk が現在のバージョンの AGP でサポートされていない場合、[Build] ツール ウィンドウにも警告が表示されます。

SDK に関する追加の分析情報: ポリシーに関する問題

Android Studio では、Google Play SDK Index で Play ポリシー違反がある公開 SDK について、build.gradle.kts ファイルと build.gradle ファイル、[Project Structure] ダイアログに lint 警告が表示されます。Google Play ポリシーに違反する依存関係は、今後 Google Play Console に公開できなくなる可能性があるため、更新する必要があります。ポリシー違反の警告は、Android Studio によって表示される古いバージョンの警告を補足するものです。

Android Studio Jellyfish | 2023.3.1

Android Studio Jellyfish の新機能は次のとおりです。このバージョンの Android Studio で修正された内容については、クローズされた問題をご覧ください。

Android Studio のデバイス ストリーミングで実際のデバイスにアクセスする

Android Studio のデバイス ストリーミングを使用すると、Google の安全なデータセンターでホストされているリモートの物理的な Android デバイスに安全に接続できます。Firebase を活用すると、Google Pixel 8 Pro、Google Pixel Fold、一部の Samsung デバイスなど、実際のデバイスに対してアプリを迅速かつ簡単にテストできます。

Android Studio でデバイス ストリーミングを使用している様子を描いたアニメーション。

デバイスに接続すると、Android Studio を離れることなく、アプリのデプロイ、ディスプレイの表示、デバイスの操作(デバイスの回転や展開など)、その他 SSL 接続を介した直接 ADB 経由でデバイスを操作できます。デバイスの使用を終了すると、Google はすべてのデータをワイプし、別のデベロッパーが利用できるようにする前にデバイスを出荷時の設定にリセットします。

現在のオープン アルファ版では、Spark プランまたは Blaze プランのいずれかの Firebase プロジェクトで、デバイス ストリーミングを無料でご利用いただけます。まず、Android Studio からデベロッパー アカウントにログインし、Firebase プロジェクトを選択します。Firebase プロジェクトがない場合は、簡単に作成できます。詳しくは、Android Studio でのデバイス ストリーミングをご覧ください。

新しいログインフロー

デベロッパー アカウントで Android Studio にログインすると、App Quality Insights で Firebase Crashlytics と Android Vitals のレポートを表示したり、Android Studio のデバイス ストリーミングを使用して実際のリモート デバイスにアクセスしたり、Studio Bot を使用して高品質のコードを IDE から直接記述したりするなど、Google デベロッパー サービスを利用できます。

Android Studio Jellyfish を使用すると、アカウントの追加と管理が簡単になり、各機能に必要な権限のみを IDE に提供できます。開始するには、次のいずれかを行います。

  • 前述の機能のいずれかに移動し 画面の指示に沿って ログインして必要な権限を付与します
  • すでにログインしている場合は、[設定] > [設定] > [ツール] > [Google アカウント] に移動して、アカウントと権限を管理できます。

Compose UI チェックの新しい色覚異常チェック

Compose UI チェックには、新しいカラーブラインド シミュレーションとチェックが含まれており、すべてのユーザーが視覚的にアクセス可能なエクスペリエンスを作成できます。Compose プレビューから UI チェックモードに入るだけで、さまざまな種類のカラービジョンの欠陥で Compose UI を表示し、デザインが明確で使いやすい状態を維持できます。

Compose UI Check Colorblind の例

Gemini API テンプレートを使用して生成 AI アプリを作成する

Android Studio で Google AI SDK を使用して生成 AI を実装するアプリを作成できるようになりました。Android Studio の Gemini API テンプレートを使用すると、テキスト生成や画像認識に依存する機能など、AI を活用した機能をアプリに組み込んで、ユーザーの満足度を高めることができます。

使用を開始する方法については、Android Studio で初めての生成 AI アプリを作成するをご覧ください。

Android Gradle プラグインの動作変更

Android Gradle プラグイン 8.4.0-alpha04 以降では、Android ライブラリ プロジェクトを圧縮すると、圧縮されたプログラム クラスがプロジェクト間で公開するために公開されます。つまり、アプリが圧縮バージョンの Android ライブラリ サブプロジェクトに依存している場合、APK には圧縮された Android ライブラリ クラスが含まれます。APK 内に欠落しているクラスがある場合、ライブラリ保持ルールの調整が必要になることがあります。

AAR をビルドして公開する場合、ライブラリが依存しているローカル jar は圧縮されずに AAR に含まれます。つまり、コード圧縮ツールは実行されません。

以前の動作に戻すには、gradle.properties で android.disableMinifyLocalDependenciesForLibraries を設定し、バグを報告してください。AGP の今後のバージョンでは、このフラグが削除されます。

デバイスのミラーリングを使用して音声をリダイレクトする

Android Studio Jellyfish Canary 5 以降では、接続された実機からパソコンのスピーカーやヘッドフォンにオーディオをリダイレクトできます。オーディオ リダイレクトを使用すると、ヘッドフォンをパソコンに接続したまま、パソコンと接続済みのスマートフォンの両方で音声を聞くことができます。デバイス同士を手動で再接続する必要はありません。オーディオ リダイレクトを有効にするには、[Android Studio] > [Settings] > [Tools] > [Device Mirroring] に移動し、[Redirect Audio from local devices] を選択します。Android 12 以降を搭載した Firebase Test Lab デバイスでは、設定に関係なく常に音声がリダイレクトされることに注意してください。