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

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

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

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

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

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

Android Studio Arctic Fox | 2020.3.1

Android Studio のバージョン番号の更新

Android Studio の基となる IDE である IntelliJ IDEA との関連を示すため、Android Studio のバージョン番号体系が変更されました。

以前の番号体系では、Android Studio 4.3 またはバージョン 4.3.0.1 でした。新しい番号体系により、Android Studio - Arctic Fox | 2020.3.1 Canary 1 またはバージョン 2020.3.1.1 となりました。

Intellij バージョン 以前の名前 旧 - 番号体系 新 - 年体系 新しいバージョン名
2020.3 4.3 Canary 1 4.3.0.1 2020.3.1.1 Arctic Fox | 2020.3.1 Canary 1

今後、Android Studio のバージョン番号は次のように決定されます。

<Year of IntelliJ Version>.<IntelliJ major version>.<Studio major version>.<Studio minor/patch version>

  • 最初の 2 つの番号グループは、特定の Android Studio リリースの基となっている IntellIj プラットフォームのバージョンを表します。このリリースでは、バージョン 2020.3 です。
  • 3 番目の番号グループは、Android Studio のメジャー バージョンを表します。1 から始まり、メジャー リリースごとに 1 ずつ増加します。
  • 4 番目の番号グループは、Android Studio のマイナー / パッチ バージョンを表します。1 から始まり、マイナー リリースごとに 1 ずつ増加します。
  • メジャー リリースごとのバージョン名も付きます。これは動物名に基づいて A から Z まで増えます。このリリースは、Arctic Fox と名付けられています。

Android Gradle プラグインのバージョン番号の更新

基となる Gradle ビルドツールのバージョン番号との関連を示すため、Android Gradle プラグイン(AGP)のバージョン番号の付け方を変更します。そのため、AGP 4.2 の次のリリースは AGP 7.0 になります。

詳細については、AGP リリースノートのバージョニングの変更をご覧ください。

C++ エディタ: デバッガでの実行ポイントの設定

C++ コードエディタ ウィンドウで、デバッガでアプリを実行するときの任意の実行ポイントを設定できます。この機能は、ループから抜けるか、分岐コードで別のパスを強制する場合に便利です。

C / C++ コードエディタで実行ポイントを設定する

この機能を使用するには、コードにブレークポイントを設定し、デバッガでアプリを実行します。プログラムがこのブレークポイントに到達したら、黄色の矢印を次に実行するコード行にドラッグ&ドロップして、ブレークポイントと新しい実行ポイントの間の記述をバイパスします。

なお、実行ポイントを変更しても、メモリ コンテンツ(スタックまたはヒープ)や他のアプリの状態が変更されることはありません。たとえば、スタックのローカル変数は、実行ポイントが変更されても値を維持します。

この機能は、arm64-v8aarmeabi-v7ax86_64 ABI で使用できますが、32 ビット x86 ABI では使用できません。

この機能は、JetBrains の CLion エディタの基本機能に基づいています。この機能とその制限の詳細については、JetBrains によるこちらのブログ投稿をご覧ください。

データ バインディングでの StateFlow のサポート

コルーチンを使用する Kotlin アプリでは、StateFlow オブジェクトをデータ バインディング ソースとして使用することで、データの変更について UI に自動的に通知できるようになりました。データ バインディングはライフサイクルを認識し、UI が画面に表示された場合にのみトリガーされます。

StateFlow オブジェクトをバインディング クラスとともに使用するには、ライフサイクル所有者を指定して StateFlow オブジェクトのスコープを定義します。また次の例に示すように、レイアウトでバインディング式を使用して、ViewModel コンポーネントのプロパティとメソッドを対応するビューに割り当てます。

class ViewModel() {
   val username: StateFlow<String>
}
<TextView
    android:id="@+id/name"
    android:text="@{viewmodel.username}" />

AndroidX を使用する Kotlin アプリの場合、コルーチンの依存関係を含め、データ バインディングの機能に StateFlow のサポートが自動的に含まれます。

詳細については、監視可能なデータ オブジェクトの使用をご覧ください。

新しい WorkManager Inspector

以前のバージョンの Android Studio では、デベロッパーがアプリの SQLite データベースを理解、デバッグできるように、Database Inspector が導入されました。Database Inspector は、アプリのさまざまな側面に対応する各種インスペクタをサポートするように設計されたアプリ検査フレームワークを基に構築されています。

Arctic Fox Canary 3 以降では、新しい WorkManager Inspector を使用できます。これは、WorkManager ライブラリ 2.5.0-beta02 以降を使用している場合、アプリのバックグラウンド ワーカーの可視化、モニタリング、デバッグに役立ちます。

メニューバーで [View] > [Tool Windows] > [App Inspection] を選択することで、WorkManager InspectorDatabase Inspector の両方を表示できるようになりました。API レベル 26 以降を搭載したデバイスで WorkManager 2.5.0-beta02 以降を使用してアプリをデプロイすると、次に示すように、[WorkManager Inspector] タブにアクティブなワーカーが表示されます。

WorkManager Inspector

テーブルからワーカーを選択すると、ワーカーの説明、実行方法、ワーカー チェーンの詳細、ワーカーの実行結果など、詳細情報が表示されます。

WorkManager Inspector の詳細

実行に失敗したワーカーの問題を調査するには、現在実行中かキューに入っているワーカーをテーブルから選択し、ツールバーの「選択したワーカーをキャンセル」アイコン をクリックしてワーカーを停止します。[All tags] プルダウン メニューを使用して、割り当てたタグでテーブル内のワーカーをフィルタすることもできます。

ワーカー チェーンを視覚的に表示するには、テーブルからワーカーを選択し、ツールバーの「グラフビューを表示」アイコン をクリックします。その後、チェーン内のワーカーを選択して詳細を表示したり、現在キューに入っているか実行中のワーカーを停止したりできます。テーブルに戻るには、「リストビューを表示」アイコン をクリックします。

WorkManager Inspector ワーカー チェーン

Android Studio が Gradle テストランナーを使用するようになりました

テスト実行の全体的な整合性を高めるため、Android Studio はデフォルトで Gradle を使用してすべての単体テストを実行するようになりました。多くの場合、この変更によって IDE のテスト ワークフローが影響を受けることはありません。

たとえば、コンテキスト メニューで [Run] コマンド(テストクラスを右クリックして表示)または対応するガター アクション をクリックすると、Android Studio はデフォルトで Gradle 実行構成を使用して単体テストを実行します。

テストを実行するためのコンテキスト メニュー

ただし、Android Studio は既存の Android JUnit 実行構成を認識しなくなったため、プロジェクト ファイルとして保存する Android JUnit 実行構成を Gradle 実行構成に移行する必要があります。

Gradle テスト構成を作成するには、新しい実行 / デバッグ構成を作成するの手順に沿って、Gradle テンプレートを選択します。新しい構成を作成すると、Gradle セクションの [Edit Configurations] ダイアログに表示されます。

Android Studio でテスト構成を編集する

認識しなくなった Android JUnit 構成を調べる場合は、次の 2 つの方法のいずれかを行います。

  • 手動で保存した構成をテキスト エディタで開く。こうしたファイルの場所はユーザーが指定しますが、通常、ファイルは <my-app>/.idea/runConfigurations/ に表示されます。
  • <my-app>/.idea/workspace.xml で一時構成を探して、<component name="RunManager" ...> ノードを確認します。次に例を示します。

    <component name="RunManager" selected="Gradle.PlantTest">
    …
    <configuration name="PlantTest" type="AndroidJUnit" factoryName="Android JUnit" nameIsGenerated="true">
          <module name="Sunflower.app" />
          <useClassPathOnly />
          <extension name="coverage">
            <pattern>
              <option name="PATTERN" value="com.google.samples.apps.sunflower.data.*" />
              <option name="ENABLED" value="true" />
            </pattern>
          </extension>
          <option name="PACKAGE_NAME" value="com.google.samples.apps.sunflower.data" />
          <option name="MAIN_CLASS_NAME" value="com.google.samples.apps.sunflower.data.PlantTest" />
          <option name="METHOD_NAME" value="" />
          <option name="TEST_OBJECT" value="class" />
          <option name="PARAMETERS" value="" />
          <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
          <method v="2">
            <option name="Android.Gradle.BeforeRunTask" enabled="true" />
          </method>
        </configuration>
    

Android Gradle プラグイン 7.0

Android Gradle プラグインのビルド キャッシュを削除

AGP 4.1 では、AGP ビルド キャッシュが削除されました。Gradle ビルド キャッシュを補完するために以前 AGP 2.3 で導入された AGP ビルド キャッシュは、AGP 4.1 の Gradle ビルド キャッシュに完全に置き換えられました。この変更はビルド時間には影響しません。

AGP 7.0 では、android.enableBuildCache プロパティ、android.buildCacheDir プロパティ、cleanBuildCache タスクが削除されました。

プロジェクトで Java 11 のソースコードを使用する

アプリのプロジェクトで Java 11 までのソースコードをコンパイルできるようになりました。これにより、プライベート インターフェース メソッド、匿名クラスのダイヤモンド演算子、ラムダ パラメータのローカル変数構文などの新しい言語機能を使用できます。

この機能を有効にするには、compileOptions を目的の Java バージョンに設定し、compileSdkVersion を 30 以上に設定します。

Kotlin

// build.gradle.kts

android {
    compileSdkVersion(30)

    compileOptions {
      sourceCompatibility(JavaVersion.VERSION_11)
      targetCompatibility(JavaVersion.VERSION_11)
    }

    kotlinOptions {
      jvmTarget = "11"
    }
}

Groovy

// build.gradle

android {
    compileSdkVersion 30

    compileOptions {
      sourceCompatibility JavaVersion.VERSION_11
      targetCompatibility JavaVersion.VERSION_11
    }

    // For Kotlin projects
    kotlinOptions {
      jvmTarget = "11"
    }
}

依存関係構成を削除

AGP 7.0 Canary 3 では、次の構成(または依存関係スコープ)が削除されました。

  • compile
    ユースケースに応じて、api または implementation に置き換えられました。
    *Compile バリアントにも適用されます(debugCompile など)。
  • provided
    compileOnly に置き換えられました。
    *Provided バリアントにも適用されます(releaseProvided など)。
  • apk
    runtimeOnly に置き換えられました。
  • publish
    runtimeOnly に置き換えられました。

ほとんどの場合、AGP アップグレード アシスタントがプロジェクトを自動的に新しい構成に移行します。

Android Gradle プラグインに対してコンパイルする際のクラスパスの変更

Android Gradle プラグインに対してコンパイルする場合、コンパイル クラスパスが変更されることがあります。Android Gradle プラグインは内部で api/implementation 構成を使用するようになったため、コンパイル クラスパスから一部のアーティファクトが削除されることがあります。コンパイル時に Android Gradle プラグインの依存関係に依存している場合は、明示的な依存関係として追加してください。

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

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

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

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

Jetpack Compose のサポート

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

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

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

Arctic Fox | 2020.3.1 における 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"
   }
}

マルチデバイス テストの新しいテスト マトリックス

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

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

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

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

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

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

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

    [Modify Device Set] ダイアログ

  3. テストを実施します。

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

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

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

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

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

このセクションでは、Android Studio Arctic Fox プレビューの現在判明している問題について説明します。

Canary 2 のアップデート パッチが機能しない

Linux マシンと macOS マシンでは、Canary 2 のアップデート パッチが機能しません。Canary 2 リリースにアップグレードするには、完全版をダウンロードしてインストールします。

Android Studio 4.2

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

バリアントごとにアプリ署名を設定する

Android Gradle プラグインでバリアントごとにアプリ署名を有効または無効に設定できるようになりました。

Kotlin または Groovy の onVariants() メソッドを使用して、バリアントごとにアプリ署名を設定する方法の例を次に示します。

androidComponents {
    onVariants(selector().withName("fooDebug"), {
        signingConfig.enableV1Signing.set(false)
        signingConfig.enableV2Signing.set(true)
    })

Gradle ビルドを JDK 11 用に最適化する

Android Studio で実行する場合、Gradle ビルドツールは Android Studio で設定されたデフォルトの JDK バージョンを使用します。以前のリリースでは JDK 8 がデフォルトで使用されていましたが、4.2 では JDK 11 がデフォルトの JDK になりました。JDK 8 は並列ガベージ コレクタを使用し、JDK 11 は G1 ガベージ コレクタを使用するため、今回の JDK 11 へのアップデートは JVM ガベージ コレクタのデフォルト設定に影響を与えます。

ビルドのパフォーマンスを改善するには、並列ガベージ コレクタを使用して Gradle ビルドをテストすることをおすすめします。gradle.properties で次のように設定します。

org.gradle.jvmargs=-XX:+UseParallelGC

このフィールドにすでに他のオプションが設定されている場合は、新しいオプションを追加します。

org.gradle.jvmargs=-Xmx1536m -XX:+UseParallelGC

さまざまな構成でビルド速度を測定するには、ビルドのプロファイリングを行うをご覧ください。

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

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 へのナビゲーション

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 Gradle プラグイン 4.2

新しい Gradle プロパティ: android.native.buildOutput

ビルド出力の煩雑さを軽減するために、AGP 4.2 では CMakendk-build を使用しているネイティブ ビルドからのメッセージがフィルタされ、C / C++ コンパイラ出力のみがデフォルトで表示されます。以前は、ビルドされるファイルごとに出力行が生成されていたため、大量の情報メッセージが出力されていました。

ネイティブ出力全体を表示するには、新しい Gradle プロパティ android.native.buildOutputverbose に設定します。

このプロパティは、gradle.properties ファイルまたはコマンドラインから設定できます。

gradle.properties
android.native.buildOutput=verbose

コマンドライン
-Pandroid.native.buildOutput=verbose

このプロパティのデフォルト値は quiet です。

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 のドキュメントをご覧ください。

Java 言語バージョン 8(デフォルト)

バージョン 4.2 以降では、AGP はデフォルトで Java 8 言語レベルを使用します。Java 8 では、ラムダ式、メソッド参照、静的インターフェース メソッドなど、多くの新しい言語機能にアクセスできます。サポートされている全機能の一覧については、Java 8 のドキュメントをご覧ください。

以前の動作を維持するには、モジュール レベルの build.gradle.kts または build.gradle ファイルで Java 7 を明示的に指定します。

Kotlin

// build.gradle.kts

android {
  ...
  compileOptions {
    sourceCompatibility = JavaVersion.VERSION_1_7
    targetCompatibility = JavaVersion.VERSION_1_7
  }
  // For Kotlin projects, compile to Java 6 instead of 7
  kotlinOptions {
    jvmTarget = "1.6"
  }
}

Groovy

// build.gradle

android {
  ...
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
  }
  // For Kotlin projects, compile to Java 6 instead of 7
  kotlinOptions {
    jvmTarget = "1.6"
  }
}

新しい 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 署名の手順が考慮されます。

複数のデバイスへのデプロイ

複数のデバイスや API レベルでアプリのテストを効率化するために、次の手順に沿って、アプリを複数のデバイスやエミュレータに同時にデプロイできるようになりました。

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

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

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

    [Modify Device Set] ダイアログ

  3. アプリまたはテストを実行します。

Apply Changes

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

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

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

また、リソースを追加してから「変更を適用してアクティビティを再スタート」アイコン をクリックすることで、それらの変更を Android 11 デバイスで実行中のアプリにデプロイできるようになりました。

ANDROID_SDK_HOME 環境変数のサポート終了

ANDROID_SDK_HOME 環境変数のサポートが終了し、ANDROID_PREFS_ROOT に置き換えられました。詳しくは、エミュレータの環境変数をご覧ください。

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

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

Kotlin プロジェクトの lint 例外

checkDependencies=true を設定している Kotlin プロジェクトでは、null ポインタ例外や、次のエラーが発生することがあります。

Lint error: package fragment is not found for module

考えられる回避策については、Kotlin プロジェクトの lint 例外をご覧ください。

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