Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

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

Android Studio 4.1 は、Stable チャンネルにリリース済みです。こちらからダウンロードできます。

Android Studio 4.2 は現在、Canary チャンネルと Dev チャンネルにリリースされています。

各リリースでの重要な修正のリストを含め、リリースに関する最新情報については、リリース アップデート情報もご覧ください。

プレビュー版 Android Studio の使用で問題が発生した場合は、お知らせください。ご提出いただいたバグレポートは、Android Studio の改善に役立てさせていただきます。

Android Studio 4.2

システム トレース: メモリとグラフィックの指標の改善

CPU Profiler で、アプリのパフォーマンスを分析するための新しい指標がシステム トレース機能に追加されました。

イベント テーブル

イベント テーブルは、[Analysis] ペインの右側に新しいタブで表示されます。このテーブルには、現在選択されているスレッドのすべてのトレース イベントが一覧表示されます。

システム トレース イベント テーブル

新しいトラックとトラック グループ

Android 9 以降を搭載したデバイスにデプロイされたアプリのトレースについて、システム トレースでより多くのデータを利用できるようになりました。

BufferQueue(Display セクション内)

この新しいトラックは、アプリのサーフェス BufferQueue(0、1 または 2)のバッファ数を示します。Android グラフィック コンポーネント間を移動する際、画像バッファの状態の把握に役立ちます。たとえば値が 2 の場合は、アプリがトリプル バッファされていることを意味します。その結果、入力レイテンシが長くなる可能性があります。

System Trace の Buffer Queue

CPU Frequency(CPU cores セクション内)

CPU スケジューリング データに加えて、コアごとの CPU 周波数も含まれます。これにより、各コアの働きを確認でき、どのコアが最新のモバイル プロセッサの「big」コアまたは「little」コアであるかを把握できます。

System Trace の CPU Frequency

Process Memory (RSS)

新しい [Process Memory (RSS)] には、アプリで現在使用されている物理メモリの量が表示されます。

System Trace の Process Memory (RSS)

Total

プロセスが現在使用している物理メモリの合計量です。これは Unix ベースのシステムでは「Resident Set Size」と呼ばれ、匿名割り当て(スワップ ファイルによってバックアップされたもの)、ファイル マッピング(1 ページずつメモリに読み込まれるファイル)、共有メモリ割り当て(複数のプロセスによってアクセスされ、さまざまなメカニズムによって割り当てられる)で使用される、すべてのメモリを合算したものです。

Resident Set Size は、Windows の Working Set Size と同等のものです。

Allocated

このカウンタは、プロセスの通常のメモリ割り当てで現在使用されている物理メモリの量を追跡します。割り当ては、匿名(特定のファイルによらない)と非公開(共有されていない)の両方です。

File Mappings

このカウンタは、プロセスが所有するファイル マッピングで使用されている物理メモリの量を追跡します。

Shared

このカウンタは、このプロセスとシステム内の他のプロセスとの間でメモリを共有するために使用されている物理メモリの量を追跡します。

コマンドライン ツールで R8 retrace を利用可能

コマンドライン ツールのバージョン 4.0 で利用できる R8 retrace は、難読化されたスタック トレースから元のスタック トレースを取得するためのスタンドアロン ツールです。

このパッケージは SDK Manager を使ってダウンロードできます。SDK Manager は R8 retrace を android_sdk/cmdline-tools にインストールします。または、スタンドアロンのコマンドライン ツール パッケージをダウンロードすることもできます。

使用方法については、ユーザーガイドの R8 retrace をご覧ください。

Layout Inspector の新しい更新アクション

Android Studio 4.0 で導入された Layout Inspector は、実行中のアプリの UI スタックをリアルタイムで検査できるように設計されました。しかし、特定の時点におけるアプリのレイアウトのスナップショットを検査したい場合や、リアルタイムで更新することによるアプリへのパフォーマンスへの影響を最小限に抑えたい場合など、Layout Inspector にアプリの状況をすぐには反映させたくないケースも考えられます。

ライブ アップデートを一時停止し、Layout Inspector でスクリーン キャプチャを更新します。

アプリから UI データのスナップショットを手動で読み込むには、まず [Live updates] オプションを無効にします。その後、Refresh ボタンをクリックすると、検査する UI スタックの新しいスナップショットを取得できます。Layout Inspector では、セッション間で [Live updates] を常に有効または無効にする設定を保持するようになりました。

Jetpack Compose 向けの Android Gradle プラグインのサポート

Android Gradle プラグイン 4.2 Canary 13 以降は、Jetpack Compose Compiler 1.0.0-alpha-04 以降のみがサポートされます。

AGP 用の Upgrade Assistant

Android Studio 4.2 Canary 5 以降は、Android Gradle プラグイン用の Upgrade Assistant により、プロジェクトの AGP バージョンを更新しやすくなります。

Android Gradle プラグインの Upgrade Assistant ダイアログ

既存の AGP アップグレード機能を基に構築されたこのツールは、プロジェクト全体のアップデートとリファクタリングをガイドします。また、アップデートのプレビューが含まれており、AGP アップグレードを実行する前に互換性を破る変更を防止するために役立ちます。

Upgrade Assistant で行う変更のプレビュー

Safe Args のサポート

Safe Args は、ナビゲーションや関連引数へのアクセスをタイプセーフに行うためのシンプルなオブジェクトとビルダークラスを生成する Gradle プラグインです。Android Studio 4.2 Canary 9 以降には、下記のとおり、Safe Args を扱う場合の特別なサポートがあります。

  • Directions、Args、各種ビルダークラスのオートコンプリート
  • Java と Kotlin 両方の Safe Args プラグインのサポート
  • ソースから XML へのナビゲーション

Layout Editor のユーザー補助検証ツール

Android Studio が Android ユーザー補助機能テスト フレームワークと統合され、レイアウト内でユーザー補助機能の問題を発見できるようになりました。Layout Editor を使用する場合、Accessibility Scanner ユーザー補助検証ツールのボタン ボタンをクリックして検証ツールを起動します。このツールには、コンテンツの説明が欠落しているなど、よくある問題を解決するための修正候補も表示されます。

ユーザー補助検証ツールは Canary 8 以降で利用できます。

Android Studio のユーザー補助検証ツール

Database Inspector

クエリエディタの改善

Database Inspector に、カスタム SQL ステートメントの作成と実行に役立つ改善が行われました。Database Inspector を開いて [New query] タブを開くと、以下に示すように、クエリを作成してフォーマットするためのサイズ変更可能なエディタ サーフェスが大きく表示されます。

DB Inspector エディタ

また、以前のクエリの履歴も表示できるようになりました。Show query history Show query history ボタン ボタンをクリックすると、現在選択されているデータベースに対して以前実行されたクエリのリストが表示されます。リスト内のクエリをクリックするとエディタにクエリ全体のプレビューが表示され、Enter キーを押すとエディタにコピーされます。[Run] をクリックするとステートメントが実行されます。

クエリエディタでコマンドを実行

オフライン モード

以前のバージョンの Android Studio では、Database Inspector の使用中にアプリのプロセスから切断すると、Database Inspector とそのデータが閉じられていました。Android Studio 4.2 Canary 8 以降では、プロセスが切断されてもアプリのデータベースを検査し続ける機能が追加され、クラッシュ後にアプリを簡単にデバッグできるようになりました。

切断が発生すると、Database Inspector はデータベースをダウンロードして、オフライン モードで利用できるようにします。オフラインの場合はテーブルを開いてクエリを実行できます。

ライブアプリ プロセスに再接続すると Database Inspector はライブモードに戻り、デバイス上のデータしか表示されないことにご注意ください。つまり、オフライン プロセスで表示されるデータは、アプリプロセスに再接続すると保持されません。このため Database Inspector は、オフライン モードでは変更ステートメントの編集や実行ができません。

機能モジュールの新しい removable 設定

Android Gradle プラグイン 4.2 は bundletool 1.0.0 を使用しており、機能モジュールを使用したアプリでの動作が変更されています。明示的に dist:removable とマークされていない、dist:install-time と指定された機能モジュールは、デフォルトでは removable ではなくなります。この新しい設定により、インストール時のモジュールと基本モジュールの融合が最適化され、一部のアプリのパフォーマンスが改善される可能性があります。

この新しい設定の詳細については、機能モジュールのマニフェストのドキュメントにある dist:removable タグのドキュメントをご覧ください。

このセクションでは、Android Studio 4.2 の新機能や変更内容の概要について説明します。

Android Gradle プラグイン 4.2

gradle.properties ファイルでの動作の変更

AGP 4.2 以降では、サブプロジェクトから Gradle プロパティをオーバーライドできなくなりました。つまり、ルート プロジェクトではなくサブプロジェクト内の gradle.properties ファイルでプロパティを宣言すると、無視されます。

たとえば以前のリリースでは、AGP は projectDir/gradle.propertiesprojectDir/app/gradle.propertiesprojectDir/library/gradle.properties などから値を読み取っていました。アプリ モジュールでは、同じ Gradle プロパティが projectDir/gradle.propertiesprojectDir/app/gradle.properties の両方に存在する場合、projectDir/app/gradle.properties からの値が優先されていました。

AGP 4.2 ではこの動作が変更され、AGP はサブプロジェクトの gradle.properties からは値を読み込みません(例: projectDir/app/gradle.properties)。この変更は、新しい Gradle の動作を反映しており、構成のキャッシュに対応しています。

gradle.properties ファイルの値の設定については、Gradle のドキュメントをご覧ください。

新しい JVM リソース コンパイラ

Android Gradle プラグイン 4.2 ツールの新しい JVM リソース コンパイラは、AAPT2 リソース コンパイラの一部を置き換えるため、特に Windows マシンでのビルド パフォーマンスが改善される可能性があります。

Canary 7 リリース以降では、新しい JVM リソース コンパイラがデフォルトで有効になります。

v3 と v4 の署名のサポート

Android Gradle プラグイン 4.2 で、APK v3APK v4 の署名形式がサポートされるようになりました。ビルドでこれらの形式のいずれかまたは両方を有効にするには、モジュール レベルの build.gradle または build.gradle.kts ファイルに次のプロパティを追加します。

Kotlin

// build.gradle.kts

android {
   ...
   signingConfigs {
      config {
          ...
          enableV3Signing(true)
          enableV4Signing(true)
      }
   }
}

Groovy

// build.gradle

android {
  ...
  signingConfigs {
    config {
        ...
        enableV3Signing true
        enableV4Signing true
    }
  }
}

APK v4 署名を使用すると、Android 11 で ADB の増分 APK インストールを使用して、サイズの大きな APK を迅速にデプロイできます。この新しいフラグでは、デプロイ プロセスで APK 署名の手順が考慮されます。

Jetpack Compose のサポート

Jetpack Compose ツールキットは、アプリの UI をビルドする最新の方法を提供します。 また、このツールキットにより、Kotlin の利点をあますところなく活用できるようになります。たとえば、Java と完全に相互運用可能である、簡潔で自然なコードを作成できます。

Jetpack Compose を使用して最適な開発を行うには、Android Studio 4.2 の最新バージョンを使用する必要があります。これにより、Android Studio を使用して Jetpack Compose でアプリを開発する際に、新しいプロジェクト テンプレートや Compose UI をすぐにプレビューできるなど、スマート エディタの機能を活用できます。

詳細については、Jetpack Compose の概要をご覧ください。

4.2 における新しい Jetpack Compose ツールのサポート

Android Studio では、Jetpack Compose を使用するアプリのプレビューとテストに関するサポートが追加されました。

Compose のプレビュー

@Preview メソッドで次のパラメータを使用できるようになりました。

  • showBackground: プレビューの背景をオンまたはオフにします。
  • backgroundColor: プレビュー サーフェスでのみ使用される色を設定します。
  • uiMode: この新しいパラメータには Configuration.UI_* 定数のいずれも指定可能で、プレビューの動作を変更できます。たとえば、テーマの反応を確認するために夜間モードに設定することができます。

インタラクティブ プレビュー

このモードでは、UI コンポーネントを操作したりクリックしたりして、状態がどのように変化するかを確認できます。UI の反応に関するフィードバックがすぐに得られ、アニメーションを迅速にプレビューできます。このモードを有効にするには、インタラクティブ アイコン をクリックします。プレビューのモードが切り替わります。

停止するには、上部のツールバーの [Stop Interactive Preview] をクリックします。

デバイスへのデプロイ

この機能を使用して、UI のスニペットをデバイスにデプロイします。アプリケーション全体を起動しなくても、デバイスでコードの小さな部分をテストできるようになります。

@Preview アノテーションの横、またはプレビューの上部にある「デバイスへのデプロイ」アイコン をクリックすると、Android Studio がその @Preview を接続済みのデバイスまたはエミュレータにデプロイします。

プレビューの Data Sources API

新しい Data Sources API を使用すると、データからプレビューを生成できます。既存のデータのリスト、またはテーマのリストがある場合、この API を使用すると、@Preview メソッドにパラメータとして挿入できます。

class HelloWorldProvider :
   CollectionPreviewParameterProvider<String>(
       listOf("Hello World", "Привет мир", "Olá Mundo", "Hola Mundo"))

@Preview
@Composable
fun HelloWorldPreview(
   @PreviewParameter(HelloWorldProvider::class) text: String
) {
   MaterialTheme {
       Text(text = text)
   }
}

上記の機能を有効にするには、モジュールの build.gradle に次の設定を含める必要があります。

  android {
  …
  buildFeatures {
    compose true
  }
  composeOptions {
     kotlinCompilerExtensionVersion = "0.1.0-dev13"
     kotlinCompilerVersion = "1.3.70-dev-withExperimentalGoogleExtensions-20200424"
   }
}

Compose のプレビューに関する既知の問題

現在、androidx.ui.foundation.Dialog は Compose のプレビューではサポートされていません。

インストルメンテーション テストの改善

Android Studio 4.2 Canary 1 以降では、複数のデバイスで並行してインストルメンテーション テストを実行し、専用のインストルメンテーション テスト結果パネルを使用して調査できるようになりました。このパネルを使用すると、テストが失敗した原因が API レベルとハードウェアのどちらのプロパティにあるのかを判断できます。

インストルメンテーション テストパネル

さまざまな API レベルとフォーム ファクタでアプリをテストすることは、すべてのユーザーがアプリを快適に利用できるようにするための最適な方法の一つです。

この機能を利用する方法は次のとおりです。

  1. 対象デバイスのプルダウン メニュー(IDE の上部中央)で [Modify Device Set] を選択します。

    対象デバイスのプルダウン

  2. 対象デバイスを選択し、[OK] をクリックします。

    [Modify Device Set] ダイアログ

  3. 対象デバイスのプルダウン メニューで [Multiple Devices] を選択し、テストを実行します。

    対象デバイスのプルダウンから [Multiple Devices] を選択します

[Run] パネルでテスト結果を表示するには、[View] > [Tool Windows] > [Run] に移動します。

新しいテスト結果パネルでは、ステータス、デバイス、API レベルでテスト結果をフィルタリングできます。また、ヘッダーをクリックして各列を並べ替えることもできます。個々のテストをクリックすると、デバイスごとにログとデバイス情報を個別に表示できます。

Apply Changes

アプリを反復開発する際の生産性を向上させるため、Android 11 以降を搭載したデバイス向けの Apply Changes を次のように改良しました。

追加のコード変更のサポート

Android 11 以降を搭載したデバイスの場合、static final のプリミティブ フィールドを追加してから、[Apply Code Changes] または [Apply Changes and Restart Activity] をクリックすることで、それらの変更を実行中のアプリにデプロイできるようになりました。

また、リソースを追加してから、[Apply Changes and Restart Activity] をクリックすることで、それらの変更を Android 11 デバイスで実行中のアプリにデプロイできるようになりました。

4.2 Preview に関する既知の問題

このセクションでは、Android Studio 4.2 Preview の現在判明している問題について説明します。

Native Memory Profiler: アプリの起動時にプロファイリングが無効

アプリの起動時にネイティブ メモリのプロファイリングが無効になっています。このオプションは、今後のリリースで有効になる予定です。

回避策として、Perfetto スタンドアロン コマンドライン プロファイラを使用して、起動プロファイルをキャプチャできます。

Canary 8 をインストールした後に Studio が起動しない

Android Studio を 4.2 Canary 8 にアップグレードした後、.vmoptions ファイルでカスタム VM オプションを設定した特定のユーザーについて、IDE が起動しないことがあります。この問題を回避するには、.vmoptions でカスタム オプションをコメントアウト(「#」文字を使用)することをおすすめします。.vmoptions ファイルは次の場所にあります。

Windows

C:\Users\YourUserName\AppData\[Local|Roaming]\Google\AndroidStudioPreview4.2\studio64.exe.vmoptions

macOS

~/Library/Application Support/Google/AndroidStudioPreview4.2/studio.vmoptions

Linux

~/.config/Google/AndroidStudioPreview4.2/studio64.vmoptions