Android Studio Arctic Fox はメジャー リリースで、さまざまな新機能や改善措置が組み込まれています。
新しいバージョン番号体系
Android Studio のバージョン番号体系の更新
Android Studio の基となる IDE である IntelliJ IDEA との関連性をより強調するため、Android Studio のバージョン番号体系が変更されました。
以前の番号体系では、このリリースは Android Studio 4.3 またはバージョン 4.3.0.1 になるはずでした。新しい番号体系では、Android Studio - Arctic Fox | 2020.3.1 またはバージョン 2020.3.1 になります。
Intellij のバージョン | 以前の名前 | 旧 - 番号体系 | 新 - 年体系 | 新しいバージョン名 |
---|---|---|---|---|
2020.3 | 4.3 | 4.3.0 | 2020.3.1 | Arctic Fox | 2020.3.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 リリースノートのバージョニングの変更をご覧ください。
Android Gradle プラグイン 7.0.0
最新バージョンの Android Gradle プラグインには多くのアップデートが含まれています。詳細については、Android Gradle プラグインのリリースノート全体をご覧ください。
単体テストで Gradle テストランナーが使用される
テスト実行の全体的な整合性を高めるため、Android Studio はデフォルトで Gradle を使用してすべての単体テストを実行するようになりました。多くの場合、この変更によって IDE のテスト ワークフローが影響を受けることはありません。
たとえば、コンテキスト メニューで [Run] コマンド(テストクラスを右クリックして表示)または対応するガター アクション をクリックすると、Android Studio はデフォルトで Gradle 実行構成を使用して単体テストを実行します。
ただし、Android Studio は既存の Android JUnit 実行構成を認識しなくなったため、プロジェクト ファイルとして保存する Android JUnit 実行構成を Gradle 実行構成に移行する必要があります。
Gradle テスト構成を作成するには、新しい実行 / デバッグ構成を作成するの手順に沿って、Gradle テンプレートを選択します。新しい構成を作成すると、Gradle セクションの [Edit Configurations] ダイアログに表示されます。
認識しなくなった 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>
AGP 用の Upgrade Assistant の改善
Android Gradle プラグイン用の Upgrade Assistant に、完了すべき手順のリストを示す固定ツール ウィンドウが追加されました。ツール ウィンドウの右側にも追加情報が表示されます。必要であれば、アップグレードする別のバージョンの AGP を選択することもできます。[Refresh] ボタンをクリックすると、対応する更新手順が更新されます。
非推移的な R クラスのリファクタリング
非推移的な R クラスを Android Gradle プラグインとともに使用すると、複数のモジュールを持つアプリ向けに、より高速なビルドを作成できます。これを行うと、各モジュールの R クラスにそれ自体のリソースへの参照のみが含まれるようになり、依存関係から参照が取得されないため、リソースの重複を回避できます。その結果、より新しいビルドが作成され、それに応じてコンパイル回避のメリットが得られます。
この機能を利用するには、[Refactor] > [Migrate to Non-transitive R Classes] に移動します。
新しい Background Task Inspector
新しい Background Task Inspector を使用すると、アプリのバックグラウンド ワーカーの視覚化、モニタリング、デバッグを行えます。最初に WorkManager ライブラリ 2.5.0 以上を搭載したデバイスにアプリをデプロイし、メニューバーから [View] >[Tool Windows] > [App Inspection] を選択します。
ワーカーをクリックすると、さらに詳しい情報を表示できます。たとえば、ワーカーの説明、実行されている方法、ワーカー チェーンの詳細、実行結果を確認できます。
また、テーブルからワーカーを選択し、ツールバーの [Show Graph View] をクリックして、ワーカー チェーンを視覚的に表示することもできます。その後、チェーン内のワーカーを選択して詳細を表示したり、現在キューに入っているワーカーまたは実行中のワーカーを停止したりできます。テーブルに戻るには、「リストビューを表示」アイコン をクリックします。
実行に失敗したワーカーの問題を調査するには、現在実行中のワーカーまたはキューに入っているワーカーをテーブルから選択し、ツールバーの [Cancel Selected Worker] をクリックしてワーカーを停止します。[All tags] プルダウン メニューを使用して、割り当てたタグでテーブル内のワーカーをフィルタすることもできます。
Database Inspector の更新
Database Inspector が新しい App Inspection ツール ウィンドウに追加され、Background Task Inspector も新たに追加されました。ツール ウィンドウ バーから [App Inspection] ツール ウィンドウを開くか、[View] > [Tool Windows] > [App Inspection] を選択します。
Database Inspector からデータをエクスポートする
Arctic Fox では、Database Inspector を使用して、データベース、テーブル、クエリ結果を簡単にエクスポートして、保存したり、共有したり、ローカルで再作成したりできます。Android Studio でアプリ プロジェクトを開き、Database Inspector でそのプロジェクトのアプリを検査する際に、次のいずれかの方法でデータのエクスポートを開始できます。
- [Databases] パネルでデータベースまたはテーブルを選択し、パネルの上部近くの [Export to file] をクリックします。
- [Databases] パネルでデータベースまたはテーブルを右クリックし、コンテキスト メニューから [Export to file] を選択します。
- タブのテーブルまたはクエリ結果を調べるときは、テーブルまたはクエリ結果の上にある [Export to file] をクリックします。
エクスポート アクションを選択した後、以下に示すように、[Export] ダイアログを使用して最終的な手順を実施します。データベース、テーブル、クエリ結果のいずれをエクスポートするかに応じて、DB、SQL、CSV のうち 1 つ以上の形式でデータをエクスポートできます。
Memory Profiler で記録するための UI の更新
Memory Profiler のユーザー インターフェース(UI)が統合され、ヒープダンプのキャプチャや Java、Kotlin、ネイティブ メモリ割り当ての記録など、さまざまな記録アクティビティが可能になりました。
Memory Profiler には次のオプションがあります。
- ヒープダンプのキャプチャ: 特定の時点でメモリを使用しているアプリ内のオブジェクトを表示します。
- ネイティブ割り当ての記録: 特定の期間における各 C / C++ オブジェクトの割り当てを表示します。
- Java / Kotlin 割り当ての記録: 特定の期間における各 Java / Kotlin オブジェクトの割り当てを表示します。
この 3 つのオプションの使用方法は次のとおりです。
ヒープダンプをキャプチャするには、[Capture heap dump] を選択した後、[Record] を選択します。プロファイラがヒープダンプのキャプチャを完了すると、Memory Profiler UI はヒープダンプを表示する別の画面に遷移します。
Android 10 以降を搭載したデバイスでネイティブ割り当てを記録するには、[Record native allocations] を選択した後、[Record] を選択します。記録は [Stop] をクリックするまで継続されます。停止すると、Memory Profiler UI はネイティブ記録を表示する別の画面に遷移します。
Android 9 以前では、[Record native allocations] オプションは使用できません。
Java と Kotlin の割り当てを記録するには、[Record Java / Kotlin Allocations] を選択した後、[Record] を選択します。Android 8 以降を搭載したデバイスの場合、Memory Profiler UI は進行中の記録を表示する別の画面に遷移します。記録の上に表示されるミニ タイムラインは操作可能です(たとえば、選択範囲を変更できます)。記録を完了するには、[Stop] を選択します。
Android 7.1 以前では、Memory Profiler は従来の割り当て記録を使用します。この場合、[Stop] をクリックするまで記録がタイムラインに表示されます。
リンクされた C++ プロジェクトの更新に関するアップデート
構成と関係のないファイルは、.cxx/
フォルダから build/
フォルダに移動されました。CMake C++ ビルドには、コンパイルとリンクの手順を実行するために使用される Ninja プロジェクトを生成する構成フェーズが必要です。CMake で生成されたプロジェクトは生成にコストがかかり、Gradle のクリーン後も存続することが想定されています。この理由により、それらは build/
フォルダの隣にある .cxx/
という名前のフォルダに格納されます。通常、Android Gradle プラグインは、構成の変更を検出して Ninja プロジェクトを自動的に再生成します。ただし、すべてのケースを検出できるとは限りません。検出できなかった場合は、[Refresh Linked C++ Project] オプションを使用して、Ninja プロジェクトを手動で再生成できます。
マルチデバイス テストの新しいテスト マトリックス
複数のデバイスで並行してインストルメンテーション テストを実行し、専用のインストルメンテーション テスト結果パネルを使用して調査できるようになりました。このパネルを使用すると、テストが失敗した原因が API レベルとハードウェアのどちらのプロパティにあるのかを判断できます。
さまざまな API レベルとフォーム ファクタでアプリをテストすることは、すべてのユーザーがアプリを快適に利用できるようにするための最適な方法の一つです。
この機能を利用する方法は次のとおりです。
対象デバイスのプルダウン メニュー(IDE の上部中央)で [Select Multiple Devices] を選択します。
対象デバイスを選択し、[OK] をクリックします。
テストを実施します。
[Run] パネルでテスト結果を表示するには、[View] > [Tool Windows] > [Run] に移動します。
新しいテスト結果パネルでは、ステータス、デバイス、API レベルでテスト結果をフィルタリングできます。また、ヘッダーをクリックして各列を並べ替えることもできます。個々のテストをクリックすると、デバイスごとにログとデバイス情報を個別に表示できます。
データ バインディングでの StateFlow
のサポート
コルーチンを使用する Kotlin アプリで、
StateFlow
をデータ バインディング ソースとして選択し、
変化します。データ バインディングはライフサイクルを認識し、UI が画面に表示された場合にのみトリガーされます。
StateFlow
オブジェクトをバインディング クラスとともに使用するには、ライフサイクル所有者を指定して StateFlow
オブジェクトのスコープを定義します。また次の例に示すように、レイアウトでバインディング式を使用して、ViewModel
コンポーネントのプロパティとメソッドを対応するビューに割り当てます。
class ViewModel() {
val username: StateFlow<String>
}
<TextView
android:id="@+id/name"
android:text="@{viewmodel.username}" />
AndroidX を使用する Kotlin アプリの場合、コルーチンの依存関係を含め、データ バインディングの機能に StateFlow
のサポートが自動的に含まれます。
詳細については、監視可能なデータ オブジェクトの使用をご覧ください。
推奨インポートの改善
推奨インポート機能でサポートされるライブラリの数が改善され、インデックスがより頻繁に更新されるようになりました。推奨インポートを使用すると、特定の Google Maven アーティファクトを、クラスと Gradle プロジェクトの両方にすばやく簡単にインポートできます。Android Studio が特定の Google ライブラリから未解決のシンボルを検出すると、IDE はライブラリをクラスとプロジェクトの両方にインポートすることを推奨します。
Build Analyzer での構成キャッシュのサポート
Build Analyzer モードを開始する プロジェクトに構成キャッシュがないことが特定される 最適化の目的で提示します。Build Analyzer は互換性評価を実行し、プロジェクト内のまだ有効化されていない構成キャッシュになんらかの問題があれば、通知します。
Jetpack Compose ツールのサポート
Jetpack Compose を使用するアプリのプレビューとテストに関するサポートが追加されました。Jetpack Compose を使用して最適な開発エクスペリエンスを実現するには、新しいプロジェクト テンプレートや Compose UI の即時プレビューなどのスマート エディタ機能を活用するため、Android Studio Arctic Fox の最新バージョンを使用する必要があります。
Compose プレビュー
@Preview メソッドで次のパラメータを使用できるようになりました。
- showBackground: プレビューの背景をオンまたはオフに切り替えます。
- backgroundColor: プレビュー サーフェスでのみ使用される色を設定します。
- uiMode: この新しいパラメータに任意の Configuration.UI_* 定数を指定して、プレビューの動作を変更できます。たとえば、夜間モードに設定して、テーマがどのように反応するかを確認できます。
インタラクティブ プレビュー
この機能を使用すると、UI コンポーネントとやり取りし、クリックして、状態の変化を確認できます。UI の反応に関するフィードバックがすぐに得られ、アニメーションを迅速にプレビューできます。このプレビューを有効にするには、インタラクティブ アイコン をクリックして、プレビューのモードを切り替えます。
このプレビューを停止するには、上部のツールバーで [Stop Interactive Preview] をクリックします。
デバイスへのデプロイ
この機能を使用すると、UI のスニペットをデバイスにデプロイできます。これにより、アプリ全体を起動しなくても、デバイス上でコードの小さな部分をテストできます。
@Preview
アノテーションの隣またはプレビューの上部にあるデバイスへのデプロイ アイコン をクリックすると、その @Preview が Android Studio によって接続済みデバイスまたはエミュレータにデプロイされます。
リテラルのリアルタイム編集
Compose を使用しているデベロッパーがコード内のリテラル(文字列、数値、ブール値)をすばやく編集し、コンパイルを待たなくてもすぐに結果を確認できるように、リテラルのリアルタイム編集機能が追加されました。この機能の目的は、プレビュー、エミュレータ、物理デバイスにコードの変更がほぼリアルタイムで表示されるようにして、生産性を向上させることです。
Layout Inspector での Compose のサポート
Layout Inspector を使用すると、接続済みデバイスで実行されているアプリのレイアウトに関する詳細情報を確認できます。アプリを操作してリアルタイムの更新をツールで確認し、発生しうる問題をすばやくデバッグできます。
Android の新しい宣言型 UI フレームワークである Jetpack Compose で記述されたレイアウトを検査できます。Compose のみで記述されたレイアウトと Compose および View を併用したレイアウトのどちらをアプリが使用している場合でも、Layout Inspector は、実行中のデバイスでレイアウトがどのようにレンダリングされるかを理解するのに役立ちます。
始める
まず、アプリを接続済みデバイスにデプロイします。次に、[View] > [Tool Windows] > [Layout Inspector] を選択して、[Layout Inspector] ウィンドウを開きます。Layout Inspector が自動的にアプリプロセスに接続されない場合は、プロセスのプルダウンから目的のアプリプロセスを選択します。すぐにアプリのレイアウトがツール ウィンドウにレンダリングされます。Compose レイアウトの検査を開始するには、レンダリングに表示されるレイアウト コンポーネントを選択するか、[Component Tree] からレイアウト コンポーネントを選択します。
[Attributes] ウィンドウには、現在選択されている Compose 関数に関する詳細情報が表示されます。このウィンドウでは、関数のパラメータとそれらの値(修飾子やラムダ式を含む)を調べることができます。ラムダ式の場合、ソースコード内の式に移動するためのショートカットがインスペクタにより提供されます。
[Layout Inspector] には、アプリのレイアウトにコンポーネントを出力するコールスタック内の Compose 関数がすべて表示されます。多くの場合、これには Compose ライブラリによって内部的に呼び出される Compose 関数が含まれます。アプリが直接呼び出すコンポーネント ツリー内の Compose 関数のみを表示するには、フィルタ アクションをクリックします。これにより、ツリー内に表示されるノードの数を減らして、調べたいノードを絞り込むことができます。
デプロイ プルダウンの改善
デバイスのプルダウンで、選択したデバイス設定内のエラーの種類が区別されるようになりました。アイコンとスタイルの変更により、エラー(構成を破綻させるデバイス選択)と警告(予期しない動作が発生する可能性があるが、実行は可能なデバイス選択)を区別できます。
さらに、エラーまたは警告があるデバイスでプロジェクトを起動しようとすると、Android Studio が警告を表示するようになりました。
新しい Wear OS ペア設定アシスタント
新しい Wear OS ペア設定アシスタントは、Android Studio で直接 Wear OS エミュレータを実機または仮想のスマートフォンとペア設定する手順をデベロッパーにガイドします。アシスタントを使用すると、適切な Wear OS コンパニオン アプリをスマートフォンにインストールし、2 つのデバイス間の接続を設定する作業が容易になります。アシスタントを開始するには、デバイスのプルダウンから [Wear OS Emulator Pairing Assistant] に移動します。
レスポンシブ レイアウト テンプレート
Android Studio Arctic Fox には、スマートフォン、折りたたみ式デバイス、タブレット、分割画面モードなど、さまざまなディスプレイのディメンションとアプリのサイズ変更に対応した新しいレイアウト テンプレートが追加されました。新しいプロジェクトまたはモジュールを作成する際に、レスポンシブ アクティビティ テンプレートを選択すると、コンポーネントのサイズが動的に変更されるレイアウトを作成できます。
まず [File] > [New] に移動し、[New Project] または [New Module] を選択した後、[Responsive Activity] テンプレートを選択します。
Layout Editor のユーザー補助検証ツール
Android Studio が Android ユーザー補助機能テスト フレームワークと統合され、レイアウト内でユーザー補助機能の問題を発見できるようになりました。このツールは、ユーザー補助に関連する問題を報告し、よくある問題(例: コンテンツの説明がない、コントラストが低い)について修正を提案します。パネルを起動するには、Layout Editor でエラー報告ボタン をクリックします。
Apple Silicon のサポート
Android Studio と Android Emulator に、Apple Silicon(arm64)ハードウェア アーキテクチャにおける、主要なデベロッパー ワークフローのための初期サポートが追加されました。これには対応するエミュレータ システム イメージが含まれます。
SDK と NDK のコマンドライン ツールには、まだ未対応のものがあります。ツールによっては、Rosetta 2 をインストールしないと使用できないものもあります。
Arctic Fox の既知の問題
このセクションでは、Android Studio Arctic Fox で現在判明している問題について説明します。
Windows で v3.6~v4.1 用のパッチが機能しない
Windows プラットフォームで v3.6~v4.1 用のパッチを Android Studio Arctic Fox の安定版に適用しようとすると、機能しないことがあります。
パッチリリース
Android Studio Arctic Fox のパッチリリースを以下に示します。
Android Studio Arctic Fox | 2020.3.1 パッチ 4(2021 年 12 月)
このマイナー アップデートには、次のバグ修正が含まれています。
- Android Gradle プラグイン
VariantOutput.version
のProvider
を設定すると構成キャッシュで中断することがある- リリースの署名時に
gradeResValues.xml
が更新されない
- D8 / R8
- R8 によって圧縮されたビルドにおいて、クラスのコンストラクタで
java.lang.ClassCastException
がスローされる - dex のマージ中に型の調整に到達できない
java.lang.VerifyError
:Reference.java.lang.Object
型のオブジェクトからインスタンス フィールドにアクセスできないため、検証ツールによる検証が失敗する
- R8 によって圧縮されたビルドにおいて、クラスのコンストラクタで
- lint
MediaCapabilities
lint チェックが無効になるshrinkResources
が有効になっている場合に、lint が誤判定により [Instantiable] エラーを報告する
- テンプレート
- [
Import Module ] のオプションがグレー表示される
- [
詳細については、2020.3.1 パッチ 4 のブログ投稿をご覧ください。
Android Studio Arctic Fox | 2020.3.1 パッチ 3(2021 年 10 月)
このマイナー アップデートには、次のバグ修正が含まれています。
- Android Gradle プラグイン
- lint スタンドアロン プラグインが
gradleApi()
の依存関係を適切に処理しない - Gradle ビルドが Studio の外部で実行される間に JPS ビルドがトリガーされる
- ソースを生成するプロセッサが KSP と Kapt の両方に含まれる場合に、プロジェクトでその両方を有効にすると、
BundleLibraryClassesInputs
が中断される
- lint スタンドアロン プラグインが
- C++ エディタ
- バックグラウンドでの
JniReferencesSearch
の計算が長いため、UI がフリーズする
- バックグラウンドでの
- Database Inspector
- DB の保存を許可する
- パスに空白のスペースがあると、App Inspection / Database Inspector を使用してデータをエクスポートできない
- Dexer(D8)
- Java ラムダがサブクラスをサブクラス化する際に予期しない動作を引き起こす
- 圧縮ツール(R8)
- r8 圧縮中に
Cannot constrain type
エラーが発生する - R8 3.0.69(AGP 7.0.2 から)および 3.0.72 の実行中に問題が発生する
- r8 圧縮中に
詳細については、2020.3.1 パッチ 3 のブログ投稿をご覧ください。
Android Studio Arctic Fox | 2020.3.1 パッチ 2(2021 年 9 月)
このマイナー アップデートには、次のバグ修正が含まれています。
- Android Gradle プラグイン
- AS Arctic Fox Canary 7 から Canary 8 へのアップグレードで Gradle の同期が 10 回起動
- desugaring と再現可能なビルド
- C++ ビルド
- Android Gradle プラグイン 7.0.0 では、tasks.whenTaskAdded クロージャを使用している場合、APK に jniLib が含まれない
- 編集
- Arctic Fox で MergedManifestRefreshListener が無限ループに陥る
- lint
- 「lint チェックのための lint チェック」が実行されない
- 圧縮ツール(R8)
- AGP7 で R8 を使ってビルドを実行するときに ClassNotFoundException が発生
詳細については、2020.3.1 パッチ 2 のブログ投稿をご覧ください。
Android Studio Arctic Fox | 2020.3.1 パッチ 1(2021 年 8 月)
このアップデートには、次の問題に対する修正が含まれています。
- Android Gradle プラグイン
- TypedefRemover は ASM5 を使用し、ASM7 を必要とする JDK 11 ソースとは互換性がない
- 一部の新しい DSL ブロックは、AGP 7.0.0 の Groovy DSL では使用できません
- AGP 7.0.0 安定版が libraryVariants.all{applicationId} で ExternalApiUsageException をスローする
- C++ デバッガ
- Mac M1 でネイティブ デバッグ セッションを開始する際の「無効な LLDB 構成が見つかりました」という AS Arctic Fox エラー
- Resource Manager
- (Windows)[New] > [Vector Asset] > picture.svg: 生成された xml に無効なマイナス文字がある
- 圧縮ツール(R8)
- BridgeHoisting での NPE
- 7.0.0 にアップグレードしたすると、R8 がクラッシュし、「インライン後のメソッドに予期しない使用状況が残っている」というエラーが表示される
詳細については、2020.3.1 パッチ 1 のブログ投稿をご覧ください。