このページでは、過去の Android Studio の各メジャー リリースにおける新機能と改善措置について説明します。最新バージョンの新機能を確認するには、最新の Android Studio リリースノートをご覧ください。
各プレビュー リリースにおける重要な修正のリストなど、リリースに関する最新情報については、リリース アップデート情報をご覧ください。Android Gradle プラグインの新機能については、該当するリリースノートをご覧ください。
Android Gradle プラグインと Android Studio の互換性
Android Studio ビルドシステムは Gradle をベースにしており、Android Gradle プラグインは Android アプリのビルドに役立つ複数の機能を追加します。次の表に、Android Studio の各バージョンに必要な Android Gradle プラグインのバージョンを示します。
Android Studio バージョン | 必要なプラグインのバージョン |
---|---|
Flamingo | 2022.2.1 | 3.2-8.0 |
Electric Eel | 2022.1.1 | 3.2-7.4 |
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 Studio Chipmunk | 2021.2.1
Jetpack Compose を使用したアプリの作成のサポート
アニメーション プレビューによる animatedVisibility のサポート
Android Studio Chipmunk のアニメーション プレビューは、animatedVisibility
API をサポートしています。animatedVisibility
でアニメーション プレビューを使用するには、Compose バージョン 1.1.0 以降を使用します。アニメーション プレビューについて詳しくは、アニメーションをご覧ください。
ライブラリ モジュールからのプレビュー デプロイのサポート
プレビューを使用すると、アプリを実機で実行しなくても、Android Studio 内で UI を表示できます。Android Studio Chipmunk では、特定の @Preview
をライブラリ モジュールからエミュレータまたは実機にデプロイできます。詳細については、プレビューをデプロイするをご覧ください。
アプリのプロファイリングのサポート
Android 12 以降でのジャンクの検出
Android 12 以降を搭載したデバイスの場合、キャプチャしたトレースは CPU Profiler の [Display] ペインにある [Janky frames] トラックに表示されます。
ジャンクを検出する手順は次のとおりです。
- 開発用のエミュレータまたはデバイスからアプリを起動します。
Android Studio で、[View] > [Tool Windows] > [Profiler] を選択するか、ツールバーのプロファイル ボタン
をクリックします。
[Select Deployment Target] ダイアログが表示されたら、プロファイリング用にアプリをデプロイするデバイスを選択します。USB 経由でデバイスを接続しているにもかかわらずデバイスがリストに表示されない場合は、USB デバッグが有効になっているかを確認します。
[CPU] タイムラインの任意の場所をクリックして CPU Profiler を開きます。
[Display] の下に [Janky frames] トラックが表示されます。デフォルトでは、Profiler は調査対象の候補としてジャンクのあるフレームのみを表示します。ジャンクのあるフレーム内で赤くハイライト表示された部分は、レンダリング期限からの超過時間を表しています。
ジャンクのあるフレームが表示されたら、それをクリックします。M キーを押すと、選択したフレームを中心に表示倍率を調整できます。メインスレッド内の関連するイベントがハイライト表示されます(この例では、RenderThread と GPU complete)。
[All Frames]、[Lifecycle] のチェックボックスをオンにすることで、それぞれ、すべてのフレーム、レンダリング時間の内訳を表示できます。
詳しくは、UI ジャンクの検出をご覧ください。
パッチリリース
Android Studio Chipmunk のパッチリリースを以下に示します。
Android Studio Chipmunk | 2021.2.1 パッチ 2(2022 年 8 月)
このマイナー アップデートには、次のアップデートとバグの修正が含まれています。
Android プラットフォーム サポート
Android Studio Chipmunk パッチ 2 と Android Gradle 7.2.2 では、compileSdk=33
を設定して Android 13 API に対してコンパイルできます。サポートされる上限の最小 SDK バージョンは 32 です。minSdk = 33
は、Android Gradle プラグイン 7.3.0-beta05 までサポートされていません。
修正された問題 | ||||||||
---|---|---|---|---|---|---|---|---|
C++ デバッガ |
|
|||||||
デザインツール |
|
|||||||
Dexer(D8) |
|
|||||||
Gradle |
|
|||||||
インポート / 同期 |
|
|||||||
圧縮ツール(R8) |
|
Android Studio Chipmunk | 2021.2.1 パッチ 1(2022 年 5 月)
このマイナー アップデートには、次のバグ修正が含まれています。
修正された問題 | |||
---|---|---|---|
Dexer(D8) |
|
||
IntelliJ |
|
||
実行 |
|
||
圧縮ツール(R8) |
|
Android Studio Bumblebee | 2021.1.1
Android Studio Bumblebee はメジャー リリースで、以下の機能と改善措置が組み込まれています。
Compose のインタラクティブ プレビューがデフォルトで有効
Android Studio Bumblebee 以降、インタラクティブ プレビュー機能がデフォルトで有効になっています。インタラクティブ プレビューでは、デバイス上で動作する場合と同じようにプレビューを操作できます。インタラクティブ プレビューは、サンドボックス環境で他のプレビューから分離された状態で実行され、プレビューの要素をクリックしたり、ユーザー入力を行ったりできます。このモードを使用することで、コンポーザブルのさまざまな状態や操作(チェックボックスのオンとオフの切り替えなど)を簡単にテストできます。
プレビューのインタラクティブ モードは、エミュレータを実行することなく Android Studio 内で直接実行されるため、いくつかの制限があります。
- ネットワークにアクセスできない。
- ファイルにアクセスできない。
- 一部の Context API を使用できない可能性がある。
アニメーション化ベクター型ドローアブル(AVD)のプレビュー
アニメーション化ベクター型ドローアブル ツールには、アニメーション化されたドローアブル リソースをプレビューする機能があります。このツールを使用すると、Android Studio で <animation-list>
、<animated-vector>
、<animated-selector>
の各リソースをプレビューできるため、カスタム アニメーションを簡単に調整できます。
デザインツールのデバイス選択ツールを更新
さまざまな Android デバイス向けにアプリを簡単に設計できるように、Layout Editor や Layout Validation などのさまざまなデザインツール ウィンドウのデバイス選択ツールが更新され、各デバイス フォーム ファクタの一般的なサイズを反映する参照デバイスが追加されました。スマートフォン、タブレット、Wear デバイス、Android TV など、実際の一般的なデバイスの代表的な画面サイズでのレイアウトのプレビュー、検証、編集が簡単になりました。
KMP のテスト実行
Android Studio Bumblebee から、Kotlin マルチプラットフォーム(KMP)プロジェクトのテストを実行できます。
Android Studio からテストを正常に実行するには、下記の要件をすべて満たしている必要があります。
- AGP 7.0.0-alpha08 以降
- Gradle 6.8.2 以降
- Kotlin プラグイン 1.4.30 以降
非推移的な R クラスがデフォルトでオン
非推移的な R クラスがデフォルトでオンになりました。非推移的な R クラスを Android Gradle プラグインとともに使用すると、複数のモジュールを持つアプリ向けに、より高速なビルドを作成できます。これにより依存関係の参照を取得せず、各モジュールの R クラスにそれ自体のリソースへの参照のみが含まれるようになるため、リソースの重複を回避するのに役立ちます。その結果、より新しいビルドが作成され、それに応じてコンパイル回避のメリットが得られます。
この機能の使用方法については、[Refactor] > [Migrate to Non-Transitive R Classes...] をご覧ください。
Apple Silicon のサポートの更新
Apple Silicon(arm64)ハードウェアで macOS を使用している方のために、Android Studio Arctic Fox と Android Emulator は昨年からこの新しいアーキテクチャをサポートしています。ただし今回のリリースでは、Android SDK プラットフォーム ツール v32.0.0(adb と fastboot を含む)とビルドツール v32.1.0(aapt を含む)が更新されてユニバーサル バイナリになったため、Android デベロッパー ツールで Rosetta バイナリ トランスレータを実行する必要がなくなりました。SDK プラットフォーム ツールのリリースノートをご覧ください。
Layout Inspector の新機能
レイアウト階層のスナップショットをキャプチャする
Layout Inspector では、実行中のアプリのレイアウト階層のスナップショットを保存できるようになったため、他のユーザーと簡単に共有したり、後で参照したりできます。
スナップショットには、Layout Inspector の使用時に通常表示されるデータがキャプチャされます。たとえば、レイアウトの詳細な 3D レンダリングや、View レイアウト、Compose レイアウト、ハイブリッド レイアウトのコンポーネント ツリー、UI の各コンポーネントの詳細な属性などです。スナップショットを保存する手順は次のとおりです。
- API レベル 23 以上が搭載されているデバイスにアプリをデプロイします。
- [View] > [Tool Windows] > [Layout Inspector] を選択して、Layout Inspector を開きます。
- Layout Inspector がアプリプロセスに自動的に接続されます。接続されない場合は、プルダウン メニューからアプリプロセスを選択します。
- スナップショットをキャプチャする際は、Layout Inspector ツールバーのスナップショットのエクスポート ボタン
をクリックします。
- 表示されるシステム ダイアログで、スナップショットの名前と保存する場所を指定します。必ず拡張子
*.li
を付けてファイルを保存してください。
メインメニュー バーで [File] > [Open] を選択し、*.li
ファイルを開くと、Layout Inspector のスナップショットを読み込むことができます。
Compose のセマンティクスの検査のサポート
Compose では、セマンティクスにより、ユーザー補助サービスとテスト フレームワークから認識しやすい別の方法で UI が記述されます。Android Studio Bumblebee では、Layout Inspector を使用して、Compose レイアウト内のセマンティック情報を検査できるようになりました。
Compose ノードを選択するときに、[Attributes] ウィンドウを使用して、セマンティック情報を直接宣言しているか、子のセマンティクスを結合しているか、その両方かを確認します。宣言しているか結合しているかにかかわらず、どのノードがセマンティクスを含んでいるかを簡単に調べるには、[Component Tree] ウィンドウで [View options] プルダウンを選択してから、[Highlight Semantics Layers] を選択します。これにより、ツリー内のセマンティクスを含むノードのみがハイライト表示され、キーボードを使用してそれらのノード間をすばやく移動できるようになります。
アクティビティの再起動を回避する
古いバージョンの Android Studio で実行中のアプリに Layout Inspector を接続すると、アプリのアクティビティが再起動します。これは、アプリのレイアウトの検査を有効にするデバイスフラグを設定するために必要です。
Android Studio Bumblebee では、次の手順のいずれかに沿って事前にこのフラグを設定しておくことで、Layout Inspector への接続時にアクティビティの再起動を回避できます。
実行構成オプションを有効にする
- メインメニュー バーから [Run] > [Edit Configurations] を選択します。[Run/Debug Configurations] ダイアログが表示されます。
- 使用する実行構成に移動します。
- [Layout Inspector options] セクションで、[Connect to Layout Inspector without restarting activity] の横にあるチェックボックスをオンにします。
- 次回 Layout Inspector を使用してアプリを検査するときに、実行構成を使用します。
コマンドラインからフラグを設定する
- デバイスに接続されているマシンでターミナル ウィンドウを開きます。
- 次のコマンドを使用して、アプリのデバイスフラグを設定します。
adb shell settings put global debug_view_attributes_application_package <my_package_name>
- アプリをデバイスにデプロイして、Layout Inspector を接続します。Android Studio は、フラグが設定されているかどうかを確認し、アクティビティの再起動をできるだけ回避します。
Layout Inspector のスナップショットを記録する
アプリのレイアウト階層のスナップショットをキャプチャして、後で保存、共有、または検査できるようになりました。スナップショットには、Layout Inspector の使用時に通常表示されるデータがキャプチャされます。たとえば、レイアウトの詳細な 3D レンダリングや、View レイアウト、Compose レイアウト、ハイブリッド レイアウトのコンポーネント ツリー、UI の各コンポーネントの詳細な属性などです。実行中のアプリのレイアウトを検査するときに、Layout Inspector ツールバーの [Export snapshot] をクリックして、スナップショットを
*.li
拡張子で保存します。メインメニュー バーで [File] > [Open] を選択し、*.li
ファイルを開くと、Layout Inspector のスナップショットを読み込むことができます。スナップショットはエディタ ウィンドウのタブに表示されるため、実行中のアプリと簡単に比較できます。
App Inspection の新機能
Android Studio Bumblebee の [App Inspection] ウィンドウに新しいツールと機能が追加されました。App Inspector を開くには、メインメニュー バーで [View] > [Tool Windows] > [App Inspection] を選択します。
Network Inspector
[Profilers] ツール ウィンドウの Network Profiler が [App Inspection] ツール ウィンドウに移動しました。前に Network Profiler を使用されていた場合は、これまでと同じ機能と豊富なネットワーク トラフィック データをすべて引き続きご利用いただけます。API レベル 26 以降を搭載したデバイスにアプリをデプロイし、[App Inspector] > [Network Inspector] タブを開くだけです。
ジョブ、アラーム、ウェイクロックを検査する
Background Task Inspector では、ワーカーの検査に対する既存のサポートに加えて、アプリのジョブ、アラーム、ウェイクロックを検査できるようになりました。各タイプの非同期タスクが [Inspector] タブの該当する見出しに表示されるようになり、タスクのステータスと進行状況を簡単にモニタリングできるようになりました。ワーカーと同様に、ジョブ、アラーム、またはウェイクロックを選択して [Task Details] パネルで詳細情報を調べることができます。
ワーカーは内部でジョブとウェイクロックを使用するため、ワーカーによってスケジュールされたこれらのタスクは、各ワーカーの子として表示されます。ワーカーはグラフモードでのみ表示できます。
ワイヤレス デバッグ
Android Studio Bumblebee は、Android 11 以降のデバイスでワイヤレス デバッグ機能をサポートしています。USB ケーブルを使用したり、コマンドラインを使用して Android Debug Bridge(adb)接続を管理したりすることなく、Wi-Fi 経由で Android Studio からアプリをペア設定してデプロイします。使用するには、デバイス選択メニューから [Pair devices using Wi-Fi] オプションに移動し、QR コードまたはペア設定用 PIN コードを選択します。次に、Android 11 以降のデバイスの [開発者向けオプション] で [ワイヤレス デバッグ] 画面を見つけ、Android Studio を使用して adb セッションを初期化しワイヤレスで接続します。ワイヤレス デバッグの設定について詳しくは、Wi-Fi 経由でデバイスに接続する(Android 11 以降)をご覧ください。
統合 Gradle テストランナー
Android Gradle プラグイン 7.1.0 と Android Studio Bumblebee 以降では、Android インストルメンテーション テスト ランナーの Gradle 独自の実装を使用して、インストルメンテーション テストを実行します。同じテストランナーを使用することで、継続的インテグレーション サーバーなど、コマンドラインから AGP を使用して実行した場合でも、Android Studio から AGP を使用して実行した場合でも、同じ結果が得られる可能性が高くなります。
以前のバージョンの Android Studio では、Gradle の Android インストルメンテーション テスト ランナーではなく、IntelliJ Android インストルメンテーション テスト ランナーを使用します。そのため、最新バージョンの Android Studio を使用しない場合は、テストを Android Studio から実行するか、Gradle プラグインを使用してコマンドラインから実行するかによって、結果が異なることがあります(あるランナーを使用してテストに合格し、別のランナーを使用して失敗するなど)。
すでにインストルメンテーション テスト構成がプロジェクトに保存されている場合は、Gradle を使用して、接続済みのデバイスでテストを実行できます。次に示すように、テストクラスまたはメソッドの横にあるガター アクションを使用して、新しいインストルメンテーション テスト構成を作成できます。
インストルメンテーション テストを実行するとき、Gradle のタスク出力のテスト マトリックスでテスト出力を調べることで、Android Studio が Gradle テストランナーを使用していることを確認できます。Android Studio のリリースごとにこの機能を改善していますが、既知の問題がいくつか存在します。問題が発生した場合は、バグを報告してください。新しいテスト パイプラインを無効にすることで、以前の動作に戻すこともできます。
Android Emulator がデフォルトで Android Studio 内で直接実行されるようになりました。
デフォルトでは、Android Emulator は Android Studio 内で直接実行されます。そうすることで、画面のスペースが有効活用でき、エミュレータとエディタ ウィンドウ間をホットキーを使って簡単に移動できるようになります。また、IDE とエミュレータ ワークフローが 1 つのアプリケーション ウィンドウ内にまとまります。
エミュレータの実行中に、回転などの一般的なエミュレータ操作と、ナビゲーション再生などの拡張コントロール オプションを利用できます。エミュレータを別のウィンドウで実行するには、[File] > [Settings] > [Tools] > [Emulator](macOS の場合は、[Android Studio] > [Preferences] > [Tools] > [Emulator])に移動し、[Launch in a tool window] の選択を解除します。
新しいテスト パイプラインを無効にする
Android Studio Bumblebee は、デフォルトで Gradle を使用してインストルメンテーション テストを実行します。問題が発生した場合は、次の手順でこの機能を無効にできます。
- [File] > [Settings] > [Build, Execution, Deployment] > [Testing](MacOS の場合は [Android Studio] > [Preferences] > [Build, Execution, Deployment] > [Testing])を選択します。
- [Run Android instrumented tests using Gradle] の隣にあるチェックボックスをオフにして、[OK] をクリックします。
次のいずれかの方法で、以前の動作に戻すこともできます。
- コマンドラインから Gradle タスクを実行する場合は、次のコマンドライン パラメータを使用します。
-Pandroid.experimental.androidTest.useUnifiedTestPlatform=false
- プロジェクトの
gradle.properties
ファイルにパラメータandroid.experimental.androidTest.useUnifiedTestPlatform=false
を追加します。
問題が発生した場合、問題を解決するためにバグを報告してください。
新しいデバイス マネージャ
デバイス マネージャは、AVD Manager の代わりとして機能し、Android Studio のウェルカム画面から、またはプロジェクトを開いた後に使用できます。デバイス マネージャーには、すべてのローカルテスト デバイスを簡単に作成、管理できる、以下の新しい機能が導入されています。
- 他の Android Studio ツール ウィンドウと同様に、IDE、フローティング、または別のウィンドウに固定できる、より柔軟な UI。IDE の他のウィンドウを妨げることなくデバイスに簡単にアクセスできます。
- [Virtual] タブ。仮想デバイスを作成、管理、デプロイでき、各デバイスの詳細を一目で確認できます。また、ワンクリックで Device File Explorer でデバイスをすばやく検査することもできます。
- [Physical] タブ。ADB Wifi を使用して新しいデバイスにすばやくペア設定でき、各実機の詳細を一目で確認できます。また、ボタンをクリックすると、Device File Explorer を使用して各デバイスのファイル システムをすばやく検査できます。
新しいデバイス マネージャを開くには、次のいずれかの手順を行います。
- Android Studio のウェルカム画面で、[More Actions] > [Virtual Device Manager] を選択します。
- プロジェクトを開いたら、メインメニュー バーから [View] > [Tool Windows] > [Device Manager] を選択します。
UI ジャンクの検出
Android 11(API レベル 30)以降を搭載するデバイスを使用してアプリをプロファイリングする場合、CPU Profiler には、各フレームの段階を示す新しい一連のトラックが表示されるようになりました([Frame Lifecycle]: [Application]、[Wait for GPU]、[Composition]、[Frames on display])。各トラックにはフレーム番号付きでフレームが表示され、長方形が色分けされているため、特定のフレームがライフサイクルのどこに位置しているのかを簡単に視覚化できます。また、Vsync イベントと比較するために切り替えられるガイドも表示されます。このデータを利用して、アプリ内でジャンクが発生する可能性のある場所を把握し、根本原因を調査できます。[Analysis] パネルには [Frames] タブが追加されました。このタブには、すべてのフレームのレンダリング情報がまとめられているので便利です。詳しくは、UI ジャンクの検出をご覧ください。
プロファイル可能なアプリのプロファイリングのサポート
アプリをプロファイリングするときは、ユーザーがインストールする予定のものに最も近いアプリのバージョンを使用して正確なデータを生成することが重要です。そのため、アプリのマニフェストに <profileable>
プロパティを追加して、デバッグ可能でないアプリをプロファイリングできるようになりました。次のコードをご覧ください。
<profileable android:shell="true"/>
profileable は Android 10 で導入されたマニフェストの設定で、CPU とメモリのプロファイリング タスクで使用できます。debuggable フラグの代わりに profileable フラグを使用することには、パフォーマンス測定のオーバーヘッドを削減できるという重要なメリットがあります。ただし、特定のプロファイリング機能(イベント タイムライン、API によって開始される CPU プロファイリング、ヒープダンプ、位置情報のライブ記録など)はプロファイル可能なビルドでは使用できません。詳しくは、プロファイル可能なアプリをご覧ください。
コールスタック フレームを閉じる
[Profilers] ツール ウィンドウで [Callstack Sample Recording] を調べるときに、検証に関係のないフレームを閉じることができるようになりました。コールスタックは、コードの実行された部分と、それが呼び出された理由を把握するために役立ちます。しかし、Java / Kotlin プログラムのコールスタックには通常、Java / Kotlin のコードだけでなくネイティブ コードのフレームも含まれているため、混乱を招く可能性があります。コールスタックの表示の調整について詳しくは、コールスタック フレームを検証するをご覧ください。
パッチリリース
Android Studio Bumblebee のパッチリリースを以下に示します。
Android Studio Bumblebee | 2021.1.1 パッチ 3(2022 年 4 月)
このマイナー アップデートには、次のバグ修正が含まれています。
- Android Gradle プラグイン
- R8 によって重複クラスの問題が報告された
- Build Variants
- 新しい onVariants API を通じてバリアントのバージョン名を設定した場合に、
versionNameSuffix
が機能しなくなる
- 新しい onVariants API を通じてバリアントのバージョン名を設定した場合に、
- Compose プレビュー
- パフォーマンスと安定性に関連するバグが修正されました。
- リテラルのライブ編集機能の使用時に発生することがあったフリーズを解決しました。
- Network Inspector
- Bumblebee アップデートが適用された後に、新しい Network Inspector がクラッシュする
- Android Studio の最新バージョンにデバッガが接続されていると、このエラーが常に表示されます。
TrackedHttpURLConnection.getHeaderField
がNullPointerException
でクラッシュする
Android Studio Bumblebee | 2021.1.1 パッチ 2(2022 年 2 月)
このアップデートには、次のバグ修正が含まれています。
- C++ ビルド
- ModelCache.safeGet(androidProjectResult.androidProject::getNdkVersion, "") を null に設定してはならない
- コードエディタ
- Android Studio ライブ テンプレートのバグ - className() 式でクラス名が解決されない
- D8 / R8
- java.lang.NoSuchMethodError: 静的メソッド $jacocoInit がない
- Mockito エラーのために Android テスト範囲が壊れる
- API 31 で壊れた CAS 実装に対する回避策が必要
- シールクラスがサポートされていない
- Chrome で水平クラスの統合を有効にする際に NullPointerException が発生
- 仮想メソッドの統合後に AbstractMethodError が発生
- init-class out-type が正しくないためスタック フレームを検証できない
- Dex 入力が、定義されていないレジスタを使用
- StringBuilderOptimizerAnalysisTest がリリース ブランチで失敗
- R8 での非決定性
- デプロイ
- デバイス所有者アプリのプロジェクトの実行が失敗し「Couldn't terminate the existing process for」というエラー メッセージが表示される
- デザインツール
- 非推移的な R クラスが有効になっている場合に、Compose プレビューで他のモジュールのリソースを検出できない
- Studio がビルド時にフリーズする
- 埋め込みエミュレータ
- その他のパフォーマンスと安定性を改善。
- インポート / 同期
- Bumblebee の起動時に IDE エラーが発生: IdeBuildTasksAndOutputInformationImp で出力タイプの APK にリスト ビルド ファイルの出力を利用できない
- IntelliJ
- Mac OS X Monterey Dock から起動したときに Env 変数を取得できない
- Jetpack (androidx) > Navigation
- 最新の安定版 AGP で SafeArgs のアップグレードをビルド予定
- ツール ウィンドウ
- Android デバイス マネージャーを実行できない
- BumbleBee の Network Inspector に API レスポンスが読み取り可能な形式で表示されない
Android Studio Bumblebee | 2021.1.1 パッチ 1(2022 年 2 月)
このマイナー アップデートには、次のバグ修正が含まれています。
- エミュレータ
- Bumblebee へのアップグレード後に埋め込みエミュレータに接続できない(Mac M1)
- IntelliJ
- Mac OS X Monterey Dock から起動したときに Env 変数を取得できない
詳細については、Android Studio Bumblebee パッチ 1 のブログ投稿をご覧ください。
Android Studio Arctic Fox | 2020.3.1
Android Studio Arctic Fox はメジャー リリースで、以下の機能と改善措置が組み込まれています。
Android Studio Arctic Fox | 2020.3.1 パッチ 4(2021 年 12 月)
このマイナー アップデートには、次のバグ修正が含まれています。
- Android Gradle プラグイン
VariantOutput.verison
の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 のブログ投稿をご覧ください。
新しいバージョン番号体系
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>
新しい 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 に自動的に通知できるようになりました。データ バインディングはライフサイクルを認識し、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 は互換性評価を実行し、プロジェクト内のまだ有効化されていない構成キャッシュになんらかの問題があれば、通知します。
AGP 用の Upgrade Assistant の改善
Android Gradle プラグイン用の Upgrade Assistant に、完了すべき手順のリストを示す固定ツール ウィンドウが追加されました。ツール ウィンドウの右側にも追加情報が表示されます。必要であれば、アップグレードする別のバージョンの AGP を選択することもできます。[Refresh] ボタンをクリックすると、対応する更新手順が更新されます。
非推移的な R クラスのリファクタリング
非推移的な R クラスを Android Gradle プラグインとともに使用すると、複数のモジュールを持つアプリ向けに、より高速なビルドを作成できます。これを行うと、各モジュールの R クラスにそれ自体のリソースへの参照のみが含まれるようになり、依存関係から参照が取得されないため、リソースの重複を回避できます。その結果、より新しいビルドが作成され、それに応じてコンパイル回避のメリットが得られます。
この機能を利用するには、[Refactor] > [Migrate to Non-transitive R Classes] に移動します。
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] テンプレートを選択します。
Arctic Fox の既知の問題
このセクションでは、Android Studio Arctic Fox で現在判明している問題について説明します。
Windows で v3.6~v4.1 用のパッチが機能しない
Windows プラットフォームで v3.6~v4.1 用のパッチを Android Studio Arctic Fox の安定版に適用しようとすると、機能しないことがあります。
4.2(2021 年 4 月)
Android Studio 4.2 はメジャー リリースで、さまざまな新機能や改善措置が組み込まれています。
4.2.2(2021 年 6 月)
このマイナー アップデートには、さまざまなバグの修正が含まれています。 主なバグ修正のリストについては、リリース アップデート情報ブログの関連記事をご覧ください。
4.2.1(2021 年 5 月)
Kotlin プラグイン 1.5.0 をバンドルするマイナー アップデートです。さまざまなバグの修正が含まれています。主なバグ修正のリストについては、リリース アップデート情報ブログの関連記事をご覧ください。
Android Gradle プラグイン 4.2.0
最新バージョンの Android Gradle プラグインには多くのアップデートが含まれています。詳細については、Android Gradle プラグインのリリースノート全体をご覧ください。
Gradle の互換性と構成の変更
Android Studio で実行する場合、Gradle ビルドツールは Studio のバンドルされた JDK を使用します。以前のリリースでは、JDK 8 が Studio にバンドルされていました。しかし、4.2 では JDK 11 がバンドルされるようになりました。新しくバンドルされた JDK を使用して Gradle を実行すると、ガベージ コレクタの変更により、一部で非互換性が生じたり、JVM のパフォーマンスに影響を与えたりする場合があります。これらの問題については、AGP リリースノートをご覧ください。
Gradle の同期時間を最適化するオプション
Gradle Sync のパフォーマンスを改善するため、Android Studio では同期中にタスクリストの作成がスキップされます。これにより、Gradle Sync の処理が速くなり、大規模なプロジェクトで UI の応答性が向上します。このオプションは、Android Studio 4.2 ではデフォルトで有効になっています。無効にするには、[File] > [Settings] > [Experimental](Mac の場合は [Preferences] > [Experimental])に移動し、[Do not build Gradle task list during Gradle sync] のチェックボックスをオフにします。
Database Inspector
クエリエディタの改善
Database Inspector に、カスタム SQL ステートメントの作成と実行に役立つ改善が行われました。Database Inspector を開いて [New query] タブを開くと、以下に示すように、クエリを作成してフォーマットするためのサイズ変更可能なエディタ サーフェスが大きく表示されます。
また、以前のクエリの履歴も表示できるようになりました。Show query history ボタンをクリックすると、現在選択されているデータベースに対して以前実行されたクエリのリストが表示されます。リスト内のクエリをクリックするとエディタにクエリ全体のプレビューが表示され、Enter キーを押すとエディタにコピーされます。[Run] をクリックするとステートメントが実行されます。
オフライン モード
以前のバージョンの Android Studio では、Database Inspector の使用中にアプリのプロセスから切断すると、Database Inspector とそのデータが閉じられていました。Android Studio 4.2 では、プロセスからの切断後もアプリのデータベースを検査し続ける機能が追加され、クラッシュの後にアプリをデバッグしやすくなりました。
切断が発生すると、Database Inspector はデータベースをダウンロードして、オフライン モードで利用できるようにします。オフラインの場合はテーブルを開いてクエリを実行できます。
ライブアプリ プロセスに再接続すると Database Inspector はライブモードに戻り、デバイス上のデータしか表示されないことにご注意ください。つまり、オフライン プロセスで表示されるデータは、アプリプロセスに再接続すると保持されません。このため Database Inspector は、オフライン モードでは変更ステートメントの編集や実行ができません。
AGP 用の Upgrade Assistant
Android Gradle プラグイン用の新しい Upgrade Assistant により、プロジェクトの AGP バージョンを更新しやすくなります。
既存の AGP アップグレード機能を基に構築されたこのツールは、プロジェクト全体のアップデートとリファクタリングをガイドします。また、アップデートのプレビューが含まれており、AGP アップグレードを実行する前に互換性を破る変更を防止するために役立ちます。
システム トレース: メモリとグラフィックの指標の改善
CPU Profiler で、システム トレース機能にアプリ パフォーマンスを分析するための新しい指標が追加されました。次の機能が含まれています。
イベント テーブル。現在選択されているスレッドのすべてのトレース イベントが一覧表示されます。
BufferQueue。この新しいトラックは、ディスプレイ セクションでアプリのサーフェス BufferQueue(0、1、2 のいずれか)のバッファ数を表示するため、Android グラフィック コンポーネント間を移動する際に画像バッファの状態を把握するのに役立ちます。
CPU 周波数。この新しいトラックは、CPU cores セクションでコアごとの CPU 周波数を表示し、各コアの働きを示します。
Process Memory(RSS)。この新しいウィンドウには、アプリで現在使用されている物理メモリの量が表示されます。
詳細については、CPU Profiler を使用して CPU アクティビティを検査するをご覧ください。
Layout Inspector の新しい更新アクション
Android Studio 4.0 で導入された Layout Inspector は、実行中のアプリの UI スタックをリアルタイムで検査できるように設計されました。しかし、特定の時点におけるアプリのレイアウトのスナップショットを検査したい場合や、リアルタイムで更新することによるアプリへのパフォーマンスへの影響を最小限に抑えたい場合など、Layout Inspector にアプリの状況をすぐには反映させたくないケースも考えられます。
ライブ アップデートを一時停止し、Layout Inspector でスクリーン キャプチャを更新します。
アプリから UI データのスナップショットを手動で読み込むには、まず [Live updates] オプションを無効にします。その後、Refresh ボタンをクリックすると、検査する UI スタックの新しいスナップショットを取得できます。Layout Inspector では、セッション間で [Live updates] を常に有効または無効にする設定を保持するようになりました。
Safe Args のサポート
Safe Args は、ナビゲーションや関連引数へのアクセスをタイプセーフに行うためのシンプルなオブジェクトとビルダークラスを生成する Gradle プラグインです。Android Studio には、以下に示す通り、Safe Args を扱う場合の特別なサポートが追加されました。
- Directions、Args、各種ビルダークラスのオートコンプリート
- Java と Kotlin 両方の Safe Args プラグインのサポート
- ソースから XML へのナビゲーション
コマンドライン ツールで R8 retrace を利用可能
コマンドライン ツールのバージョン 4.0 で利用できる R8 retrace は、難読化されたスタック トレースから元のスタック トレースを取得するためのスタンドアロン ツールです。
このパッケージは SDK Manager を使ってダウンロードできます。SDK Manager は R8 retrace を android_sdk/cmdline-tools
にインストールします。または、スタンドアロンのコマンドライン ツール パッケージをダウンロードすることもできます。
使用方法については、ユーザーガイドの R8 retrace をご覧ください。
複数のデバイスへのデプロイ
複数のデバイスや API レベルでアプリのテストを効率化するために、次の手順に沿って、アプリを複数のデバイスやエミュレータに同時にデプロイできるようになりました。
対象デバイスのプルダウン メニュー(IDE の上部中央)で [Select Multiple Devices] を選択します。
対象デバイスを選択し、[OK] をクリックします。
アプリを実行します。
機能モジュールの新しい removable
設定
Android Gradle プラグイン 4.2 は bundletool
1.0.0 を使用しており、機能モジュールを使用したアプリでの動作が変更されています。明示的に dist:removable
とマークされていない、dist:install-time
と指定された機能モジュールは、デフォルトでは removable ではなくなります。この新しい設定により、インストール時のモジュールと基本モジュールの融合が最適化され、一部のアプリのパフォーマンスが改善される可能性があります。
機能モジュールを removable として保持するには、アンインストールするモジュールに対して dist:removable="true"
を設定します。
この新しい設定の詳細については、機能モジュールのマニフェストのドキュメントにある dist:removable
タグのドキュメントをご覧ください。
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 デバイスで実行中のアプリにデプロイできるようになりました。
更新された New Project および New Module ウィザード
[New Project] ウィザードと [New Module] ウィザードがアップデートされ、新しいプロジェクトやモジュールの閲覧、テンプレートの選択、情報の入力が簡単になりました。
また、[New Module] ウィザードから [Import .JAR/.AAR Package] オプションが削除されました。JAR または AAR をプロジェクトにインポートするには、代わりに [Project Structure] ダイアログを使用します。
Kotlin 1.4.31
Android Studio 4.2 には、Kotlin 1.4.31 がバンドルされています。主な変更点は、Kotlin 1.4.0 の変更履歴をご確認ください。
ANDROID_SDK_HOME
環境変数の非推奨
ANDROID_SDK_HOME
環境変数が非推奨になり、ANDROID_PREFS_ROOT
に置き換えられました。詳しくは、エミュレータの環境変数をご覧ください。
Android Studio 4.2 に関する既知の問題
このセクションでは、Android Studio 4.2 に関する既知の問題について説明します。完全なリストについては、既知の問題ページをご覧ください。
Android Studio 4.2.0 が、誤った Kotlin バージョン「1.5.0-release-764」でプロジェクトを生成する
Android Studio 4.2.0 を使用していて、Kotlin プラグイン 1.5.0 にアップグレードした場合、「Could not find org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.0-release-764.
」という Gradle 同期エラーにより、Android Studio で作成された新しい Kotlin プロジェクトがビルドに失敗します。
回避策として、プロジェクトの build.gradle
ファイルで「1.5.0-release-764」を「1.5.0」に置き換えてください。
鍵とキーストアに異なるパスワードを使用するとエラーになる
バージョン 4.2 以降、Android Studio は JDK 11 で動作するようになりました。このアップデートにより、署名鍵に関連する基本的な動作変更が発生します。
[Build] > [Generate Signed Bundle / APK] に移動し、App Bundle または APK のアプリ署名を構成しようとすると、鍵とキーストアに異なるパスワードを入力した場合に、次のエラーが発生する可能性があります。
Key was created with errors:
Warning: Different store and Key passwords not supported for PKCS12 Key stores
この問題を回避するには、鍵とキーストアの両方に同じパスワードを入力します。
バージョン 4.2 のインストール後に Android Studio が起動しない
Studio は、以前の .vmoptions をインポートして、JDK 11 で使用されているガベージ コレクタで動作するようにサニタイズしようとします。この処理が失敗すると、.vmoptions ファイルでカスタム VM オプションを設定した特定のユーザーについて、IDE が起動しないことがあります。
この問題を回避するには、.vmoptions でカスタム オプションをコメントアウト(「#」文字を使用)することをおすすめします。.vmoptions ファイルは次の場所にあります。
Windows
C:\Users\YourUserName\AppData\[Local|Roaming]\Google\AndroidStudio4.2\studio64.exe.vmoptions
macOS
~/Library/Application Support/Google/AndroidStudio4.2/studio.vmoptions
Linux
~/.config/Google/AndroidStudio4.2/studio64.vmoptions
この回避策を試しても Studio が起動しない場合は、以下のアップグレード後に Studio が起動しないをご覧ください。
4.1(2020 年 8 月)
Android Studio 4.1 はメジャー リリースで、さまざまな新機能や改善措置が組み込まれています。
4.1.3(2021 年 3 月)
このマイナー アップデートには、さまざまなバグの修正が含まれています。 主なバグ修正のリストについては、リリース アップデート情報ブログの関連記事をご覧ください。
4.1.2(2021 年 1 月)
このマイナー アップデートには、さまざまなバグの修正が含まれています。 主なバグ修正のリストについては、リリース アップデート情報ブログの関連記事をご覧ください。
4.1.1(2020 年 11 月)
このマイナー アップデートには、さまざまなバグの修正が含まれています。 主なバグ修正のリストについては、リリース アップデート情報ブログの関連記事をご覧ください。
Android Gradle プラグイン 4.1.0
最新バージョンの Android Gradle プラグインには多くのアップデートが含まれています。詳細については、Android Gradle プラグインのリリースノート全体をご覧ください。
新しい Database Inspector
新しい Database Inspector を使用して、実行中のアプリのデータベースを検査、クエリ、変更できます。まず、API レベル 26 以上が搭載されているデバイスにアプリをデプロイし、メニューバーから [View] > [Tool Windows] > [Database Inspector] を選択します。
詳細については、Database Inspector を使用してデータベースをデバッグするをご覧ください。
Android Studio で Android Emulator を直接実行する
Android Studio で Android Emulator を直接実行できるようになりました。この機能を使用すると、画面のスペースを節約し、ホットキーを使用してエミュレータとエディタ ウィンドウ間をすばやく移動し、IDE とエミュレータ ワークフローを 1 つのアプリケーション ウィンドウ内で整列できます。
詳細については、Android Emulator のドキュメントをご覧ください。
TensorFlow Lite モデルを使用する
ML Model Binding を使用すると、簡単に .tflite
モデルファイルを直接インポートしてプロジェクトで使用できます。Android Studio では使いやすいクラスが作成されるため、モデルを実行する際のコードが減り、型の安全性が高まります。
サポートされているモデル
ML Model Binding の現在の実装では、画像分類モデルやスタイル転送モデルがサポートされています(ただし、メタデータで拡張されている場合)。今後、物体検知、画像セグメンテーション、テキスト分類など、他の問題領域にもサポートを拡大していく予定です。
TensorFlow Hub には、メタデータを含むさまざまな事前トレーニング済みのモデルが用意されています。また、TensorFlow Lite モデルにメタデータを追加するに記載されているように、TensorFlow Lite モデルにメタデータを自分で追加することもできます。
モデルファイルをインポートする
サポートされているモデルファイルをインポートする手順は次のとおりです。
- [File] メニューで [File] > [New] > [Other] > [TensorFlow Lite Model] を選択し、TensorFlow Lite モデルのインポート ダイアログを開きます。
- 以前にダウンロードまたは作成した
.tflite
モデルファイルを選択します。 - [Finish] をクリックします。
この操作により、モデルファイルがプロジェクトにインポートされ、ml/
フォルダに配置されます。ディレクトリが存在しない場合は、Android Studio によって作成されます。
モデルのメタデータと使用方法の表示
インポートしたモデルの詳細とアプリでの使用方法を確認するには、プロジェクト内のモデルファイルをダブルクリックして、モデルビューア ページを開きます。モデルビューア ページには、次の内容が表示されます。
- Model: モデルの概要
- Tensors: 入力テンソルと出力テンソルの説明
- Sample code: アプリのモデルとのやり取りの例
mobilenet_v1_0.25_160_quantized.tflite を使用した例は次のとおりです。
この例で示されるように、Android Studio はモデルを操作するための MobilenetV1025160Quantized
というクラスを作成します。
モデルにメタデータがない場合、この画面には最小限の情報しか表示されません。
既知の問題と回避策
- 現在、画像分類とスタイル転送以外の問題領域に対する TensorFlow Lite モデルのサポートは制限されています。インポートは正常に機能しますが、一部のモデル入力やモデル出力は、わかりやすい型ではなく TensorBuffers で表されます。メタデータのないモデルの場合、モデルの入力と出力はすべて TensorBuffer になります。
- 入力データ型と出力データ型が
DataType.UINT8
またはDataType.FLOAT32
と異なるモデルは、サポートされていません。
この機能はまだ開発中ですので、フィードバックをお送りいただくか、バグをご報告ください。
Native Memory Profiler
Android Studio の Memory Profiler に、Android 10 以降を搭載する物理デバイスにデプロイされるアプリ向けの Native Memory Profiler が追加されました。Native Memory Profiler を使用すると、ネイティブ コードからのメモリ割り当てと割り当て解除を記録し、ネイティブ オブジェクトに関する累積統計情報を検査できます。
Native Memory Profiler の詳細については、Memory Profiler を使用してアプリのメモリ使用状況を検査するをご覧ください。
既知の問題と回避策
Android Studio 4.1 の Native Memory Profiler は、Android 11 デバイスでは機能しません。Android 11 デバイスのプロファイリングは、現在 4.2 プレビュー リリースでサポートされています。
4.1 の初回リリースでは、アプリの起動プロファイリングは無効になっています。このオプションは、今後のリリースで有効になる予定です。
回避策として、Perfetto スタンドアロン コマンドライン プロファイラを使用して、起動プロファイルをキャプチャできます。
システム トレース UI: より簡単な選択、新しい分析タブ、フレーム レンダリング データの増加
Android Studio プロファイラのシステム トレース UI では、次の点が改善されています。
ボックス選択: [Threads] セクションでは、マウスをドラッグして長方形領域のボックス選択を行えるようになりました。右上の [Zoom to Selection]
ボタンをクリックして(または M キーボード ショートカットを使用して)ズームできます。隣同士にある同様のスレッドをドラッグ&ドロップすると、複数のスレッドを選択してすべてを一度に調査できます。たとえば、複数のワーカー スレッドで分析を実行できます。
[Summary] タブ: [Analysis] パネルの新しい [Summary] タブには次の項目が表示されます。
- 特定のイベントのすべての発生に関する集計データ(発生回数や最小 / 最大期間など)。
- 選択した発生に関するトレース イベントの統計情報。
- スレッドの状態分布に関するデータ。
- 選択したトレース イベントのうち最も実行時間の長い発生。
別の発生に移動するには、表から別の行を選択します。
[Display] のデータ: [Display] セクションでは、SurfaceFlinger と VSYNC の新しいタイムラインを使用して、アプリの UI におけるレンダリングの問題を調査できます。
システム トレースの記録に関する基本的な使用方法については、CPU Profiler を使用して CPU アクティビティを検査するのトレースを記録するをご覧ください。
スタンドアロン プロファイラの提供
新しいスタンドアロン プロファイラを使用することで、完全な Android Studio IDE を実行しなくてもアプリをプロファイリングできるようになりました。
スタンドアロン プロファイラの使用手順については、スタンドアロン プロファイラを実行するをご覧ください。
Dagger のナビゲーションのサポート
Android Studio では、新しいガター アクションを用意し、[Find Usages] ウィンドウでのサポートを拡張することで、Dagger 関連のコード間を簡単に移動できるようにしています。
新しいガター アクション: Dagger を使用するプロジェクトの場合、IDE には、Dagger のアノテーションが付いたコード間を移動するためのガター アクションが用意されています。たとえば、特定のタイプを使用するメソッドの横にある
ガター アクションをクリックすると、そのタイプのプロバイダに移動します。反対に、
ガター アクションをクリックすると、そのタイプが依存関係として使用されている箇所に移動します。
[Find Usages] ノード: 特定のタイプのプロバイダで [Find Usages] を呼び出すと、[Find] ウィンドウにはそのタイプのコンシューマを一覧表示した [Dependency consumer(s)] ノードが表示されるようになりました。反対に、Dagger によって挿入された依存関係のコンシューマでこのアクションを呼び出すと、[Find] ウィンドウにはその依存関係のプロバイダが表示されます。
マテリアル デザイン コンポーネント: 新しいプロジェクト テンプレートのテーマとスタイルの更新
[Create New Project] ダイアログの Android Studio テンプレートはマテリアル デザイン コンポーネント(MDC)を使用するようになりました。テーマとスタイルに関するガイドラインの更新版をデフォルトで遵守しています。更新の内容は次のとおりです。
- MDC: プロジェクトは
build.gradle.
のcom.google.android.material:material
に依存します。ベースアプリのテーマはTheme.MaterialComponents.*
の親を使用し、MDC の更新された色と「on」属性をオーバーライドします。 - カラーリソース:
colors.xml
のカラーリソースではリテラル名を使用します(たとえば、colorPrimary
ではなくpurple_500
を使用します)。 - テーマリソース: テーマリソースは(
styles.xml
ではなく)themes.xml
に含まれており、Theme.<ApplicationName>
の名前を使用します。 - ダークテーマ: ベースアプリのテーマは
DayNight
の親を使用し、res/values
とres/values-night
に分かれています。 - テーマ属性: ハードコードされた色を避けるため、カラーリソースはレイアウトとスタイルでテーマ属性として参照されます(例:
?attr/colorPrimary
)。
IntelliJ IDEA 2020.1
IntelliJ IDEA 2020.1 リリースによる改善に伴い、コアの Android Studio IDE が更新されました。バージョン管理操作が可能な新しい [Commit] ウィンドウや、[View] > [Appearance] > [Enter Distraction Free Mode] を選択することで切り替え可能な新しい Zen モードなどが追加されています。
バージョン 2020.1 の改善について詳しくは、以下のページをご覧ください。
IDE 構成ディレクトリの変更
ユーザー構成ディレクトリの場所が次のように変更されました。
Windows
構文: %APPDATA%\Google\<product><version>
例: C:\Users\YourUserName\AppData\Roaming\Google\AndroidStudio4.1
macOS
構文: ~/Library/Application Support/Google/<product><version>
例: ~/Library/Application Support/Google/AndroidStudio4.1
Linux
構文: ~/.config/Google/<product><version>
例: ~/.config/Google/AndroidStudio4.1
この新しいディレクトリの場所は、Android Studio の基盤となる IDE である IntelliJ IDEA の最近のアップデートと一致しています。
Kotlin 1.3.72
Android Studio 4.1 には、Kotlin 1.3.72 がバンドルされています。これには、Kotlin のハイライト表示、インスペクション、コード補完を改善する多数の修正が含まれています。詳細については、Kotlin 1.3.72 の変更履歴をご覧ください。
カスタムビューのプレビュー
Android Studio でカスタムビューを作成(たとえば View
クラスや Button
クラスの拡張などによって)するときに、カスタムビューのプレビューが表示されるようになりました。ツールバーのプルダウン メニューを使用して複数のカスタムビューを切り替えたり、ボタンをクリックしてコンテンツを垂直または水平にラップしたりできます。
ネイティブ クラッシュ レポートのシンボリケーション
ネイティブ コードでクラッシュや ANR が発生すると、システムはスタック トレースを生成します。スタック トレースとは、クラッシュの時点までにプログラムで呼び出された、ネストされた関数のシーケンスのスナップショットです。このスナップショットは、ソース内の問題を特定して修正するのに役立ちますが、最初にシンボリケートして、マシンアドレスを人が読める形式の関数名に変換する必要があります。
アプリやゲームが C++ などのネイティブ コードを使用して開発されている場合、アプリのバージョンごとにデバッグ シンボル ファイルをアップロードできます。Play Console は、これらのデバッグ シンボル ファイルを使用してアプリのスタック トレースをシンボリケートし、クラッシュや ANR を分析しやすくします。デバッグ シンボル ファイルをアップロードする方法については、ネイティブ クラッシュのサポートをご覧ください。
Apply Changes
アプリを反復開発する際の生産性を向上させるため、Android 11 デベロッパー プレビュー 3 以降を実行するデバイス向けの Apply Changes を次のように改良しました。
デプロイ速度の向上
アプリをインストールせずにデバイス上で変更をデプロイして永続化する方法を開発することにより、反復開発の速度の最適化に大きく投資しました。最初のデプロイ後に [Apply Code Changes] または [Apply Changes and Restart Activity]
を使用して Android 11 デバイスにデプロイする処理は、速度が向上しています。
2 つのアクションの違いについては、Apply Changes をご覧ください。
追加のコード変更のサポート
Android 11 デベロッパー プレビュー 3 以降を実行するデバイスの場合、メソッドを追加してから、[Apply Code Changes] または [Apply Changes and Restart Activity]
をクリックすることで、それらの変更を実行中のアプリにデプロイできるようになりました。
4.0(2020 年 5 月)
Android Studio 4.0 はメジャー リリースで、さまざまな新機能や改善措置が組み込まれています。
このマイナー アップデートには、さまざまなバグ修正と、Android 11 でのパッケージの公開設定の新しいデフォルト設定のサポートが含まれています。詳細については、Android Gradle プラグイン 4.0.1 のリリースノートをご覧ください。
このリリースの主なバグ修正のリストについては、リリース アップデート情報ブログの関連記事をご覧ください。
4.0(2020 年 5 月)
重要: 更新後に、以前のバージョンの IDE から移行したメモリ設定を適用するには、Android Studio を再起動する必要があります。詳細については、既知の問題のページをご覧ください。
Android Gradle プラグイン 4.0.0
最新バージョンの Android Gradle プラグインには、古いバージョンの Android 用の Java 8 の desugaring や、Feature-on-Feature 依存関係など、多くのアップデートが含まれています。詳細については、Android Gradle プラグインのリリースノート全体をご覧ください。
また、ビルド パフォーマンスの向上に役立つ新機能が Android Studio に追加されました。
Build Analyzer
Android Gradle プラグイン 4.0.0 以降で Android Studio 4.0 を使用する場合、最適化の無効化やタスクの不適切な設定など、ビルドプロセスの問題を理解および診断するうえで [Build Analyzer] ウィンドウが役に立ちます。[Build Analyzer] ウィンドウを開くには、次の手順を行います。
- まだアプリのビルドを行っていない場合は、メニューバーから [Build] > [Make Project] を選択してアプリをビルドします。
- メニューバーから [View] > [Tool Windows] > [Build] を選択します。
- [Build] ウィンドウで、次のいずれかの方法で [Build Analyzer] ウィンドウを開きます。
- Android Studio でプロジェクトのビルドが完了したら、[Build Analyzer] タブをクリックします。
- Android Studio でプロジェクトのビルドが完了したら、[Build Output] ウィンドウの右側のリンクをクリックします。
[Build Analyzer] ウィンドウの左側のツリーには、起こり得るビルドの問題がまとめられます。各問題をクリックすると、右側のペインで詳細を調べることができます。Android Studio を使ってビルドを分析すると、ビルド時間を決定付けたタスクセットを求め、各タスクの影響を可視化して把握しやすいようにできます。[Warnings] ノードを展開して、警告の詳細を確認することもできます。
ビルド時間を決定付けたタスクを調べます。
Java 8 ライブラリの desugaring が含まれる D8 と R8
Android Studio では、アプリの最小 API レベルを必要とせずに、多数の Java 8 言語 API の使用がサポートされています。
desugaring と呼ばれるプロセスにより、Android Studio 3.0 以降の DEX コンパイラ D8 はすでに、Java 8 言語機能(ラムダ式、デフォルトのインターフェース メソッド、リソースの試用など)の実質的なサポートを提供しています。Android Studio 4.0 では desugaring エンジンが拡張され、Java 言語 API を desugar できるようになりました。つまり、最近の Android でしか使用できなかった標準的な言語 API(java.util.streams
など)を古いバージョンの Android アプリでも使用できるようになりました。
このリリースでは次の API がサポートされています。
- 連続ストリーム(
java.util.stream
) java.time
のサブセットjava.util.function
java.util.{Map,Collection,Comparator}
の最新の追加 API- オプション(
java.util.Optional
、java.util.OptionalInt
、java.util.OptionalDouble
)および上記の API で役立つその他の新しいクラス java.util.concurrent.atomic
の追加 API(AtomicInteger
、AtomicLong
、AtomicReference
の新しいメソッド)ConcurrentHashMap
(Android 5.0 のバグを修正)
上記言語 API のサポートのため、D8 は不足している API の実装を含む単独のライブラリ DEX ファイルをコンパイルし、この実装をアプリに追加します。desugar プロセスはアプリのコードを書き換えて、ランタイム時に代わりにこのライブラリを使用するようにします。
このような言語 API のサポートを有効にするには、アプリ モジュールの build.gradle
ファイルに以下を記述します。
Groovy
android { defaultConfig { // Required when setting minSdkVersion to 20 or lower multiDexEnabled true } compileOptions { // Flag to enable support for the new language APIs coreLibraryDesugaringEnabled true // Sets Java compatibility to Java 8 sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } dependencies { coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.4' }
Kotlin
android { defaultConfig { // Required when setting minSdkVersion to 20 or lower multiDexEnabled = true } compileOptions { // Flag to enable support for the new language APIs coreLibraryDesugaringEnabled = true // Sets Java compatibility to Java 8 sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } } dependencies { coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.0.4") }
また、次の場合は、ライブラリ モジュールの build.gradle
ファイルにも上記のコード スニペットを含める必要があります。
ライブラリ モジュールのインストルメンテーション テストで、このような言語 API を直接使用するか、ライブラリ モジュールまたはその依存関係を通じて使用する場合。これは、インストルメンテーション テスト APK を実行するために不足している API を提供する場合に行います。
ライブラリ モジュールの lint を単独で実行する場合。これは、Lint が言語 API が有効に使用されていることを認識し、誤った警告を報告しないようにするために行います。
Feature-on-Feature 依存関係
以前のバージョンの Android Gradle プラグインでは、すべての機能モジュールがアプリのベース モジュールのみに依存していました。Android Gradle プラグイン 4.0.0 以降を使用する場合、別の機能モジュールに依存する機能モジュールを含めることができるようになりました。つまり、以下の図に示すとおり、:video
機能は、ベース モジュールに依存する :camera
モジュールに依存することが可能です。
機能モジュール :video
は、ベース :app
モジュールに依存する機能 :camera
に依存します。
つまり、アプリによって機能モジュールのダウンロードがリクエストされると、その機能モジュールが依存する他の機能モジュールもダウンロードされます。アプリの機能モジュールを作成した後、モジュールの build.gradle
ファイルで Feature-on-Feature 依存関係を宣言できます。たとえば、:video
モジュールで :camera
に対する依存関係を宣言する場合、次のようになります。
Groovy
// In the build.gradle file of the ':video' module. dependencies { // All feature modules must declare a dependency // on the base module. implementation project(':app') // Declares that this module also depends on the 'camera' feature module. implementation project(':camera') ... }
Kotlin
// In the build.gradle file of the ':video' module. dependencies { // All feature modules must declare a dependency // on the base module. implementation(project(":app")) // Declares that this module also depends on the 'camera' feature module. implementation(project(":camera")) ... }
また、メニューバーから [Help] > [Edit Custom VM Options] をクリックして以下の行を含め、Android Studio の Feature-on-Feature 依存関係機能を有効にする必要があります(たとえば、実行構成の編集時にこの機能をサポートするため)。
-Drundebug.feature.on.feature=true
依存関係のメタデータ
Android Gradle プラグイン 4.0.0 以降を使用してアプリをビルドする場合、アプリにコンパイルされる依存関係を記述するメタデータがプラグインに含まれます。アプリをアップロードすると、Play Console でこのメタデータが検査され、次のようなメリットがあります。
- アプリで使用する SDK と依存関係に関する既知の問題のアラートを取得する
- これらの問題を解決するための実用的なフィードバックを受け取る
データは圧縮され、Google Play の署名鍵で暗号化され、リリースアプリの署名ブロックに保存されます。ただし、ディレクトリ <project>/<module>/build/outputs/sdk-dependencies/release/sdkDependency.txt
のローカル中間ビルドファイルでは自分でメタデータを検査できます。
この情報を共有したくない場合は、モジュールの build.gradle
ファイルに次の情報を含めることでオプトアウトできます。
Groovy
android { dependenciesInfo { // Disables dependency metadata when building APKs. includeInApk = false // Disables dependency metadata when building Android App Bundles. includeInBundle = false } }
Kotlin
android { dependenciesInfo { // Disables dependency metadata when building APKs. includeInApk = false // Disables dependency metadata when building Android App Bundles. includeInBundle = false } }
Kotlin DSL スクリプト ファイルのサポート
Android Gradle プラグインは、Kotlin DSL ビルド スクリプト ファイル(*.kts
)をサポートするようになりました。Android Studio で使用する場合、[Project Structure] ダイアログやビルド スクリプトのクイック フィックスのような特定の IDE 機能で、Kotlin ビルド スクリプト ファイルの読み書きもサポートされるようになりました。
CPU Profiler のアップグレード
皆様からのフィードバックに基づいて、CPU Profiler のユーザー エクスペリエンスの向上に努めた結果、2 つの重要な点で成果を上げることができました。
まず、以前の Android Studio リリースと比較して、CPU Profiler での CPU の記録におけるエラー率が大幅に削減されました。
また、CPU Profiler の UI が一新され、より直感的なワークフローを提供できるようになりました。UI の主な変更点は次のとおりです。
- CPU の記録がメインのプロファイラのタイムラインから切り離され、分析が容易になりました。記録されたデータは、[Profiler] ウィンドウの左側にグループ別に整理されています。グループを上下に移動してリストを再編成するには、ウィンドウの右上にあるオプションの
をクリックするか、グループ内の個々のアイテムをドラッグ&ドロップします。
- スレッド アクティビティのタイムライン内にあるすべてのスレッド アクティビティ(メソッド、関数、イベントなど)を表示できるようにし、対比分析を容易にしています。タイムライン内を移動する方法はいくつかあります。
- 特定の時点にフォーカスするには、左上の CPU 使用率グラフ内で範囲をドラッグします。
- ズームインまたはズームアウトするには、Ctrl キー(macOS の場合は command キー)を押しながらマウスホイールを使用します。左右にパンするには、Space キーを押しながらドラッグします。
- または、W キーと A キーでズームインとズームアウト、S キーと D キーで左右にパンすることもできます。この方法を使うと、より細かい操作が可能になります。
- [Flame Chart] タブ、[Top Down] タブ、[Bottom Up] タブの分析が、右側の列になりました。[Threads] グループのスレッドについて、システム トレースの記録の場合は自動的に展開され、他の記録形式の場合はデフォルトで折りたたまれています。スレッド名をダブルクリックして(または Enter キーを押して)、スレッドを展開または折りたたむことができます。
- スクリーンショットに示されているように、システム トレース UI も改善されています。
- イベントは簡単に区別できるように色分けされています。
- スレッドは、そのスレッド内のトレース イベント数で並べ替えられます。そのため、処理の多いスレッドがリストの上位にランク付けされます。
- 1 つまたは複数のスレッドを選択すると、選択したスレッドの分析のみが右側の列に表示されます。
- 同様に、任意のスレッド内でトレース イベントを選択して、その分析データを表示できます。
デザインツール
Android Studio のこのバージョンには、Layout Inspector や新しい Motion Editor など、デザインツールのアップデートが含まれます。
新しい Motion Editor
Android Studio に MotionLayout レイアウト タイプのビジュアル デザイン エディタが追加され、アニメーションの作成やプレビューが簡単になりました。
Motion Editor は、MotionLayout ライブラリ(Android アプリのアニメーションの基盤として機能)の要素を操作するシンプルなインターフェースを提供します。以前のリリースでは、こうした要素を作成および変更するには、XML リソース ファイル内の制約を手動で編集する必要がありました。Motion Editor により、この XML を生成して、開始と終了の状態、キーフレーム、遷移、タイムラインをサポートできるようになりました。
Motion Editor の使用方法について詳しくは、ユーザーガイドをご覧ください。
Live Layout Inspector
更新された Live Layout Inspector を使用してレイアウトをデバッグします。これにより、デバイスにデプロイされているアプリの UI を包括的にリアルタイムで分析できます。
[Layout Inspector] ウィンドウを開くには、[View] > [Tools Windows] > [Layout Inspector] に移動します。Live Layout Inspector は、既存の Layout Inspector とほぼ同じ機能を備えていますが、以下の機能も提供します。
- 動的レイアウト階層: デバイスのビューが変更されると更新されます。
- プロパティ値解決スタック: リソース プロパティ値がソースコードのどこにあるかを調査し、プロパティ ペインのハイパーリンクを辿ってその場所に移動します。
- 3D ビュー: 高度な 3D 視覚化により、ランタイム時にアプリのビュー階層を表示します。この機能を使用するには、[Live Layout Inspector] ウィンドウでレイアウトをクリックして回転させます。
Live Layout Inspector を使用できるのは、API レベル 29 以降を搭載するデバイスまたはエミュレータにアプリをデプロイする場合のみです。Live Layout Inspector を有効にするには、[File] > [Settings] > [Experimental] に移動し、[Enable Live Layout Inspector] の横にあるチェックボックスをオンにします。次に、レイアウト表示の上にある [Live updates] の横のチェックボックスをオンにします。
Layout Validation
Layout Validation は、さまざまなデバイスや設定のレイアウトを同時にプレビューするビジュアル ツールであり、レイアウト エラーの検出や、より使いやすいアプリの作成に役立ちます。
この機能にアクセスするには、IDE ウィンドウの右上にある [Layout Validation] タブをクリックします。
[Layout Validation] ウィンドウで、次の 4 つの設定セットから選択できます。
- Pixel デバイス: 選択した Pixel デバイスでアプリをプレビューします。
- カスタム: 画面の向きや言語などのカスタム ディスプレイ オプションを使用してアプリをプレビューします。
- 色覚特性: 一般的な色覚特性のシミュレーションを使用してアプリをプレビューします。
- フォントサイズ: さまざまなフォントサイズを使用してアプリをプレビューします。
Layout Validation の使用方法について詳しくは、Layout Inspector を使用してレイアウトをデバッグするをご覧ください。
コード圧縮ルールのスマート エディタ機能
R8 のコード圧縮ルールファイルを開いた場合に、構文のハイライト表示、コード補完、エラーチェックなどのスマート エディタ機能を使用できるようになりました。また、エディタでは Android Studio プロジェクトと統合して、すべてのクラス、メソッド、フィールドの完全なシンボル補完、クイック ナビゲーションとリファクタリングも可能です。
Kotlin Android ライブ テンプレート
Android Studio には、Kotlin クラスの Android ライブ テンプレートが含まれています。たとえば、toast
とタイプし、Tab キーを押すと、Toast をすばやく挿入できます。利用可能なライブ テンプレートの全リストについては、メニューバーの [File] > [Settings](macOS を使用している場合は、[Android Studio] > [Preferences])をクリックして [Editor] > [Live Templates] に移動します。
[Fragment] ウィザードと新しいフラグメント テンプレート
[New Android Fragment] ウィザードと新しいフラグメント テンプレートが利用できるようになりました。利用するには、[File] > [New] > [Fragment] > [Gallery] に移動するか、Navigation エディタで [Create new destination] をクリックします。
Android Emulator でのカメラサポートの拡張
Android 11 のイメージを使用する場合、Android Emulator のカメラには以下の新機能が含まれています。
- RAW 撮影
- YUV 再処理
- レベル 3 デバイス
- 論理カメラのサポート
Android 11 向けの開発について詳しくは、Android 11 のドキュメントをご覧ください。
clangd の C++ コードエディタでの利用
Android Studio の C++ 言語サポートを支える技術である Jetbrains CLion が、LLVM の clangd と clang-tidy をベースとした検査エンジンを採用したことにより、C / C++ のコード補完が高速化され、clang-tidy との統合がよりシームレスになりました。
今回 Android Studio の C++ コードエディタで利用できるようになった clangd と clang-tidy は、どちらもオープンソースの LLVM 追加ツールの一部であり、それぞれ次の特徴を備えています。
- clangd には、コード補完、エディタ内のコンパイル エラー メッセージ、定義へ移動できるナビゲーションが用意されています。
- clang-tidy は、一般的なプログラミング エラーを診断して修正するための拡張可能なフレームワークを備えた C++ リンターツールです。
以前のリリースでは、Android Studio ユーザーは NDK 経由で clang-tidy を使用する必要がありました。この変更により、Android Studio で clang-tidy の機能を使用する際に NDK に依存しなくなりました。
local.properties ファイルでの ndk.dir 設定の非推奨
ndk.dir
の値はアプリの local.properties
ファイルでは設定できなくなりました。また、この ndk.dir
設定は今後のバージョンではサポートされなくなります。Android Gradle プラグインはデフォルトで NDK のバージョンを設定しますが、特定のバージョンの NDK が必要な場合は、build.gradle
で android.ndkVersion
を設定できます。
NDK の設定の詳細については、NDK と CMake のインストールと設定をご覧ください。
IntelliJ IDEA 2019.3.3
IntelliJ IDEA 2019.3.3 リリースによる改善に伴い、コアの Android Studio IDE が更新されました。
バージョン 2019.3.3 に累積して組み込まれている他の IntelliJ バージョンの改善点については、以下のページをご覧ください。
3.6(2020 年 2 月)
Android Studio 3.6 はメジャー リリースであり、さまざまな新機能や改善措置が組み込まれています。
また、Google は、このリリースにご協力いただいたすべてのコミュニティ貢献者に感謝の意を表します。
3.6.3(2020 年 4 月)
このマイナー アップデートには、さまざまなバグの修正が含まれています。 主なバグ修正のリストについては、リリース アップデート情報ブログの関連記事をご覧ください。
3.6.2(2020 年 3 月)
このマイナー アップデートには、さまざまなバグの修正が含まれています。 主なバグ修正のリストについては、リリース アップデート情報ブログの関連記事をご覧ください。
3.6.1(2020 年 2 月)
このマイナー アップデートには、さまざまなバグの修正が含まれています。 主なバグ修正のリストについては、リリース アップデート情報ブログの関連記事をご覧ください。
デザインツール
Android Studio のこのバージョンには、Layout Editor や Resource Manager など、いくつかのデザインツールのアップデートが含まれます。
デザイン エディタでの分割ビューとズームイン
このリリースには、ビジュアル デザイン エディタに関する以下のアップデートが含まれます。
Layout Editor や Navigation Editor などのデザイン エディタで、[Split] ビューによって UI の [Design] ビューと [Code] ビューを同時に表示できるようになりました。エディタ ウィンドウの右上に、表示方法を切り替える 3 つのボタン
が表示されます。
- 分割ビューを有効にするには、分割アイコン
をクリックします。
- XML ソースビューを有効にするには、ソースアイコン
をクリックします。
- デザインビューを有効にするには、デザイン アイコン
をクリックします。
- 分割ビューを有効にするには、分割アイコン
デザイン エディタ内のズームとパンのコントロールは、エディタ ウィンドウの右下にあるフローティング パネルに移動しました。
詳しくは、Layout Editor による UI の作成をご覧ください。
カラー選択ツールの [Resource] タブ
XML ツールやデザインツールでカラー選択ツールを使用する際、アプリのカラーリソース値をすぐに更新できるように、IDE が自動的にカラーリソース値を入力するようになりました。
Resource Manager
Resource Manager は以下のように更新されています。
- Resource Manager はほとんどのリソースタイプに対応するようになりました。
- リソースを検索すると、Resource Manager にすべてのプロジェクト モジュールからの結果が表示されるようになりました。以前は、選択したモジュールからの検索結果だけが返されていました。
- フィルタボタンを使用すると、ローカルな依存モジュール、外部ライブラリ、Android フレームワークからリソースを表示できます。フィルタを使用してテーマ属性を表示することもできます。
- リソースの上にあるテキストボックス内をクリックすると、インポート プロセス中にリソースの名前を変更できるようになりました。
詳しくは、Resource Manager によるアプリの UI リソースの管理をご覧ください。
Android Gradle プラグインのアップデート
Android Gradle プラグインの最新版には、ビルド速度の最適化、Maven 公開プラグインのサポート、ビュー バインディングのサポートなど、多くのアップデートが組み込まれています。詳細については、リリースノート全体をご覧ください。
ビュー バインディング
ビュー バインディングを使用すると、XML レイアウト ファイルごとにバインディング クラスを生成することで、ビューを操作するコードの記述が簡単になります。これらのクラスには、対応するレイアウト内での ID を持つすべてのビューへの直接参照が含まれます。
ビュー バインディングは findViewById()
を置換するので、無効なビュー ID によって null ポインタ例外が発生するリスクを排除できます。
ビュー バインディングを有効にするには、Android Gradle プラグイン 3.6.0 以上を使用し、各モジュールの build.gradle
ファイルに次のコードを追加する必要があります。
Groovy
android { buildFeatures.viewBinding = true }
Kotlin
android { buildFeatures.viewBinding = true }
Apply Changes
クラスを追加して、実行中のアプリにコードの変更をデプロイできるようになりました。それには、「コードの変更を適用」アイコン または「コードの変更を適用してアクティビティを再開」アイコン
をクリックします。
2 つのアクションの違いについては、Apply Changes をご覧ください。
Instant Apps のサポートを有効にする [Refactor] メニュー オプション
アプリ プロジェクトの作成後、次の手順でベース モジュールをいつでも即座に有効化できるようになりました。
- メニューバーから [View] > [Tool Windows] > [Project] を選択して、[Project] パネルを開きます。
- 通常は「app」という名のベース モジュールを右クリックし、[Refactor] > [Enable Instant Apps Support] を選択します。
- 表示されたダイアログで、プルダウン メニューからベース モジュールを選択します。
- [OK] をクリックします。
詳細については、Google Play Instant の概要をご覧ください。
APK Analyzer でクラスとメソッドのバイトコードの難読化を解除する
APK Analyzer を使用して DEX ファイルを検査する場合、次のように、クラスとメソッドのバイトコードの難読化を解除できます。
- メニューバーから [Build] > [Analyze APK] を選択します。
- 表示されたダイアログで、検査する APK に移動して選択します。
- [Open] をクリックします。
- APK Analyzer で、検査する DEX ファイルを選択します。
- DEX ファイル ビューアで、分析する APK の ProGuard マッピング ファイルを読み込みます。
- 検査するクラスまたはメソッドを右クリックし、[Show bytecode] を選択します。
ネイティブ ツール
以下のアップデートにより、Android Studio 内のネイティブ(C / C++)開発がサポートされます。
Kotlin のサポート
これまで Java でサポートされていた Android Studio の以下の NDK 機能が、Kotlin でもサポートされるようになりました。
- JNI 宣言から、対応する C / C++ の実装関数に移動できます。このマッピングを表示するには、マネージ ソースコード ファイルの行番号の近くにある C / C++ アイテム マーカーにカーソルを合わせます。
JNI 宣言のスタブ実装関数を自動的に作成できます。 まず JNI 宣言を定義し、次に C / C++ ファイル内に「jni」またはメソッド名を入力してアクティブにします。
未使用のネイティブ実装関数は、ソースコード内で警告としてハイライト表示されます。また、実装が欠落している JNI 宣言は、エラーとしてハイライト表示されます。
ネイティブ実装関数の名前を変更(リファクタリング)すると、対応するすべての JNI 宣言が更新されます。JNI 宣言の名前を変更すると、ネイティブ実装関数が更新されます。
暗黙的にバインドされた JNI 実装のシグネチャ チェックを行います。
JNI に関するその他の改善点
Android Studio のコードエディタでは、改善された入力のヒント、オートコンプリート、インスペクション、コード リファクタリングなど、よりシームレスな JNI 開発ワークフローがサポートされるようになりました。
ネイティブ ライブラリの APK の再読み込み
プロジェクト内の APK が IDE 外で更新されたときに、新しいプロジェクトを作成する必要がなくなりました。Android Studio は APK の変更を検出し、APK を再インポートするオプションを提供します。
Kotlin 専用 APK ソースのアタッチ
事前ビルドされた APK のプロファイリングとデバッグを行う際、Kotlin 専用の外部 APK ソースをアタッチできるようになりました。詳しくは、Kotlin / Java ソースをアタッチするをご覧ください。
Memory Profiler でのリーク検出
Memory Profiler でヒープダンプを分析する場合、アプリの Activity
および Fragment
インスタンスでメモリリークが発生していると考えられるプロファイリング データをフィルタできるようになりました。
フィルタで表示されるデータの種類は、次のとおりです。
- 破棄されているが、まだ参照されている
Activity
インスタンス。 - 有効な
FragmentManager
がないが、まだ参照されているFragment
インスタンス。
次のような状況では、フィルタによって誤検出が発生することがあります。
Fragment
が作成されたが、まだ使用されていない。Fragment
がキャッシュされているが、FragmentTransaction
の一部ではない。
この機能を使用するには、まずヒープダンプを取得するか、Android Studio にヒープダンプ ファイルをインポートします。メモリリークが発生している可能性があるフラグメントとアクティビティを表示するには、Memory Profiler のヒープダンプ ペインで [Activity/Fragment Leaks] チェックボックスをオンにします。
メモリリーク検出のためヒープダンプをフィルタリング
エミュレータ
Android Studio 3.6 では、下記で説明するように、Android Emulator 29.2.7 以上に含まれるいくつかのアップデートを利用できます。
位置情報サポートの改善
Android Emulator 29.2.7 以上では、GPS 座標と経路情報をエミュレートできるようになりました。エミュレータの [Extended controls] を開いたとき、[Location] タブのオプションは [Single points] タブと [Routes] タブの 2 つに分けて整理されました。
Single points
[Single points] タブでは、スマートフォンやブラウザで Google マップを使用する場合と同様に、Google マップ WebView を使用してスポットを検索できます。地図で場所を検索またはクリックすると、地図の下部で [Save point] を選択して保存できます。保存した場所はすべて [Extended controls] ウィンドウの右側の一覧に表示されます。
エミュレータの場所を地図上で選択した場所に設定するには、[Extended controls] ウィンドウの右下にある [Set location] ボタンをクリックします。
Routes
[Single points] タブと同様に、[Routes] タブには、Google マップ WebView が表示されるので、2 つ以上の場所の間に経路を作成できます。経路を作成して保存する手順は次のとおりです。
- 地図表示で、テキスト フィールドを使用して経路の最初の目的地を検索します。
- 検索結果から場所を選択します。
- ナビゲーション ボタン
を選択します。
- 地図から経路の出発地を選択します。
- (省略可)経路の目的地を追加する場合は、[Add destination] をクリックします。
- 地図表示で [Save route] をクリックして経路を保存します。
- ルートの名前を指定して、[Save] をクリックします。
保存した経路に沿ってエミュレータでシミュレートするには、[Saved routes] リストから経路を選択し、[Extended controls] ウィンドウの右下にある [Play route] をクリックします。シミュレーションを停止するには、[Stop route] をクリックします。
指定した経路に沿ってエミュレータで継続的にシミュレートするには、[Repeat playback] のスイッチを有効にします。エミュレータが指定された経路をたどる速度を変更するには、[Playback speed] プルダウンから速度を選択します。
マルチディスプレイのサポート
Android Emulator では、カスタマイズ可能なディメンションをサポートする複数のディスプレイにアプリをデプロイして、マルチウィンドウやマルチディスプレイをサポートするアプリをテストできます。仮想デバイスの実行中、次のように、最大 2 つのディスプレイを追加できます。
- [Extended controls] を開き、[Displays] タブに移動します。
- ディスプレイを 1 つ追加するには、[Add secondary display] をクリックします。
[Secondary displays] のプルダウンから、次のどちらかを行います。
- プリセットのアスペクト比のいずれかを選択する
- [custom] を選択して、カスタム ディスプレイの高さ、幅、dpi を設定する
(省略可)3 つ目のディスプレイを追加するには、[Add secondary display] をクリックします。
[Apply changes] をクリックして、指定したディスプレイを、実行中の仮想デバイスに追加します。
Android Automotive OS 用の仮想デバイスとプロジェクトの新しいテンプレート
Android Studio を使用して新しいプロジェクトを作成する際、[Create New Project] ウィザードの [Automotive] タブで、[No Activity]、[Media service]、[Messaging service] の 3 つのテンプレートから選択できるようになりました。既存のプロジェクトで Android Automotive デバイスのサポートを追加するには、メニューバーから [File] > [New] > [New Module] を選択し、次に [Automotive Module] を選択します。[Create New Module] ウィザードが Android Automotive プロジェクトのテンプレートのいずれかを使ったモジュールの新規作成をガイドします。
さらに、Android Automotive OS デバイス用の Android Virtual Device(AVD)も作成できるようになりました。それには、[Virtual Device Configuration] ウィザードの [Automotive] タブで次のどちらかを選択します。
- Polestar 2: Polestar 2 ヘッドユニットをエミュレートする AVD を作成します。
- Automotive (1024p landscape): 1024 × 768 ピクセルの汎用 Android Auto ヘッドユニットの AVD を作成します。
再開可能な SDK のダウンロード
SDK Manager を使用して SDK コンポーネントやツールをダウンロードする場合、Android Studio ではダウンロードを最初からやり直すのではなく、中断されたダウンロード(ネットワークの問題などによる)を再開できるようになりました。この拡張機能は、Android エミュレータやシステム イメージなどの大容量ダウンロードで、インターネット接続が不安定な場合に特に役立ちます。
また、SDK ダウンロード タスクをバックグラウンドで実行している場合は、ステータスバーのコントロールを使用してダウンロードを一時停止または再開できます。
バックグラウンドで実行されているダウンロード タスクのステータスバー。新しいコントロールによりダウンロードを一時停止または再開可能。
Win32 の非推奨
Windows 32 ビット版の Android Studio に対して、2019 年 12 月以降はアップデートが提供されなくなり、2020 年 12 月以降はサポートされなくなります。Android Studio は引き続きご利用いただけます。ただし、その後のアップデートを受け取るには、ワークステーションを 64 ビット版の Windows にアップグレードしてください。
詳細については、Windows 32 ビット版の非推奨に関するブログをご覧ください。
Gradle の同期時間を最適化する新しいオプション
以前のリリースでは、Gradle Sync の実行中にすべての Gradle タスクのリストが取得されていました。大規模プロジェクトの場合、タスクリストを取得すると同期時間が遅くなる可能性があります。
Gradle Sync のパフォーマンスを向上させるには、[File] > [Settings] > [Experimental] に移動し、[Do not build Gradle task list during Gradle sync] を選択します。
このオプションを有効にすると、Android Studio で同期中にタスクリストの作成がスキップされ、Gradle Sync の処理が速くなり、UI の応答性が向上します。IDE がタスクリストの作成をスキップすると、Gradle パネルのタスクリストは空になり、ビルドファイルのタスク名の自動補完は機能しなくなります。
Gradle のオフライン モードを切り替えるための新たな場所
Gradle のオフライン モードを有効または無効にするには、まずメニューバーから [View] > [Tool Windows] > [Gradle] を選択します。次に、[Gradle] ウィンドウ上部にある「オフライン モード切り替え」アイコン をクリックします。
IntelliJ IDEA 2019.2
IntelliJ IDEA 2019.2 リリースによる改善に伴い、コアの Android Studio IDE が更新されました。
バージョン 2019.2 に累積して組み込まれている他の IntelliJ バージョンの改善点については、以下のページをご覧ください。
コミュニティ貢献者
Google は、バグの発見などを通して Android Studio 3.6 の改善にご協力いただいたすべてのコミュニティ貢献者に感謝の意を表します。バグをご報告いただいた以下の方々には、特に感謝いたします。
|
|
|
3.5(2019 年 8 月)
Android Studio 3.5 は Project Marble の結果を反映したメジャー リリースです。Android Studio 3.3 リリース以降の複数のリリースにおいて、Project Marble イニシアチブは IDE の 3 つの主要領域の改善に重点を置いています。それは、システムの健全性、機能の改良、バグの修正です。
Project Marble の上記の情報とその他の最新情報については、Android デベロッパー ブログの記事または下記のセクションをご覧ください。
Google は、このリリースにご協力いただいたすべてのコミュニティ貢献者に感謝の意を表します。
3.5.3(2019 年 12 月)
このマイナー アップデートには、さまざまなバグ修正とパフォーマンス改善が含まれています。
3.5.2(2019 年 11 月)
このマイナー アップデートには、さまざまなバグ修正とパフォーマンス改善が含まれています。 主なバグ修正のリストについては、リリース アップデート情報ブログの関連記事をご覧ください。
3.5.1(2019 年 10 月)
このマイナー アップデートには、さまざまなバグ修正とパフォーマンス改善が含まれています。 主なバグ修正のリストについては、リリース アップデート情報ブログの関連記事をご覧ください。
Project Marble: システムの健全性
このセクションでは、Android Studio 3.5 におけるシステムの健全性の向上に焦点を当てた変更について説明します。
メモリの推奨設定
OS が Android Studio プロセス(コア IDE、Gradle デーモン、Kotlin デーモンなど)に割り当てる RAM の最大容量を増やすことでパフォーマンスを改善できると判断した場合、Android Studio はその旨を通知するようになりました。通知に含まれるアクション リンクをクリックして推奨設定をそのまま受け入れるか、または手動で推奨設定を調整できます。手動で調整するには、[File] > [Settings](macOS の場合は [Android Studio] > [Preferences])を選択して、[Appearance & Behavior] > [System Settings] の [Memory Settings] に移動します。 詳細については、最大ヒープサイズをご覧ください。
メモリの推奨設定に関する通知
メモリ使用状況レポート
Android Studio で生じるメモリの問題は、再現して報告することが難しい場合があります。この問題を解決するため、Android Studio では、メニューバーから [Help] > [Analyze Memory Usage] をクリックして、メモリ使用状況レポートを生成できます。レポートを生成する際、IDE は個人情報のデータをローカルでサニタイズした後、メモリの問題の原因を特定するために Android Studio チームにレポートを送信するかどうかを尋ねます。詳細については、メモリ使用状況レポートの実行をご覧ください。
メモリ使用状況レポート
Windows: ウイルス対策ファイルの I/O の最適化
現在 Android Studio は、リアルタイム ウイルス対策スキャンから特定のプロジェクト ディレクトリが除外されるかどうかを自動的に確認します。調整によってビルド パフォーマンスを改善できる場合、Android Studio はその旨を通知し、ウイルス対策構成を最適化する方法を知らせます。詳細については、ビルド速度に対するウイルス対策ソフトウェアの影響を最小限に抑えるをご覧ください。
Project Marble: 機能の改良
このセクションでは、既存の機能の改良を中心とする Android Studio 3.5 の変更について説明します。
Apply Changes
Apply Changes を使用すると、アプリを再起動せずに(場合によっては、現在のアクティビティを再起動せずに)、実行中のアプリに対してコードやリソースの変更をプッシュできます。Apply Changes は、アプリの状態を保持するためのまったく新しいアプローチを実現します。Apply Changes は、APK のバイトコードを書き換える Instant Run とは異なり、Android 8.0(API レベル 26)以上でサポートされているランタイム インストルメンテーションを利用して、臨機応変にクラスを再定義します。
詳細については、Apply Changes をご覧ください。
Apply Changes のツールバー ボタン
アプリのデプロイフロー
IDE の新しいプルダウン メニューでは、アプリをデプロイするデバイスを簡単に選択できます。このメニューには、アプリを複数のデバイスで一度に実行できる新しいオプションもあります。
ターゲット デバイスのプルダウン メニュー
Gradle 同期とキャッシュ検出の改善
ハードディスクの消費を削減する際に Gradle がビルド キャッシュを定期的にクリアするタイミングを IDE が検出する機能が改善されました。以前のバージョンでは、この状態のときに IDE が依存関係の欠落を報告し、Gradle 同期が失敗していました。現在 IDE は、Gradle 同期が正常に完了するように、必要に応じて依存関係をダウンロードします。
ビルドエラー出力の改善
[Build] ウィンドウのエラーレポート機能が改善されました。このレポートには、以下のビルドプロセスに対応するファイルへのリンクや報告されたエラー行などが含まれます。
- AAPT のコンパイルとリンク
- R8 と ProGuard
- dex 変換
- リソースのマージ
- XML ファイル解析
- Javac、Kotlinc、CMake のコンパイル
プロジェクトのアップグレード
IDE と Android Gradle プラグインのアップデートに役立つ情報とアクションを提供するアップデート エクスペリエンスが改善されました。たとえば、アップデート時のエラーの削減に役立つアクションが、より多くの同期エラーとビルドエラーに含まれるようになりました。
IDE は Android Gradle プラグインなどの他のコンポーネントとは無関係に更新できることに留意してください。つまり、新しいバージョンが利用可能になり次第、IDE を安全にアップデートして、後から他のコンポーネントをアップデートすることが可能です。
Layout Editor
Android Studio 3.5 には、レイアウトの視覚化、管理、操作に関する改善がいくつか含まれています。
ConstraintLayout
を操作する際は、[Attributes] パネルの新しい [Constraints] セクションに、選択した UI コンポーネントの制約関係がリストされます。デザイン サーフェスまたは制約リストで制約を選択して、両方の領域で制約をハイライト表示できます。
選択した UI 要素の制約関係
同様に、制約を選択して Delete
キーを押すことで、制約を削除できます。または、Control
キー(macOS の場合は Command
)を押しながら制約アンカーをクリックしても、制約を削除できます。Control
または Command
キーを押しながらアンカーにカーソルを合わせると、該当の制約が赤色に変わり、クリックして削除できることが示されます。
ビューが選択されているときは、[Attributes] パネルの [Constraint Widget] セクションでいずれかの [+] アイコンをクリックすることにより、制約を作成できます。次の図をご覧ください。新しい制約を作成すると、Layout Editor により制約が選択されてハイライト表示され、追加した情報がすぐに反映されて視覚化されます。
制約ウィジェットで制約を作成する
制約を作成すると、制約できる適格なアンカー ポイントのみが表示されます。以前は、制約できるかどうかにかかわらず、すべてのビューのすべてのアンカー ポイントがハイライト表示されていました。また、青いオーバーレイにより制約のターゲットがハイライト表示されます。このハイライト表示は、他のコンポーネントと重なっているコンポーネントに制約を適用するときに、特に便利です。
Android Studio 3.4 で重なり合ったコンポーネントに制約を作成する
Android Studio 3.5 で重なり合ったコンポーネントに制約を作成する
Android Studio 3.5 には、上記のアップデートに加えて、Layout Editor に関する以下の改善も含まれています。
- 制約ウィジェットとデフォルト マージンのプルダウンで、マージンにディメンション リソースを使用できるようになりました。
- Layout Editor のツールバーで、デザイン サーフェスのサイズを決定するデバイスのリストが更新されました。さらに、サイズ変更時のスナップ動作が改善されるとともに、デザイン サーフェスのサイズ変更ハンドルが常に表示されるようになりました。サイズ変更時には、一般的なデバイスのサイズを示す新しいオーバーレイが表示されます。
- Layout Editor のカラーパターンが新しくなり、一貫性が強化されて、コンポーネント、テキスト、制約のコントラストが縮小されました。
- ブループリント モードでは、テキストが表示されなかった一部のコンポーネントでテキストがサポートされるようになりました。
上記の変更の詳細については、Android Studio Project Marble: Layout Editor をご覧ください。
Data Binding
IDE で、Data Binding について増分アノテーション処理のサポートが追加されただけでなく、XML でデータ バインディング式を作成するときのスマート エディタ機能とパフォーマンスが改善されました。
Android Studio 3.4 でのコードエディタのパフォーマンス

Android Studio 3.5 でのコード編集のパフォーマンスの向上
C / C++ プロジェクトのサポートの改善
Android Studio 3.5 には、C / C++ プロジェクトのサポートを改善する変更がいくつか含まれています。
単一バリアント同期用の [Build Variants] パネルの改善
[Build Variants] パネルで、アクティブなビルド バリアントとアクティブな ABI の両方を指定できるようになりました。この機能により、モジュールごとのビルド構成が簡単になり、Gradle 同期のパフォーマンスも向上します。
詳細については、ビルド バリアントの変更をご覧ください。
ABI 別に選択された単一バリアントが表示された [Build Variants] パネル
NDK の並列バージョン
NDK の複数のバージョンを並列で使用できるようになりました。この機能により、プロジェクトを構成する際の柔軟性が向上します。たとえば、同じマシン上に異なるバージョンの NDK を使用するプロジェクトがある場合などに便利です。
プロジェクトで Android Gradle Plugin 3.5.0 以上を使用している場合は、プロジェクト内の各モジュールで使用する NDK のバージョンも指定できます。この機能を使用して、再現可能なビルドを作成し、NDK バージョンと Android Gradle プラグイン間の非互換性を軽減できます。
詳細については、NDK、CMake、LLDB のインストールと構成をご覧ください。
Chrome OS のサポート
Android Studio では、HP Chromebook x360 14 や Acer Chromebook 13/Spin 13 を含め、システム要件に記載されている各種の Chrome OS デバイスが公式にサポートされています。使用するには、互換性のある Chrome OS デバイスで Android Studio をダウンロードし、インストール手順を実施します。
機能モジュールの条件付き配信
条件付き配信を使用すると、アプリのインストール時に機能モジュールを自動的にダウンロードするための特定のデバイス構成要件を設定できます。 たとえば、拡張現実(AR)用の機能を含む機能モジュールが、AR 対応のデバイスに限り、アプリのインストール時に利用可能になるように構成できます。
現在、この配信メカニズムでは、以下のデバイス構成に基づいて、アプリのインストール時のモジュールのダウンロードを制御できます。
- デバイスのハードウェア機能とソフトウェア機能(OpenGL ES バージョンなど)
- ユーザーの国
- API レベル
指定したすべての要件をデバイスが満たさない限り、モジュールはアプリのインストール時にダウンロードされません。ただし、アプリは後で、Play Core Library を使用してオンデマンドでモジュールをダウンロードするようリクエストできます。詳細については、条件付き配信の構成をご覧ください。
IntelliJ IDEA 2019.1
IntelliJ IDEA 2019.1 リリースによる改善(テーマのカスタマイズなど)に伴い、コアの Android Studio IDE が更新されました。
Android Studio に前回組み込まれた IntelliJ バージョンは 2018.3.4 でした。 Android Studio のこのリリースに累積的に組み込まれている他の IntelliJ バージョンの改善点については、以下のバグ修正アップデートをご覧ください。
Android Gradle Plugin 3.5.0 のアップデート
増分アノテーション処理とキャッシュ可能な単体テストのサポートの改善などを含む Android Gradle Plugin 3.5.0 の新機能については、該当のリリースノートをご覧ください。
コミュニティ貢献者
Google は、バグの発見などを通して Android Studio 3.5 の改善にご協力いただいたすべてのコミュニティ貢献者に感謝の意を表します。P0 および P1 のバグをご報告いただいた以下の方々には、特に感謝いたします。
|
|
|
3.4(2019 年 4 月)
Android Studio 3.4 はメジャー リリースで、さまざまな新機能や改善措置が組み込まれています。
3.4.2(2019 年 7 月)
このマイナー アップデートには、さまざまなバグ修正とパフォーマンス改善が含まれています。 主なバグ修正のリストについては、リリース アップデート情報ブログの関連記事をご覧ください。
3.4.1(2019 年 5 月)
このマイナー アップデートには、さまざまなバグ修正とパフォーマンス改善が含まれています。 主なバグ修正のリストについては、リリース アップデート情報ブログの関連記事をご覧ください。
3.4.0 の既知の問題
Android Q ベータ版を搭載しているデバイスにアプリをデプロイする際、プロファイリングが無効になります。
- Data Binding ライブラリを使用している場合、
LiveDataListener.onChanged()
が NPE で失敗することがあります。この問題の修正は Android Studio 3.4.1 に組み込まれる予定で、Android Studio 3.5 の最新のプレビュー バージョンではすでに利用可能です(Issue #122066788 をご覧ください)。
IntelliJ IDEA 2018.3.4
IntelliJ IDEA 2018.3.4 リリースによる改善に伴い、コアの Android Studio IDE が更新されました。
Android Gradle Plugin 3.4.0 のアップデート
Android Gradle Plugin 3.4.0 の新機能については、該当のリリースノートをご覧ください。
新しい [Project Structure] ダイアログ
新しい [Project Structure] ダイアログ(PSD)を使用すると、依存関係の更新や、モジュール、ビルド バリアント、署名設定、ビルド変数といった各種プロジェクト要素の設定を簡単に行うことができます。
PSD を開くには、メニューバーから [File] > [Project Structure] を選択します。Windows と Linux では Ctrl+Shift+Alt+S
キー、macOS では Command+;
(セミコロン)キーを押して PSD を開くこともできます。PSD の新しいセクションと更新されたセクションの一部に関する説明を次に示します。
Variables
PSD の新しい [Variables] セクションでは、ビルド変数を作成、管理することで、たとえば、依存関係のバージョン番号をプロジェクト全体で一貫させるように設定できます。
- プロジェクトの Gradle ビルド スクリプト内にすでに存在しているビルド変数を簡単に表示して編集できます。
- プロジェクト レベルまたはモジュール レベルの新しいビルド変数を直接 PSD で追加できます。
Modules
[Modules] セクションでは、既存のモジュール内のすべてのビルド バリアントに適用されるプロパティを構成したり、新しいモジュールをプロジェクトに追加したりすることが可能です。たとえば、defaultConfig
プロパティの構成や署名構成の管理が可能です。
Dependencies
プロジェクトの同期中に Gradle によって解決された各依存関係を、プロジェクトの依存関係グラフに基づいて検査、視覚化することができます。手順は次のとおりです。
- PSD の左ペインで、[Dependencies] を選択します。
- [Modules] ペインで、解決済み依存関係を検査するモジュールを選択します。
PSD の右側に [Resolved Dependencies] ペインが開きます(下記を参照)。
また、依存関係を検索して、プロジェクトに追加することも簡単にできます。PSD の [Dependencies] セクションでモジュールを選択し、[Declared Dependencies] セクションの [+] ボタンをクリックして、追加する依存関係のタイプを選択してください。
選択した依存関係のタイプに応じて、以下のようなダイアログが表示され、依存関係をモジュールに簡単に追加できます。
Build Variants
PSD のこのセクションでは、プロジェクト内の各モジュールのビルド バリアントやプロダクト フレーバーを作成し、設定することができます。マニフェスト プレースホルダの追加、ProGuard ファイルの追加、署名鍵の割り当てなどを行うことができます。
Suggestions
[Suggestions] セクションでは、下記のようにプロジェクトの依存関係やビルド変数の推奨アップデート情報が表示されます。
新規の Resource Manager
Resource Manager は、アプリ内のリソースをインポート、作成、管理、使用するための新しいツールです。ツール ウィンドウを開くには、メニューバーから [View] > [Tool Windows] > [Resource Manager] を選択します。Resource Manager では、次のことができます。
- リソースを可視化: ドローアブル、色、レイアウトをプレビューし、必要なリソースを簡単に見つけることができます。
- 一括インポート: [Resource Manager] ツール ウィンドウにまとめてドラッグ&ドロップするか、[Import drawables] ウィザードを使用することで、複数のドローアブル アセットを一度にインポートすることができます。ウィザードにアクセスするには、ツール ウィンドウの左上隅にある [+] ボタンをクリックして、プルダウン メニューから [Import Drawables] を選択します。
- SVG を
VectorDrawable
オブジェクトに変換: [Import Drawables] ウィザードを使用して、SVG 画像をVectorDrawable
オブジェクトに変換できます。 - アセットをドラッグ&ドロップ: [Resource Manager] ツール ウィンドウから、Layout Editor のデザインビューと XML ビューにドローアブルをドラッグ&ドロップできます。
- 代替バージョンを表示: [Tool] ウィンドウ内でリソースをダブルクリックすると、リソースの代替バージョンを表示できます。このビューには、作成した各種のバージョンと、それぞれに含まれている修飾子が表示されます。
- タイルビューとリストビュー: ツール ウィンドウ内のビューを変更して、リソースをさまざまな配置で視覚化できます。
詳細については、アプリのリソースを管理するをご覧ください。
APK のプロファイリング時とデバッグ時にビルド ID をチェックする
APK 内の .so
共有ライブラリ用のデバッグ シンボル ファイルを指定すると、Android Studio は、指定されたシンボル ファイルのビルド ID が APK 内の .so
ライブラリのビルド ID と一致するかどうかを検証します。
ビルド ID を使用して APK 内にネイティブ ライブラリをビルドした場合、Android Studio は、シンボル ファイル内のビルド ID がネイティブ ライブラリ内のビルド ID と一致するかどうかをチェックし、一致しない場合はシンボル ファイルを拒否します。ビルド ID を使用してビルドしていない場合、不適切なシンボル ファイルを指定すると、デバッグ時に問題が発生することがあります。
R8 がデフォルトで有効
R8 は、desugar、圧縮、難読化、最適化、dex 変換をまとめて 1 つのステップに統合することにより、ビルド パフォーマンスを大幅に改善します。 R8 は Android Gradle プラグイン 3.3.0 で導入されました。現在は、3.4.0 以上のプラグインを使用するアプリ プロジェクトと Android ライブラリ プロジェクトの両方で、デフォルトで有効になっています。
下記の図は、R8 が導入される前のコンパイル プロセスの概要を示しています。
現在では、下記の図に示すように、desugar、圧縮、難読化、最適化、dex 変換(D8)のすべてが、R8 によって 1 つのステップで完了します。
R8 は既存の ProGuard ルールと連携するように設計されているため、通常は、R8 を利用するうえで必要となる措置はありません。ただし、Android プロジェクト専用に設計された ProGuard とは異なるテクノロジーであるため、圧縮や最適化により、ProGuard では発生しないコードの削除が生じる可能性があります。そのため、ごくまれにこのような状況が生じた場合は、ビルド出力内にそのコードを保持するための追加ルールが必要となることがあります。
R8 を使用していて問題が発生した場合は、R8 の互換性に関するよくある質問を参照して、該当の問題の解決策があるかどうかを確認してください。解決策が記載されていない場合は、バグを報告してください。R8 を無効にするには、次のいずれかの行をプロジェクトの gradle.properties
ファイルに追加します。
# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false
Navigation Editor がすべての引数タイプをサポート
Navigation コンポーネントでサポートされているすべての引数タイプが、Navigation Editor でサポートされるようになりました。サポートされるタイプの詳細については、デスティネーション間でデータを渡すをご覧ください。
Layout Editor の改善
Layout Editor の [Attributes] ペインが簡素化されて単一ページになり、各セクションを展開することで、設定可能な属性が表示されるようになりました。[Attributes] ペインでは、以下の更新も行われました。
- 新しい [Declared Attributes] セクションには、レイアウト ファイルで指定されている属性のリストが表示されます。新しい属性も簡単に追加できます。
- [Attributes] ペインでは、各属性の横にインジケーターも表示されるようになりました。属性の値がリソース参照である場合は中身ありの画像(
)、それ以外の場合は中身なしの画像(
)になります。
- エラーまたは警告がある属性はハイライト表示されます。赤色のハイライト表示はエラーを示し(たとえば、無効なレイアウト値を使用している場合)、オレンジ色のハイライト表示は警告を示します(たとえば、ハードコーディングされた値を使用している場合)。
依存関係を簡単にインポートできる新しいインテンション アクション
コード内で特定の Jetpack クラスと Firebase クラスを使用する際、必要な Gradle ライブラリ依存関係をプロジェクトに追加していなかった場合、新しいインテンション アクションが追加を提案します。たとえば、必要な android.arch.work:work-runtime
依存関係をインポートせずに WorkManager
クラスを参照している場合、インテンション アクションを通じてワンクリックで簡単に依存関係を追加できます(下記の図を参照)。
特に、Jetpack では管理と更新を簡素化するためにサポート ライブラリが個別パッケージに再パッケージ化されているため、このインテンション アクションにより、使用する Jetpack コンポーネントに必要な依存関係だけを簡単に追加できます。
3.3(2019 年 1 月)
Android Studio 3.3 はメジャー リリースで、さまざまな新機能や改善措置が組み込まれています。
3.3.2(2019 年 3 月)
このマイナー アップデートには、さまざまなバグ修正とパフォーマンス改善が含まれています。 主なバグ修正のリストについては、リリース アップデート情報ブログの関連記事をご覧ください。
3.3.1(2019 年 2 月)
このマイナー アップデートには、さまざまなバグ修正とパフォーマンス改善が含まれています。
IntelliJ IDEA 2018.2.2
IntelliJ IDEA 2018.2.2 リリースによる改善に伴い、コアの Android Studio IDE が更新されました。
Android Gradle プラグインのアップデート
Android Gradle プラグインの新機能については、該当するリリースノートをご覧ください。
Navigation Editor
Navigation Editor では、Navigation Architecture コンポーネントを使用することで、アプリへのナビゲーションを速やかに視覚化して作成できます。
詳細については、Navigation Architecture コンポーネントを使用してナビゲーションを実装するをご覧ください。
使用されていない Android Studio ディレクトリを削除する
Android Studio のメジャー バージョンを初めて実行する際、Android Studio は、対応するインストールが見つからない Android Studio バージョンのキャッシュ、設定、インデックス、ログを格納しているディレクトリがないか探します。未使用ディレクトリが見つかった場合、その場所やサイズ、最終更新日時が [Delete Unused Android Studio Directories] ダイアログに表示され、削除オプションが表示されます。
Android Studio が削除対象と見なすディレクトリは以下のとおりです。
- Linux:
~/.AndroidStudio[Preview]_X.Y_
- Mac:
~/Library/{Preferences, Caches, Logs, Application Support}/AndroidStudio[Preview]_X.Y_
- Windows:
%USER%\.AndroidStudio[Preview]_X.Y_
lint の改善
lint は、Gradle から呼び出すと非常に高速になります。大規模なプロジェクトで lint を実行した場合、最大で 4 倍速くなります。
[Create New Project] ウィザード
[Create New Project] ウィザードの外観が更新され、新しい Android Studio プロジェクトを効率的に作成できるようになりました。
詳細については、プロジェクトを作成するをご覧ください。
プロファイラのアップデート
Android Studio 3.3 では、一部のプロファイラが更新されています。
パフォーマンスの向上
ユーザーからのフィードバックに基づいて、プロファイラ使用時のレンダリング パフォーマンスが大幅に改善されました。パフォーマンスの問題が引き続き発生する場合は、引き続きフィードバックをお寄せください。
プロファイラ メモリ割り当てトラッキング オプション
プロファイリング時のアプリ パフォーマンスを改善するため、Memory Profiler がデフォルトでメモリ割り当てを定期的にサンプリングするようになりました。Android 8.0(API レベル 26)以上を搭載しているデバイスでテストを実施する際は、必要に応じて、[Allocation Tracking] プルダウンでこの動作を変更できます。
[Allocation Tracking] プルダウンを使用すると、以下のいずれかのモードを選択できます。
- Full: すべてのオブジェクト メモリ割り当てをキャプチャします。多数のオブジェクトを割り当てるアプリの場合、プロファイリング時に深刻なパフォーマンス上の問題が発生する可能性があります。
- Sampled: オブジェクト メモリ割り当てのサンプルを定期的にキャプチャします。これはデフォルトの動作で、プロファイリング時のアプリ パフォーマンスへの影響は比較的軽微です。ただし、短時間で多数のオブジェクトを割り当てるアプリでは、パフォーマンスの問題が発生することがあります。
Off: メモリ割り当てをオフにします。このモードを選択していない場合でも、CPU 記録中はこのモードが自動的に有効になり、記録が完了すると元の設定に戻ります。この動作は [CPU recording configuration] ダイアログで変更できます。
トラッキングは、Java オブジェクトと JNI 参照の両方に影響します。
フレーム レンダリング データの検査
CPU Profiler で、Java アプリがメイン UI スレッドと RenderThread の各フレームをレンダリングする際にかかる時間を調べられるようになりました。このデータは、UI ジャンクや低フレームレートの原因となるボトルネックを調査するときに役立ちます。たとえば、スムーズなフレームレートを維持するうえで必要とされる 16 ms よりも時間のかかる各フレームは赤色で表示されます。
フレーム レンダリング データを確認するには、[Trace System Calls] を可能にした構成を使用して、トレースを記録します。トレースを記録したら、以下のように、[FRAMES ] セクションの記録用タイムラインに沿って各フレームに関する情報を確認します。
フレームレートの問題の調査と修正については、遅いレンダリングをご覧ください。
イベント タイムライン内のフラグメント表示
イベント タイムラインに、フラグメントのアタッチとデタッチのタイミングが表示されるようになりました。 また、フラグメントにカーソルを合わせると、フラグメントのステータスがツールチップに表示されます。
Network Profiler で接続ペイロードを書式付きテキストで表示
これまで Network Profiler は、接続ペイロードを未加工テキストだけで表示していました。Android Studio 3.3 では、デフォルトで JSON、XML、HTML などの特定のテキスト形式に整形されます。[Response] タブと [Request] タブで、[View Parsed] をクリックすると書式付きテキストが表示され、[View Source] をクリックすると未加工テキストが表示されます。
詳細については、Network Profiler を使用してネットワーク トラフィックを検査するをご覧ください。
SDK コンポーネントを自動ダウンロードする
プロジェクトで SDK プラットフォーム、NDK、CMake の SDK コンポーネントが必要な場合、事前に SDK Manager を使用して関連ライセンス契約に同意していれば、必要なパッケージを Gradle が自動的にダウンロードするようになりました。
詳細については、不足しているパッケージを Gradle で自動ダウンロードするをご覧ください。
clang-tidy のサポート
Android Studio が clang-tidy をサポートするようになり、ネイティブ コードを含むプロジェクトに対して clang-tidy を使用して静的コード分析を行えるようになりました。clang-tidy のサポートを有効にするには、r18 以上に NDK をアップデートしてください。
検査機能を有効化または再有効化するには、[Settings] ダイアログまたは [Preferences] ダイアログを開いて、[Editor] > [Inspections] > [C/C++] > [General] > [Clang-Tidy] に移動します。[Settings] ダイアログまたは [Preferences] ダイアログでこの検査をオンにした場合、右端のパネルの [Option] セクションで、clang-tidy チェックの有効化 / 無効化リストを確認することもできます。追加のチェックを有効にするには、リストに追加して [Apply] をクリックします。
追加オプションを使用して clang-tidy を構成するには、[Configure Clang-Tidy Checks Options] をクリックして、表示されたダイアログでオプションを追加します。
C++ カスタマイズ用オプションの削除
[Customize C++ Support] ダイアログから次のオプションが削除されました。
- Exceptions Support(-fexceptions)
- Runtime Type Information Support(-ftti)
今後、上記の各動作は、Android Studio を使用して作成されたすべてのプロジェクトで有効になります。
CMake バージョン 3.10.2
CMake バージョン 3.10.2 が SDK Manager に含まれるようになりました。ただし、Gradle は引き続きバージョン 3.6.0 をデフォルトで使用します。
Gradle が使用する CMake のバージョンを指定するには、モジュールの build.gradle
ファイルに以下の行を追加します。
android {
...
externalNativeBuild {
cmake {
...
version "3.10.2"
}
}
}
build.gradle
での CMake の構成の詳細については、Gradle を手動で構成するをご覧ください。
CMake の最小バージョンを指定するための新しい「+」構文
メイン モジュールの build.gradle
ファイル内で CMake のバージョンを指定する際、CMake の cmake_minimum_required()
コマンドの動作と同様に、「+」を先頭に付加できるようになりました。
Android App Bundle が Instant Apps をサポート
Android Studio で、Google Play Instant を完全にサポートする Android App Bundle を作成できるようになりました。その結果、インストール型アプリとインスタント エクスペリエンスの両方を、単一の Android Studio プロジェクトからビルドしてデプロイし、単一の Android App Bundle に格納できるようになりました。
[Create New Project] ダイアログを使用して新しい Android Studio プロジェクトを作成する場合は、[Configure your project] > [This project will support instant apps] チェックボックスをオンにします。そうすると、Android Studio は通常どおり新しいアプリ プロジェクトを作成しますが、アプリのベース モジュールに Instant App サポートを追加するため、マニフェスト内に以下のプロパティを挿入します。
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
<dist:module dist:instant="true" />
...
</manifest>
メニューバーから [File] > [New] > [New Module] を選択し、[Create New Module] ダイアログで [Instant Dynamic Feature Module] をオンにすると、Instant 対応機能モジュールを作成できます。なお、このモジュールを作成すると、アプリのベース モジュールも Instant 対応になります。
アプリをインスタント エクスペリエンスとしてローカル デバイスにデプロイするには、実行構成を編集して、[General] > [Deploy as instant app] チェックボックスをオンにします。
単一バリアント プロジェクトの同期
ビルド構成とプロジェクトを同期することは、プロジェクトがどのように構成されているかを Android Studio に認識させるうえで重要なステップです。ただし、大規模なプロジェクトでは、この処理に時間がかかることがあります。プロジェクトで複数のビルド バリアントを使用している場合は、現在選択しているバリアントに限定することで、プロジェクトの同期を最適化できます。
この最適化を有効にするには、Android Studio 3.3 以降と、Android Gradle プラグイン 3.3.0 以降を使用する必要があります。要件を満たすと、プロジェクトの同期時に、この最適化を有効にするか尋ねるプロンプトが表示されます。また、新しいプロジェクトの場合、デフォルトで最適化が有効になっています。
手動でこの最適化を有効にするには、[File] > [Settings] > [Experimental] > [Gradle](Mac の場合は [Android Studio] > [Preferences] > [Experimental] > [Gradle])をクリックして、[Only sync the active variant] チェックボックスをオンにします。
詳細については、単一バリアント プロジェクトの同期を有効にするをご覧ください。
クイック フィードバックの提供
使用統計情報の共有を有効にして Android Studio の改善にご協力いただいている場合は、IDE ウィンドウの下部にあるステータスバーに 2 つの新しいアイコン(
)が表示されるようになりました。
IDE で、現在のエクスペリエンスに対する意見を最も適切に表現しているアイコンをクリックしてください。 そうすると、その意見を Android Studio チームが正確に理解するための使用統計情報が IDE から送信されます。また、IDE の操作性に不満を感じた場合などは、追加のフィードバックをお寄せいただくこともできます。
使用統計情報の共有を有効にしていない場合に有効にするには、[Settings] ダイアログ(Mac の場合は [Preferences])を開いて、[Appearance & Behavior] > [System Settings] > [Data Sharing] に移動し、[Send usage statistics to Google] チェックボックスをオンにします。
3.2(2018 年 9 月)
Android Studio 3.2 はメジャー リリースで、さまざまな新機能や改善措置が組み込まれています。
3.2.1(2018 年 10 月)
この Android Studio 3.2 のアップデートでは、以下の変更や修正が行われています。
- バンドルされた Kotlin のバージョンが 1.2.71 になりました。
- デフォルト ビルドツールのバージョンが 28.0.3 になりました。
- Navigation ライブラリで、引数タイプの名前が
type
からargType
に変更されました。 - 以下のバグが修正されました。
- Data Binding ライブラリを使用している場合、アンダースコア付きの変数名が原因で、コンパイル エラーが発生していました。
- CMake が原因で、IntelliSense などの CLion 機能が失敗していました。
SliceProvider
の追加が原因で、androidx.*
ライブラリを使用していないプロジェクト内でコンパイル エラーが発生していました。- 一部の Kotlin 単体テストが実行されていませんでした。
- データ バインディングの問題が原因で、
PsiInvalidElementAccessException
が発生していました。 <merge>
要素が原因で、Layout Editor がクラッシュすることがありました。
3.2.0 の既知の問題
注: 以下の問題は Android Studio 3.2.1 で解決されています。
Kotlin バージョン 1.2.70 を使用しないことを強くおすすめします。
Kotlin バージョン 1.2.61 では、Android Studio がハングアップする可能性のあるバグが修正されていますが、Kotlin 1.2.70 にはこの修正が組み込まれていません。
ただし、Kotlin バージョン 1.2.71 以降にはこの修正が組み込まれています。
-
通常はビルドツールのバージョンを指定する必要はありませんが、
renderscriptSupportModeEnabled
をtrue
に設定して Android Gradle Plugin 3.2.0 を使用している場合は、各モジュールのbuild.gradle
ファイルに次の行を挿入する必要があります。android.buildToolsVersion "28.0.3"
最新情報を通知するアシスタント
新しいアシスタント機能が Android Studio の最新の変更内容について通知するようになりました。
新規インストールやアップデートを行った後に Android Studio を起動したときに、お知らせする新しい情報があった場合、アシスタントが開きます。また、[Help] > [What's new in Android Studio] を選択して、アシスタントを開くこともできます。
Android Jetpack
Android Jetpack は、Android アプリ開発の効率化に役立つコンポーネント、ツール、ガイダンスの集合です。繰り返しタスクが排除され、高品質でテスト可能なアプリを短時間で簡単に作成できるようになります。Android Studio には、Jetpack をサポートするための次のアップデートが含まれています。詳しくは、Jetpack のドキュメントをご覧ください。
Navigation Editor
新しい Navigation Editor は Android Jetpack の Navigation コンポーネントと統合されており、アプリのナビゲーション構造の作成をグラフ表示できます。Navigation Editor により、アプリ内のデスティネーション間のナビゲーションのデザインと実装が簡単になります。
Android Studio 3.2 では、ナビゲーション エディタは試験運用版です。Navigation Editor を有効にするには、[File] > [Settings](Mac の場合は [Android Studio] > [Preferences])をクリックして、左ペインで [Experimental] カテゴリを選択し、[Enable Navigation Editor] チェックボックスをオンにして、Android Studio を再起動します。
詳しくは、ナビゲーション エディタのドキュメントをご覧ください。
AndroidX への移行
Jetpack の一環として、Android サポート ライブラリは、androidx
名前空間を使用する新しい Android 拡張ライブラリに移行されます。詳細については、AndroidX の概要をご覧ください。
Android Studio 3.2 では、この処理に新しい移行機能を利用できます。
既存のプロジェクトを AndroidX に移行するには、[Refactor] > [Migrate to AndroidX] を選択します。AndroidX 名前空間に移行されなかった Maven 依存関係がある場合は、Android Studio ビルドシステムによってこのプロジェクト依存関係も自動的に変換されます。
Android Gradle プラグインには、gradle.properties
ファイルで設定できる以下のグローバル フラグが用意されています。
android.useAndroidX
:true
に設定すると、このフラグはこれから AndroidX の使用を開始することを示します。フラグを設定しない場合、Android Studio はフラグがfalse
に設定されたときと同様に動作します。android.enableJetifier
:true
に設定すると、(Android Gradle プラグインの)ツールをサポートすることにより、既存のサードパーティ ライブラリを AndroidX 用に作成されたライブラリと同様に自動変換することを示します。フラグを設定しない場合、Android Studio はフラグがfalse
に設定されたときと同様に動作します。
[Migrate to AndroidX] コマンドを使用すると、両方のフラグが true
に設定されます。
AndroidX ライブラリの使用をすぐに開始したい場合、既存のサードパーティ ライブラリを変換する必要がなければ、android.useAndroidX
フラグを true
に設定し、android.enableJetifier
フラグを false
に設定します。
Android App Bundle
Android App Bundle は新しいアップロード形式で、アプリのコンパイル済みコードとリソースはすべてここに含まれますが、APK の生成と署名は Google Play ストアで行います。
次に、Google Play の新しいアプリ配信モデルが、App Bundle を使用して、個々のユーザーのデバイス構成に合わせて最適化した APK を生成して配信します。そのため、各ユーザーは、アプリの実行に必要なコードとリソースをダウンロードするだけで済みます。つまり、デベロッパー側では、複数の APK を生成、署名、管理する必要がなくなり、ユーザー側では、サイズの小さい最適化された APK をダウンロードできるようになります。
また、機能モジュールをアプリ プロジェクトに追加して、App Bundle に組み込むこともできます。ユーザーはアプリの機能をオンデマンドでダウンロードし、インストールできます。
バンドルを作成するには、[Build] > [Build Bundle(s) / APK(s)] > [Build Bundle(s)] を選択します。
Android App Bundle のビルド方法と分析方法などについては、Android App Bundle をご覧ください。
Layout Editor のサンプルデータ
多くの Android レイアウトにはランタイム データが含まれているため、アプリ開発の設計段階でレイアウトのデザインを可視化することは難しくなる可能性があります。そこで、レイアウト エディタのサンプルデータを利用して、ビューのプレビューを簡単に確認できるようになりました。ビューを追加すると、[Design] ウィンドウのビューの下部に ボタンが表示されます。このボタンをクリックして、設計時のビュー属性を設定します。さまざまなサンプルデータ テンプレートを選択して、ビューに設定する各種のサンプル項目を指定できます。
サンプルデータを試すには、新しいレイアウトに RecyclerView
を追加し、ビューの下部にある設計時属性ボタン をクリックして、サンプルデータ テンプレートのカルーセルから 1 つのテンプレートを選択します。
スライス
スライスは、Android の他のユーザー インターフェース サーフェスにアプリの機能の一部を埋め込む新しい方法です。たとえば、スライスを使用すると、Google 検索の候補にアプリの機能やコンテンツを表示することができます。
Android Studio 3.2 には、新しい Slice Provider API を使用してアプリを拡張する際に役立つビルトイン テンプレートが用意されています。また、新しい lint チェックを使用すると、ベスト プラクティスに沿ってスライスを作成することができます。
開始するには、プロジェクト フォルダを右クリックして、[New] > [Other] > [Slice Provider] を選択します。
スライスの動作をテストする方法などについては、スライス スタートガイドをご覧ください。
Kotlin 1.2.61
Android Studio 3.2 には Kotlin 1.2.61 がバンドルされており、新しい Android SDK は Kotlin とより緊密に統合されています。詳細については、Android デベロッパー ブログをご覧ください。
IntelliJ IDEA 2018.1.6
IntelliJ IDEA 2018.1.6 リリースによる改善に伴い、コアの Android Studio IDE が更新されました。
Android Profiler
Android Studio 3.2 では、Android Profiler の以下の新機能を試すことができます。
セッション
プロファイラのデータをセッションとして保存し、後で再確認や検査ができるようになりました。IDE を再起動するまで、プロファイラはセッション データを保持します。
メソッド トレースを記録した場合またはヒープダンプを取得した場合、IDE は、そのデータを(アプリのネットワーク アクティビティとともに)個別のエントリとして現在のセッションに追加します。そのため、記録内容を簡単に切り替えてデータを比較できます。
システム トレース
CPU Profiler で、新しい [System Trace] 設定を選択すると、デバイスのシステム CPU とスレッドのアクティビティを検査できます。このトレース構成は systrace
をベースにしており、UI ジャンクなどシステムレベルの問題を調査する際に役立ちます。
このトレース構成を使用している場合、ネイティブ トレース API で C / C++ コードをインストルメント化するか、Trace
クラスで Java コードをインストルメント化することにより、プロファイラのタイムライン内で重要なコードルーチンを視覚的にマーキングできます。
Memory Profiler での JNI 参照の検査
Android 8.0(API レベル 26)以上を搭載しているデバイスにアプリをデプロイする場合、Memory Profiler を使用してアプリの JNI コードのメモリ割り当てを検査できるようになりました。
アプリを実行している状態で、検査対象のタイムライン部分を選択し、下記のように、クラスリストの上部にあるプルダウン メニューから [JNI heap] を選択します。これにより、通常のようにヒープ内のオブジェクトを検査できます。[Allocation Call Stack] タブでオブジェクトをダブルクリックすると、コード内のどこで JNI 参照の割り当てと解放が行われているかを確認できます。
メモリ ヒープダンプ ファイルのインポート、エクスポート、検査
Memory Profiler で作成した .hprof
メモリ ヒープダンプ ファイルをインポート、エクスポート、検査できるようになりました。
.hprof
ファイルをインポートするには、プロファイラの [Sessions] ペインで [Start new profiler session] をクリックし、[Load from file] を選択します。他のヒープダンプと同じように、メモリ プロファイラでこのファイルのデータを検査できます。
ヒープダンプ データを後で確認するために保存するには、[Sessions] ペインの [Heap Dump] エントリの右側にある [Export Heap Dump] ボタンを使用します。[Export As] ダイアログが表示されるので、ファイル名拡張子を .hprof
にしてファイルを保存します。
アプリ起動時の CPU アクティビティの記録
アプリ起動時に CPU アクティビティを記録できるようになりました。手順は次のとおりです。
- メインメニューで、[Run] > [Edit Configurations] を選択します。
- 目的の実行構成の [Profiling] タブで、[Start recording a method trace on startup] チェックボックスをオンにします。
- プルダウン メニューで、使用する CPU 記録構成を選択します。
- [Run] > [Profile] を選択し、Android 8.0(API レベル 26)以上が搭載されている端末にアプリをデプロイします。
CPU トレースのエクスポート
CPU Profiler を使用して CPU アクティビティを記録すると、そのデータを .trace
ファイルとしてエクスポートし、他の誰かと共有したり後で検査したりできます。
CPU アクティビティの記録後にトレースをエクスポートする手順は次のとおりです。
- CPU タイムラインからエクスポートする記録を右クリックします。
- プルダウン メニューで [Export trace] を選択します。
- ファイルの保存先に移動し、[Save] をクリックします。
CPU トレース ファイルのインポートと検査
Debug API または CPU Profiler で作成した .trace
ファイルをインポートおよび検査できるようになりました(現時点では、システム トレースの記録をインポートすることはできません)。
トレース ファイルをインポートするには、プロファイラの [Sessions] ペインで [Start new profiler session] をクリックし、[Load from file] を選択します。CPU Profiler でこのデータを検査する方法は通常とほぼ同じですが、以下の点が異なります。
- CPU タイムラインに CPU アクティビティは表示されません。
- スレッド アクティビティのタイムラインに示されるのは、実際のスレッド状態(実行中、待機中、スリープ中など)ではなく、各スレッドのトレースデータが利用可能な場所のみです。
Debug API を使用した CPU アクティビティの記録
Debug API でアプリをインストルメント化することにより、CPU Profiler で CPU アクティビティの記録を開始および停止できるようになりました。アプリをデバイスにデプロイすると、プロファイラは、アプリが startMethodTracing(String tracePath)
を呼び出したときに自動で CPU アクティビティの記録を開始し、アプリが stopMethodTracing()
を呼び出したときに記録を停止します。この API でトリガーされた CPU アクティビティの記録中、CPU Profiler は、選択された CPU 記録構成として [Debug API] を表示します。
Energy Profiler
Energy Profiler は、アプリの推定エネルギー使用量のグラフと、エネルギー使用量に影響するシステム イベント(ウェイクロック、アラーム、ジョブなど)を表示します。
Android 8.0(API 26)以降を搭載しているコネクテッド デバイスや Android Emulator 上でアプリを実行すると、[Profiler] ウィンドウの下部に Energy Profiler が新しい行として表示されます。
[Energy] 行をクリックすると、[Energy Profiler] ビューが最大化されます。マウスポインタをタイムライン内のバーに置くと、エネルギー使用量の内訳が CPU 別や、ネットワーク別、地域(GPS)リソース別、関連システム イベント別に表示されます。
エネルギー使用量に影響するシステム イベントは、[Energy] タイムラインの下部にある [System] タイムライン内に表示されます。[Energy] タイムライン内で期間を選択すると、指定した期間内のシステム イベントの詳細が [Event] ペインに表示されます。
[Event] ペインで、ウェイクロックなどのシステム イベントを選択すると、コールスタックや各種詳細情報が表示されます。システム イベントのコードに移動するには、コールスタック内のエントリをダブルクリックします。
lint チェック
Android Studio 3.2 には、lint チェック用の新機能と機能の改善が多数含まれています。
新しい lint チェック機能を使用すると、潜在的なユーザビリティ問題に関する警告から、潜在的なセキュリティ脆弱性に関連する優先度の高いエラーに至るまで、よくあるコード問題を発見、識別することができます。
Java と Kotlin の相互運用性の lint チェック
Java コードと Kotlin コードの相互運用性を確保するため、新しい lint チェックは、Kotlin Interop Guide に記載されているベスト プラクティスを適用します。 たとえば、null 可能性アノテーションが存在しているか、Kotlin ハード キーワードが使用されているか、ラムダ パラメータが末尾に配置されているかなどがチェックされます。
各チェック機能を有効にするには、[File] > [Settings](Mac の場合は [Android Studio] > [Preferences])をクリックして [Settings] ダイアログを開き、[Editor] > [Inspections] > [Android] > [Lint] > [Interoperability] > [Kotlin Interoperability] に移動して、有効にするルールをオンにします。
コマンドライン ビルドのチェックを有効にするには、build.gradle
ファイルに以下の行を追加します。
android {
lintOptions {
check 'Interoperability'
}
}
スライス用 lint チェック
スライス用の新しい lint チェックを使用すると、スライスが正しく作成されているかチェックできます。たとえば、スライスに対してメイン アクションを割り当てていないと、lint チェックで警告が表示されます。
新しい Gradle ターゲット
新しい lintFix
Gradle タスクを使用すると、lint チェックによって提案されるすべての安全な修正措置をソースコードに直接適用できます。適用可能な安全な修正措置を提案する lint チェックの例としては、SyntheticAccessor
があります。
メタデータの更新
サービス キャスト チェックなど、各種のメタデータが更新され、Android 9(API レベル 28)で lint チェックを実行できるようになりました。
新しいバリアントに対して lint を実行すると警告を表示する
lint では、どのバリアントやバージョンでベースラインが記録されているかが記録されるようになったため、ベースラインを作成したバリアントとは別のバリアントで lint を実行すると、警告が発行されます。
既存の lint チェックの改善
Android Studio 3.2 では、さまざまな点で既存の lint チェックが改善されています。たとえば、リソース サイクル チェックを適用できるリソースタイプが追加されました。また、翻訳検出機能では、エディタ内で訳抜けをすぐに検出できるようになりました。
Issue ID の表示方法の改善
Issue ID がさまざまな場所に表示されるようになりました([Inspection Results] ウィンドウなど)。これにより、build.gradle
の lintOptions
を通して、特定のチェックを有効または無効にするために必要な情報を見つけることが容易になりました。
詳しくは、Gradle での lint オプションの設定についての説明をご覧ください。
Data Binding V2
Data Binding V2 がデフォルトで有効になりました。Data Binding V2 は V1 と互換性があります。つまり、V1 でコンパイルしたライブラリ依存関係を、Data Binding V2 を使用しているプロジェクトで使用できます。ただし、V2 でコンパイルした依存関係を、V1 を使用しているプロジェクトで使用することはできません。
D8 の desugar
Android Studio 3.1 では、全体的なビルド時間を短縮できるように、試験運用機能として desugar ステップが D8 ツールに統合されました。Android Studio 3.2 では、D8 の desugar がデフォルトで有効になっています。
新しいコード圧縮ツール
R8 はコードの圧縮と難読化用の新しいツールで、ProGuard の後継です。R8 のプレビュー版の使用を開始するには、プロジェクトの gradle.properties
ファイルに次の行を追加します。
android.enableR8 = true
マルチ APK 向けのデフォルト ABI の変更
それぞれが異なる ABI をターゲットとする複数の APK を作成する場合、プラグインで、mips
、mips64
、armeabi
の各 ABI 用の APK がデフォルトで生成されなくなりました。
各 ABI をターゲットとする APK をビルドするには、NDK r16b 以前を使用して、下記のように build.gradle
ファイル内で対象 ABI を指定する必要があります。
Groovy
splits { abi { include 'armeabi', 'mips', 'mips64' ... } }
Kotlin
splits { abi { include("armeabi", "mips", "mips64") ... } }
CMake ビルドファイルのエディタ機能の改善
CMake を使用してプロジェクトに C / C++ コードを追加する場合に CMake ビルド スクリプトの編集を容易にするため、Android Studio のエディタ機能が以下のように改善されています。
- 構文ハイライト表示とコード補完: IDE 内で、一般的な CMake コマンドがハイライト表示され、コード補完候補が提示されるようになりました。 また、Ctrl キー(Mac の場合は command キー)を押しながらファイルをクリックすると、そのファイルに移動できます。
- コードの再フォーマット: IntelliJ のコード再フォーマット オプションを使用して、CMake ビルド スクリプトにコードスタイルを適用できるようになりました。
- 安全なリファクタリング: IDE の組み込みのリファクタリング ツールで、CMake ビルド スクリプトで参照しているファイルの名前を変更しているかどうかやファイルを削除しているかどうかも確認できるようになりました。
外部ヘッダー ファイルへのナビゲート
以前のバージョンの Android Studio の [Project] ウィンドウで確認、検査できるのは、ローカル プロジェクトから作成したライブラリに属するヘッダー ファイルのみでした。このリリースでは、アプリ プロジェクトにインポートする外部 C / C++ ライブラリ依存関係にインクルードされているヘッダー ファイルも表示および検査できるようになりました。
すでに C / C++ のコードとライブラリをプロジェクトに挿入している場合は、メインメニューから [View] > [Tool Windows] > [Project] を選択して、IDE の左側に [Project] ウィンドウを開き、プルダウン メニューから [Android] を選択します。下記のように、cpp ディレクトリ内で、アプリ プロジェクトのスコープ内にあるすべてのヘッダーが、各ローカル C / C++ ライブラリ依存関係の include ノードの下に配置されます。
ネイティブ multidex がデフォルトで有効になっている
以前のバージョンの Android Studio では、Android API レベル 21 以上を搭載しているデバイスにアプリのデバッグ バージョンをデプロイしたときに、ネイティブ multidex が有効になっていました。現在は、デバイスへのデプロイであるかリリース用 APK の作成であるかにかかわらず、minSdkVersion=21
以上に設定されているすべてのモジュールに対して、Android Plugin for Gradle によりネイティブ multidex が有効になります。
AAPT2 が Google の Maven リポジトリに移動
Android Studio 3.2 以降、AAPT2(Android Asset Packaging Tool 2)のソースは Google の Maven リポジトリになりました。
AAPT2 を使用するには、下記のように、build.gradle
ファイル内で google()
依存関係を指定してください。
Groovy
buildscript { repositories { google() // here jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.2.0' } } allprojects { repositories { google() // and here jcenter() } }
Kotlin
buildscript { repositories { google() // here jcenter() } dependencies { classpath("com.android.tools.build:gradle:3.2.0") } } allprojects { repositories { google() // and here jcenter() } }
新しいバージョンの AAPT2 では、Windows での非 ASCII 文字の処理の改善など、多くの問題が修正されています。
オンデマンド設定の削除
Android Studio から [Configure on demand] 設定が削除されました。
Android Studio は --configure-on-demand
引数を Gradle に渡さなくなりました。
ADB Connection Assistant
新しい ADB Connection Assistant により、Android Debug Bridge(ADB)接続経由でデバイスを設定して使用する際に、詳細な手順が表示されるようになりました。
このアシスタントを起動するには、[Tools] > [Connection Assistant] を選択します。
ADB Connection Assistant では、[Assistant] パネルの一連のページで、手順、状況に沿った操作、接続されている端末のリストを確認できます。
エミュレータの改善
Android Emulator でいつでも AVD(Android 仮想デバイス)のスナップショットを保存したり読み込んだりできるようになりました。テストできるよう、エミュレートされた端末を短時間で簡単に一定の状態に戻すことができます。AVD Manager を使用して AVD を編集する場合は、AVD の起動時に読み込む AVD のスナップショットを指定できます。
AVD のスナップショットの保存、読み込み、管理の操作は、エミュレータの [Extended controls] ウィンドウの [Snapshots] タブで行えるようになりました。
詳細については、スナップショットをご覧ください。
エミュレータの新機能と変更点については、エミュレータ リリースノートをご覧ください。
3.1(2018 年 3 月)
Android Studio 3.1.0 はメジャー リリースで、さまざまな新機能や改善措置が組み込まれています。
3.1.4(2018 年 8 月)
この Android Studio 3.1 のアップデートでは、以下の変更や修正が行われています。
- バンドルされた Kotlin のバージョンが 1.2.50 になりました。
-
新しいプロジェクトは、サポートが終了した
kotlin-stdlib-jre*
アーティファクトではなく、kotlin-stdlib-jdk* artifacts
で作成されるようになりました。 - ProGuard ルールの R8 解析が改善されました。
- 以下のバグが修正されました。
-
Kotlin メインクラスを実行しようとすると、
"Error: Could not find or load main class..."
というエラーで失敗していました。 - R8 で、特定の最適化の実行中に無限ループが発生していました。
- [Run] ウィンドウで [Rerun failed tests] コマンドを使用すると、誤って「No tests were found」というメッセージが返されることがありました。
-
D8 が
invoke-virtual
インスタンスを適切に処理せず、VerifyError
:invoke-super/virtual can't be used on private method
でクラッシュを引き起こしていました。 -
Data Binding のコンパイラが古いバージョンの
com.android.tools:annotations
に依存していました。現在、コンパイラは、ベース プロジェクトのツール アノテーションを使用します(使用可能な場合)。 - プロファイラを使用している際、フラグメントの遷移中に Android Studio がクラッシュしていました。
- テキスト ボックスを含むレイアウトをデバッグする際に、デバッガがクラッシュしていました。
- D8 が特殊文字を含む一部の ZIP ファイルの読み取りに失敗していました。
3.1.3(2018 年 6 月)
この Android Studio 3.1 のアップデートでは、以下のバグが修正されています。
- Layout Editor を使用した後、メモリリークにより Android Studio が遅くなり、応答しなくなっていました。このアップデートでは、この問題の大部分が修正されています。残りのメモリリークに対処する別のアップデートをまもなくリリースする予定です。
- D8 でビルドされた一部のアプリが、一部の Verizon Ellipsis タブレットでクラッシュしていました。
-
D8 でビルドされたアプリを、Android 5.0 または 5.1(API レベル 21 または 22)を搭載しているデバイスにインストールしようとすると、
INSTALL_FAILED_DEXOPT
エラーで失敗していました。 - OkHttp ライブラリを使用する一部のアプリが D8 でビルドされた場合、Android 4.4(API レベル 19)を搭載しているデバイスでクラッシュしていました。
-
com.intellij.psi.jsp.JspElementType
のクラス初期化中に Android Studio がProcessCanceledException
で起動に失敗することがありました。
3.1.2(2018 年 4 月)
この Android Studio 3.1 のアップデートでは、以下のバグが修正されています。
- Android Studio の終了中に、無期限にハングアップすることがありました。
-
Instant Run を有効にしている場合、ソースセットを使用して構成したビルドが失敗し、次のメッセージが表示されていました。
"The SourceSet name is not recognized by the Android Gradle Plugin."
- Instant Run を有効にしている場合、新しい Kotlin プロジェクトのビルドが [Run] コマンドでトリガーされたときに失敗していました。
-
build.gradle
ファイルの編集中、文字を入力してから画面に文字が表示されるまでに顕著な遅延が発生することがありました。 -
多数のモジュールまたは外部依存関係を含むプロジェクト内で dex 変換を行っているときにビルドエラーが発生し、次のエラー メッセージが表示されていました。
"RejectedExecutionException: Thread limit exceeded replacing blocked worker"
- D8 のメイン dex リストの計算で、一部のリフレクション呼び出しが考慮されていませんでした。
このアップデートには、いくつかの状況で Gradle からの lint チェックの実行を高速化する変更も含まれています。
3.1.1(2018 年 4 月)
この Android Studio 3.1 のアップデートでは、以下のバグが修正されています。
-
Android Studio 3.0 で作成したプロジェクトを Android Studio 3.1 で初めて開いたときに、Gradle 対応の Make タスクが、[Run/Debug Configurations] の [Before launch] 領域から削除されることがありました。その結果、[Run] ボタンまたは [Debug] ボタンをクリックしてもプロジェクトがビルドされず、Instant Run を使用したときに誤った APK のデプロイやクラッシュなどのエラーが発生していました。
この問題を解決するため、Android Studio 3.1.1 では、このエントリのないプロジェクトの実行構成に対して Gradle 対応の Make タスクが追加されます。 この修正措置は、プロジェクトを読み込んだ際の最初の Gradle 同期の後で行われます。
- 高度なプロファイリングを有効にしているときに、テキスト ボックスを含むレイアウトをデバッグすると、デバッガがクラッシュしていました。
- [Build Variants] をクリックすると、Android Studio がフリーズしていました。
- AAR(Android アーカイブ)ファイルが 2 回抽出されていました(Gradle 同期プロセス中に 1 回、Gradle ビルドプロセス中にもう 1 回)。
- SVG ファイルからインポートした一部のベクター型ドローアブルで要素が欠落していました。
-
compile
依存関係構成のサポート終了に関する警告が更新され、implementation
構成とapi
構成に関するガイダンスが改善されました。compile
構成から移行する方法については、新しい依存関係構成のドキュメントをご覧ください。
コーディング / IDE
IntelliJ 2017.3.3
IntelliJ IDEA 2017.3.3 リリースによる改善に伴い、コアの Android Studio IDE が更新されました。改善点としては、コレクションと文字列の制御フロー分析の改善、null 可能性推定の改善、新しいクイック フィックスの導入などがあります。
詳細については、IntelliJ IDEA バージョン 2017.2 / 2017.3 の JetBrains リリースノートや、バグ修正アップデートに関する JetBrains リリースノートをご覧ください。
Room による SQL 編集の改善
Room データベース ライブラリを使用する際、次のように改善された SQL 編集機能を利用できます。
Query
内のコード補完で、SQL テーブル(エンティティ)、列、クエリ パラメータ、エイリアス、結合、サブクエリ、WITH 句が認識されます。- SQL 構文のハイライト表示が機能します。
- SQL 内のテーブル名を右クリックして名前を変更すると、対応する Java コードや Kotlin コードも書き換えられます(たとえば、クエリの戻り値の型など)。この名前変更機能は反対方向でも機能し、Java クラスや Java フィールドの名前を変更すると、対応する SQL コードが書き換えられます。
- [Find usages] を使用すると、SQL の使用法が表示されます(右クリックして、コンテキスト メニューから [Find usages] を選択します)。
- Java コードまたは Kotlin コード内の SQL エンティティの宣言に移動するには、Ctrl キー(Mac の場合は command キー)を押しながらエンティティをクリックします。
Room を活用して SQL を使用する方法については、Room を使用してローカル データベースにデータを保存するをご覧ください。
データ バインディングのアップデート
このアップデートでは、データ バインディングに関して次のように改善されています。
LiveData
オブジェクトをデータ バインディング式内で監視可能フィールドとして使用できるようになりました。ViewDataBinding
クラスに、LiveData
オブジェクトの監視に使用する新しいsetLifecycle()
メソッドが追加されました。ObservableField
クラスが、コンストラクタ内の他のObservable
オブジェクトを受け取れるようになりました。データ バインディング クラス用の新しい増分コンパイラをプレビューできるようになりました。この新しいコンパイラの詳細と有効化の手順については、Data Binding Compiler V2 をご覧ください。
新しいコンパイラのメリットは次のとおりです。
ViewBinding
クラスが、Java コンパイラの前に Android Plugin for Gradle によって生成されます。アプリのコンパイル時に、ライブラリは生成されたバインディング クラスを保持するようになり、毎回再生成されることはなくなりました。これにより、マルチモジュール プロジェクトのパフォーマンスが大幅に向上します。
コンパイラと Gradle
デフォルト dex コンパイラとなる D8
dex バイトコードを生成する際、D8 コンパイラがデフォルトで使用されます。
この新しい dex コンパイラには、主に次のようなメリットがあります。
- 高速 dex 変換
- メモリ使用量の削減
- コード生成機能の改善(効率的なレジスタ割り当て、スマートな文字列テーブル)
- コードをステップ実行する際のデバッグ エクスペリエンスの向上
以前に手動で D8 コンパイラを無効にしていない限り、コードや開発ワークフローを変更しなくても、この改善のメリットを享受できます。
gradle.properties
で android.enableD8
を false
に設定している場合は、そのフラグを削除するか、true
に設定してください。
android.enableD8=true
詳細については、新しい dex コンパイラをご覧ください。
増分 desugar
Java 8 言語機能を使用しているプロジェクトの場合、デフォルトで増分 desugar が有効になっており、ビルド時間を改善できます。
desugar は、糖衣構文を、コンパイラが効率的に処理できる形式に変換します。
増分 desugar を無効にするには、プロジェクトの gradle.properties
ファイルで次のように指定します。
android.enableIncrementalDesugaring=false
簡素化された出力ウィンドウ
Gradle Console は、[Build] ウィンドウに置き換えられました。このウィンドウには、[Sync] タブと [Build] タブがあります。
簡素化された新しい [Build] ウィンドウの使用方法については、ビルドプロセスのモニタリングをご覧ください。
バッチ更新とインデックス作成同時実行
Gradle 同期プロセスや IDE インデックス作成プロセスが大幅に効率化され、多数の冗長なインデックス作成処理に費やされる時間が削減されています。
C++ と LLDB
C++ 開発のコーディング、同期、ビルド、デバッグの各段階で、品質とパフォーマンスが大幅に改善されています。主な改善点は次のとおりです。
大規模な C++ プロジェクトで、シンボル作成時間が大幅に削減されています。大規模プロジェクトの同期時間も大幅に短縮されています。
キャッシュ済みの結果を積極的に再利用することにより、CMake を使用してビルドや同期を実行する際のパフォーマンスが向上しています。
さまざまな C++ データ構造用のフォーマッタ(「プリティ プリンタ」)が追加され、LLDB 出力が読みやすくなりました。
現在のところ、LLDB は Android 4.1(API レベル 16)以上でのみ動作します。
Kotlin
Kotlin がバージョン 1.2.30 にアップグレード
Android Studio 3.1 には、Kotlin バージョン 1.2.30 が組み込まれています。
Kotlin コードをコマンドライン lint チェックで分析可能
コマンドラインから lint を実行して、Kotlin クラスを分析できるようになりました。
lint を実行するプロジェクトごとに、最上位の build.gradle
ファイルに Google の Maven リポジトリを含める必要があります。Android Studio 3.0 以上で作成したプロジェクトでは、Maven リポジトリがすでに含まれています。
パフォーマンス ツール
CPU Profiler を使用してネイティブ C++ プロセスをサンプリングする
CPU Profiler に、アプリのネイティブ スレッドのサンプル トレースを記録するデフォルト構成が追加されました。この構成を使用するには、Android 8.0(API レベル 26)以降を搭載しているデバイスにアプリをデプロイし、CPU Profiler の記録構成プルダウン メニューから [Sampled (Native)] を選択します。その後、通常どおりトレースの記録と検査を行います。
記録構成を作成することで、サンプリング間隔などのデフォルト設定を変更できます。
Java スレッドのトレースに戻るには、[Sampled (Java)] または [Instrumented (Java)] 構成を選択します。
CPU トレース、メモリ割り当て結果、ヒープダンプをフィルタリングする
CPU Profiler と Memory Profiler には、メソッド トレース、メモリ割り当て、ヒープダンプの記録結果をフィルタリングできる検索機能があります。
検索するには、ペインの右上隅にある [Filter] をクリックし、クエリを入力して Enter キーを押します。
ヒント: Ctrl+F キー(Mac の場合は command+F キー)を押して、検索フィールドを開くこともできます。
CPU Profiler の [Flame Chart] タブで、検索クエリに関連するメソッドを含むコールスタックがハイライト表示され、グラフの左側に移動します。
メソッド、クラス、パッケージの名前でフィルタリングする方法については、メソッド トレースの記録と検査をご覧ください。
Network Profiler の [Request] タブ
Network Profiler に [Request] タブが追加されました。選択したタイムライン内のネットワーク リクエストに関する詳細情報が表示されます。以前のバージョンでは、Network Profiler に表示されるのは、ネットワーク レスポンスに関する情報に限られていました。
Network Profiler のスレッドビュー
Network Profiler 内でタイムラインの一部を選択して、以下のいずれかのタブを選択すると、その期間中のネットワーク アクティビティに関する詳細情報を表示できます。
- Connection View: 以前のバージョンの Android Studio と同じ情報が表示されます。アプリのすべての CPU スレッドを対象に、タイムラインの選択部分内で送受信されたファイルがリスト表示されます。リクエストごとにサイズ、種類、ステータス、送信期間を調べることができます。
- Thread View: アプリの各 CPU スレッドのネットワーク アクティビティを表示します。 このビューでは、各ネットワーク リクエストがどのアプリのスレッドによるものかを調べられます。
Layout Inspector
Layout Inspector に新機能が追加されました。その中には、非推奨になった Hierarchy Viewer ツールと Pixel Perfect ツールでこれまで提供されていた機能も含まれます。
- レイアウトを表示、検査するためのズームボタンやキーボード ショートカット
- 参照グリッド オーバーレイ
- 参照画像をロードしてオーバーレイとして使用する機能(レイアウトと UI モックアップを比較する際に便利です)
- 複雑なレイアウトにおいてビューを分離できるサブツリー プレビューのレンダリング

Layout Editor
Layout Editor の [Palette] が、さまざまな点で改善されています。
- ビューやレイアウトのカテゴリが再編成されました。
- ビューとレイアウトに新しい [Common] カテゴリが追加されました。[Favorite] コマンドを使用して追加できます。
- ビューとレイアウトの検索機能が改善されました。
- 特定のビュー要素やレイアウト要素のドキュメントを開くための新しいコマンドが追加されました。
コンポーネント ツリーまたはデザイン エディタに追加された新しい [Convert view] コマンドを使用すると、ビューまたはレイアウトを別のタイプのビューまたはレイアウトに変換できます。
[Attributes] ウィンドウの上部にあるビュー インスペクタ内の新しい [Create a connection] ボタンを使用すると、選択したビューの近くのアイテムに対して簡単に制約を作成できます。
Run と Instant Run
[Select deployment target] ダイアログの [Use same selection for future launches] オプションの動作に関して、整合性が向上しています。[Use same selection] オプションを有効にしている場合、[Run] コマンドを初めて使用したときに限り、選択したデバイスが接続解除されるまでは、[Select deployment target] ダイアログが開きます。
Android 8.0(API レベル 26)以上を搭載しているデバイスをターゲットにしている場合、Instant Run により、アプリの再起動を引き起こすことなく、リソースに対する変更をデプロイできます。これが可能になるのは、リソースが分割 APK 内に格納されているためです。
エミュレータ
Android Studio 3.0 以降のエミュレータの新機能と変更点については、バージョン 27.0.2 からバージョン 27.1.12 までの Android Emulator リリースノートをご覧ください。
主な改善点は次のとおりです。
- エミュレータの状態を保存して起動を高速化するクイックブート スナップショット。[Save now] コマンドを使用すると、カスタム起動状態を保存できます。
- ウィンドウのないエミュレータ画面。
- Android 8.0(API レベル 26)、Android 8.1(API レベル 27)、Android P デベロッパー プレビュー版用のシステム イメージ。
ユーザー インターフェースおよびユーザー エクスペリエンスの改善
ツールチップ、キーボード ショートカット、便利なメッセージの追加
Android Studio 内のさまざまな場所に、ツールチップや便利なメッセージ オーバーレイが追加されています。
各種コマンドのキーボード ショートカットを表示するには、ツールチップが表示されるまで、ボタンの上にマウスポインタを置きます。
[Tools] > [Android] メニューの削除
[Tools] > [Android] メニューが削除されました。以前このメニューの下にあったコマンドは、各所へ移動しています。
- 多くのコマンドは、[Tools] メニューの直下に移動しました。
- [Sync project with gradle files] コマンドは、[File] メニューに移動しました。
- [Device Monitor] コマンドは削除されました(下記を参照)。
Device Monitor はコマンドラインから利用可能になる
Android Studio 3.1 では、Device Monitor の役割が以前よりも少なくなりました。多くの場合、Device Monitor が提供してきた機能は、新しいツールや改善されたツールによって提供されるようになりました。
コマンドラインから Device Monitor を呼び出す方法や、Device Monitor を通じて利用できるツールの詳細については、Device Monitor のドキュメントをご覧ください。
3.0(2017 年 10 月)
Android Studio 3.0.0 はメジャー リリースで、さまざまな新機能や改善措置が組み込まれています。
macOS ユーザー: 古いバージョンの Android Studio をアップデートする場合、「Some conflicts were found in the installation area」というアップデート エラー ダイアログが表示されることがあります。このエラーは無視してください。[Cancel] をクリックすると、インストールが再開されます。
3.0.1(2017 年 11 月)
これは Android Studio 3.0 のマイナー アップデートで、一般的なバグ修正とパフォーマンス改善が組み込まれています。
Android Plugin for Gradle 3.0.0
新しい Android Plugin for Gradle にはさまざまな改善と新機能が組み込まれていますが、主に多数のモジュールを持つプロジェクトのビルド パフォーマンスが改善されています。新しいプラグインを大規模なプロジェクトで使用すると、以下のメリットがもたらされます。
- 新しい遅延型の依存関係解決により、ビルド構成時間が短縮されます。
- バリアントを識別した依存関係の解決では、ビルドするプロジェクトとバリアントのみが対象になります。
- コードまたはリソースに対してシンプルな変更を適用する際の増分ビルドが高速化されます。
このバージョンには、以下の変更も含まれています。
- Android 8.0 がサポートされるようになりました。
- 言語リソースに基づく個別 APK の作成がサポートされるようになりました。
- Jack コンパイラなしで、Java 8 ライブラリと Java 8 言語機能がサポートされるようになりました。
- Android Test Support Library 1.0(Android Test Utility および Android Test Orchestrator)がサポートされるようになりました。
- ndk-build と cmake のビルド速度が改善されました。
- Gradle の同期速度が改善されました。
- AAPT2 がデフォルトで有効になりました。
ndkCompile
の使用制限がさらに強化されました。代わりに、CMake または ndk-build のいずれかを使用して、APK にパッケージ化するネイティブ コードをコンパイルする方法に移行する必要があります。詳細については、ndkcompile から移行するをご覧ください。
変更点の詳細については、Android Plugin for Gradle リリースノートをご覧ください。
新しいプラグインにアップグレードする準備が整ったら、Android Plugin for Gradle 3.0.0 への移行をご覧ください。
Kotlin のサポート
Google I/O 2017 でお知らせしたように、Android 上で Kotlin プログラミング言語が公式にサポートされるようになりました。 そのため、このリリースでは、Android 開発用の Kotlin 言語サポートが Android Studio に組み込まれています。
Kotlin をプロジェクトに組み込むには、Java ファイルを Kotlin に変換する([Code] > [Convert Java File to Kotlin File] をクリックする)か、[New Project] ウィザードを使用して新しい Kotlin 対応プロジェクトを作成します。
詳細については、Kotlin をプロジェクトに追加するをご覧ください。
Java 8 言語機能のサポート
特定の Java 8 言語機能を使用して、Java 8 でビルドされたライブラリを使用できるようになりました。Jack は不要になったため、Jack を無効にしてから、デフォルト ツールチェーンに組み込まれている改良版 Java 8 サポート機能を使用してください。
新しい Java 8 言語ツールチェーンをサポートするようにプロジェクトを更新するには、[File] > [Project Structure] をクリックして表示される [Project Structure] ダイアログで、[Source Compatibility] と [Target Compatibility] を 1.8 に更新します。 詳細については、Java 8 言語機能を使用するをご覧ください。
Android Profiler
新しい Android Profiler は、Android Monitor ツールに代わるもので、アプリの CPU、メモリ、ネットワーク使用状況をリアルタイムで測定するための新しいツールスイートを提供します。サンプルベースのメソッド トレースを実行することで、コードの実行時間の測定、ヒープダンプの取得、メモリ割り当ての表示、ネットワーク送信ファイルの詳細な検査を行うことができます。
このツールを開くには、[View] > [Tool Windows] > [Android Profiler] をクリックします(または、ツールバーで [Android Profiler] をクリックします)。
ウィンドウの上部にあるイベント タイムラインには、タッチイベント、キープレス、アクティビティの変更が表示されるので、さまざまなコンテキストを通じてタイムライン内の他のパフォーマンス イベントを把握できます。
Android Profiler の概要タイムラインで、[CPU]、[MEMORY]、[NETWORK] の各タイムラインをクリックすると、対応するプロファイラ ツールにアクセスできます。
CPU Profiler
CPU Profiler を使うと、サンプル CPU トレースかインストルメント化 CPU トレースをトリガーして、アプリの CPU スレッド使用状況を分析することができます。さらに、さまざまなデータビューとフィルタを使用して、CPU パフォーマンスに関する問題のトラブルシューティングを実施できます。
詳細については、CPU Profiler ガイドをご覧ください。
Memory Profiler
Memory Profiler は、想定外の動作やフリーズ、さらにはアプリのクラッシュを引き起こす可能性があるメモリリークやメモリチャーンを特定するのに役立ちます。アプリのメモリ使用量のリアルタイム グラフが表示され、ヒープダンプの取得、ガベージ コレクションの強制実行、メモリ割り当てのトラッキングを行うことができます。
詳細については、Memory Profiler ガイドをご覧ください。
Network Profiler
Network Profiler を使用すると、アプリのネットワーク アクティビティのモニタリング、各ネットワーク リクエストのペイロードの検査、ネットワーク リクエストを生成したコードの確認を行えます。
詳細については、Network Profiler ガイドをご覧ください。
APK のプロファイリングとデバッグ
Android Studio で、Android Studio プロジェクトから APK をビルドしなくても、APK のプロファイリングとデバッグを行えるようになりました。ただし、それにはデバッグを有効にして APK がビルドされていることと、デバッグ シンボルとソースファイルにアクセスできることが条件になります。
開始するには、Android Studio のウェルカム画面で [Profile or debug APK] をクリックします。すでにプロジェクトを開いている場合は、メニューバーで [File] > [Profile or debug APK] をクリックします。パッケージ化されていない APK ファイルは表示されますが、コードの逆コンパイルは行われません。 そのため、適切にブレークポイントを追加してスタック トレースを表示するには、Java ソースファイルとネイティブ デバッグ シンボルをアタッチする必要があります。
詳細については、事前ビルドされた APK のプロファイリングとデバッグをご覧ください。
Device File Explorer
新しい Device File Explorer を使用すると、コネクテッド デバイスのファイルシステムを検査し、デバイスとパソコン間でファイルを転送できます。 これは、DDMS で利用可能なファイルシステム ツールに代わるものです。
開くには、[View] > [Tool Windows] > [Device File Explorer] をクリックします。
詳細については、Device File Explorer ガイドをご覧ください。
Instant Apps のサポート
Android Instant Apps が新しくサポートされるようになったため、Instant App モジュールと Feature モジュールという 2 つの新しいモジュール タイプを使用して、プロジェクト内で Instant App を作成できます(これらのモジュールを使用するには、Instant Apps Development SDK をインストールする必要があります)。
また、Android Studio には、既存のプロジェクトに Instant App のサポートを追加するための新しいモジュール化リファクタリング アクションも追加されています。たとえば、プロジェクトをリファクタリングして、一部のクラスを Instant App 機能モジュール内に配置する場合は、[Project] ウィンドウでクラスを選択し、[Refactor] > [Modularize] をクリックします。表示されるダイアログで、クラスを配置するモジュールを選択し、[OK] をクリックします。
Instant App をテストする準備が整ったら、実行構成の起動オプションで Instant App の URL を指定することにより、コネクテッド デバイス上で Instant App モジュールをビルドして実行できます。そのためには、[Run] > [Edit Configurations] を選択し、Instant App モジュールを選択して、[Launch Options] で URL を設定します。
詳細については、Android Instant Apps をご覧ください。
Android Things モジュール
[New Project] ウィザードと [New Module] ウィザードの新しい Android Things テンプレートは、Android 搭載 IoT デバイスの開発に役立ちます。
詳細については、Android Things プロジェクトを作成するをご覧ください。
アダプティブ アイコン ウィザード
Image Asset Studio がベクター型ドローアブルをサポートするようになりました。これにより、Android 8.0 用のアダプティブ ランチャー アイコンを作成できるほか、旧式デバイス用の従来型アイコン(レガシー アイコン)も作成できます。
開始するには、プロジェクト内の res フォルダを右クリックして、[New] > [Image Asset] をクリックします。[Asset Studio] ウィンドウで、アイコンタイプとして [Launcher Icons (Adaptive and Legacy)] を選択します。
詳細については、アダプティブ アイコンをご覧ください。
フォント リソースのサポート
Android 8.0 の新しいフォント リソースをサポートするため、Android Studio にフォント リソース セレクタが追加されました。これにより、フォントをアプリ内にバンドルしたり、必要に応じてフォントをデバイスにダウンロードするようプロジェクトを設定したりすることができます。また、Layout Editor でも、レイアウト内でフォントをプレビューできます。
ダウンロード可能なフォントを試すには、デバイスやエミュレータが Google Play 開発者サービス v11.2.63 以降を実行している必要があります。詳細については、ダウンロード可能フォントをご覧ください。
Firebase App Indexing アシスタント
Firebase Assistant が更新され、App Indexing をテストするための新しいチュートリアルが追加されました。 このアシスタントを開くには、[Tools] > [Firebase] を選択します。 次に、[App Indexing] > [Test App Indexing] を選択します。
チュートリアルには、公開コンテンツと個人用コンテンツのインデックス作成をテストするための新しいボタンが含まれています。
- ステップ 2 で、[Preview search results] をクリックすると、URL が Google 検索の検索結果に表示されるか検証できます。
- ステップ 3 で、[Check for errors] をクリックすると、アプリ内のインデックス登録可能オブジェクトが個人コンテンツ インデックスに追加されているか検証できます。
Android アプリリンク アシスタント
アプリリンク アシスタントが更新され、以下の新機能が追加されました。
各 URL マッピングに URL テストを追加して、インテント フィルタが実際の URL を処理できるかどうかを検証できます。
後述の
<tools:validation>
タグを使用して、このような URL テストを手動で定義することもできます。Google Smart Lock をサポートする適切なオブジェクト エントリを含む Digital Asset Links ファイルを作成し、対応する
asset_statements
<meta-data>
タグをマニフェスト ファイルに追加します。
URL インテント フィルタ検証ツール
Android Studio は、インテント フィルタ URL をテストできるマニフェスト ファイル内の特別なタグをサポートするようになりました。このタグは、App Links Assistant が作成できるタグと同じです。
インテント フィルタのテスト URL を宣言するには、<tools:validation>
要素を対応する <intent-filter>
要素とともに追加します。次に例を示します。
<activity ...>
<intent-filter>
...
</intent-filter>
<tools:validation testUrl="https://www.example.com/recipe/1138" />
</activity>
また、必ず <manifest>
タグに xmlns:tools="http://schemas.android.com/tools"
も含めてください。
インテント フィルタ定義を渡さないテスト URL が 1 つでもあった場合、lint エラーが表示されます。このようなエラーがあった場合でも、デバッグ バリアントはビルドできますが、リリースビルドが破損します。
Layout Editor
Layout Editor が更新され、以下の機能が強化されています。
- 新しいツールバーのレイアウトとアイコン。
- コンポーネント ツリーのレイアウトが更新されました。
- ドラッグ&ドロップビューの挿入が改善されました。
- エディタの下に新たにエラーパネルが追加され、すべての問題と修正案(利用可能な場合)が表示されるようになりました。
ConstraintLayout
を使用してビルドする際の UI について、以下のようなさまざまな機能が強化されました。- バリアの作成がサポートされるようになりました。
- グループの作成が新たにサポートされるようになりました。グループを作成するには、ツールバーで [Guidelines] > [Add Group] を選択します(ConstraintLayout 1.1.0 ベータ版 2 以上が必要です)。
- チェーンを作成する UI が新たに追加されました。複数のビューを選択して、右クリックし、[Chain] を選択します。
Layout Inspector
Layout Inspector に、アプリのレイアウトに関する問題のデバッグを容易にするための機能が強化されました。たとえば、プロパティをグループ化して共通カテゴリに分類できます。また、[View Tree] ペインと [Properties] ペインの両方に新しい検索機能が追加されています。
APK Analyzer
apkanalyzer
ツールにより、コマンドラインから APK Analyzer を使用できるようになりました。
また、APK Analyzer が更新され、以下の点で改善されています。
- ProGuard でビルドした APK の場合、ProGuard マッピング ファイルを読み込むことで、以下のような機能を dex ビューアに追加できます。
- コードを圧縮するときにノードを削除しないことを示す太字のノード。
- 圧縮プロセス中に削除されたノードを表示するボタン。
- ProGuard によって難読化されたツリービュー内のノードの元の名前を復元するボタン。
- dex ビューア内に、各パッケージ、クラス、メソッドの推定サイズの影響が表示されるようになりました。
- 新しいフィルタリング オプションが上部に追加されました。フィールドやメソッドの表示 / 非表示を切り替えることができます。
- dex ファイル内で定義されていない参照であるノードは、ツリービュー内で斜体で表示されるようになりました。
詳細については、APK Analyzer でのビルドの分析をご覧ください。
D8 dex コンパイラのプレビュー
Android Studio 3.0 に、D8 と呼ばれる新しいオプション dex コンパイラが追加されました。将来的には DX コンパイラの後継となる予定ですが、現在のところ、新しい D8 コンパイラを使用するかどうかはオプトイン方式になっています。
dex コンパイルは、アプリのビルド時間、.dex
ファイルのサイズ、ランタイム パフォーマンスに直接影響します。新しい D8 コンパイラを現在の DX コンパイラと比較すると、D8 はコンパイルが高速で、出力される .dex
ファイルのサイズが小さく、アプリのランタイム パフォーマンスは同等以上です。
D8 を試すには、プロジェクトの gradle.properties
ファイルで次のように設定します。
android.enableD8=true
詳細については、D8 コンパイラに関するブログ記事をご覧ください。
Google の Maven リポジトリ
Android Studio は、Android SDK Manager に依存するのではなく、デフォルトで Google の Maven リポジトリを使用して、Android Support Library や Google Play 開発者サービス、Firebase などの依存関係のアップデートを取得できるようになりました。これにより、特に継続的インテグレーション(CI)システムを使用している場合に、簡単にライブラリを最新の状態に保つことができます。
すべての新しいプロジェクトに、デフォルトで Google Maven リポジトリが含まれるようになりました。既存のプロジェクトを更新するには、最上位の build.gradle
ファイルの repositories
ブロックに google()
を追加します。
allprojects {
repositories {
google()
}
}
詳細については、Google の Maven リポジトリをご覧ください。
その他の変更点
- Android Studio のネイティブ デバッグは、32 ビット Windows をサポートしなくなりました。 このプラットフォームを使用しているデベロッパーは非常に少ないため、Google は他のプラットフォームに集中することにしました。32 ビット Windows を使用していて、ネイティブ コードをデバッグする予定がある場合は、Android Studio 2.3 を使用してください。
- ベース IDE が IntelliJ 2017.1.2 にアップグレードされました。2016.3 と 2017.1 から、さまざまな新機能(Java 8 言語リファクタリング、パラメータ ヒント、セマンティックのハイライト表示、ドラッグ可能なブレークポイント、インスタント検索結果など)が追加されています。
- 多くの新しい lint チェックが追加されました。
- 最新の Android Emulator アップデート情報もご覧ください。
2.3(2017 年 3 月)
Android Studio 2.3.0 はバグ修正を中心とする安定版リリースですが、いくつかの新機能も組み込まれています。
2.3.3(2017 年 6 月)
これは、Android O(API レベル 26)のサポートを追加したマイナー アップデートです。
2.3.2(2017 年 4 月)
これは、以下の変更を含む Android Studio 2.3 のマイナー アップデートです。
- AVD Manager が更新され、システム イメージで Google Play がサポートされるようになりました。
- NDK r14 以上を使用した場合の NDK ビルドのバグが修正されています。
対応する Android Emulator 26.0.3 のアップデートもご覧ください。
2.3.1(2017 年 4 月)
これは Android Studio 2.3 のマイナー アップデートです。一部の物理 Android デバイスで Instant Run が適切に機能しなかった問題が修正されています(Issue #235879 を参照)。
新機能
- Android Studio で、PNG、BMP、JPG、静的 GIF の各ファイルを WebP 形式に変換できるようになりました。WebP は、Google が開発した画像ファイル形式で、JPEG のような非可逆圧縮に加え PNG のような透明度設定も可能なうえ、JPEG や PNG よりも圧縮率が優れています。詳細については、Android Studio で画像を WebP に変換する場合の説明をご覧ください。
- 新しいアプリリンク アシスタントを使用すると、詳細な手順を示すウィザードを通じて、Android アプリリンクを簡単にアプリに追加できます。Android アプリリンクは、ユーザーを Android アプリの特定のコンテンツに直接誘導する HTTP URL です。
- Layout Editor で、以下の 2 つの新しい ConstraintLayout 機能がサポートされるようになりました。
- アスペクト比に基づいて、ビューサイズを定義します。
- 制約チェーンを使用して、パッケージ化グループ、分散グループ、加重線形グループを作成します。
- また、Layout Editor で、お気に入り属性のリストを作成できるようになりました。これにより、頻繁に使用する属性にアクセスする際に [View all attributes] をクリックする必要がなくなります。
- [Vector Import] ダイアログ([File] > [New] > [Vector Asset])を使用してマテリアル アイコンを追加する際、利用可能なアイコンのリストをカテゴリまたはアイコン名でフィルタリングできるようになりました。詳細については、マテリアル アイコンの追加をご覧ください。
-
新しいアノテーションが追加され、既存のアノテーションが更新されました。メソッド、クラス、パッケージで新しい
@RestrictTo
アノテーションを使用して、API を制限できます。更新された@VisibleForTesting
アノテーションには、テスト用に可視化する必要がない場合にメソッドの可視性を何にするかを指定できる、オプションのotherwise
引数があります。 lint は、otherwise
オプションを使用して、メソッドの想定どおりの可視性を強制適用します。 - 新しい lint ベースライン サポートにより、プロジェクトの現在の警告セットのスナップショットを、将来の検査実行のベースラインとして使用できるようになりました。これにより、新しい問題だけが報告されるようになります。ベースライン スナップショットを使用すると、lint で新しい問題のビルドエラーのみをチェックできるため、すべての既存の問題に戻って対処しなくて済みます。
- 以下のような新しい lint チェックが追加されています。
- 古い
SDK_INT
チェック: Android Studio は、SDK バージョンをチェックするサポート終了済みのコードを削除します。 - Object Animator の検証: lint はコードを分析して、
ObjectAnimator
が正しい署名を持つ参照有効メソッドを呼び出しているかを確認し、それらのメソッドに@Keep
アノテーションが付けられているかをチェックして、ProGuard がリリースビルド中にメソッド名を変更したりメソッドを削除したりしないようにします。 - 不要なアイテム デコレータ コピー: 古いバージョンの
RecyclerView
ライブラリにはディバイダ デコレータ クラスが含まれていませんでしたが、サポートデモ内のサンプルとして提供されていました。最近のバージョンのライブラリには、ディバイダ デコレータ クラスが含まれています。lint は、古いサンプルを検索して、新しいサンプルへの置き換えを提案します。 - WifiManager のリーク: Android 7.0(API レベル 24)より前のバージョンでは、
Context.getSystemService()
でWifiManager
を初期化すると、コンテキストがアプリ コンテキストでない場合にメモリリークが発生する可能性があります。lint はこのような初期化を検索し、コンテキストがアプリ コンテキストであるかどうかを判定できない場合は、Context.getApplicationContext()
を使用して初期化用の適切なコンテキストを取得するよう提案します。 - 改善されたリソース プレフィックス: 既存の
resourcePrefix
lint チェックには多くの制限がありました。現在は、android { resourcePrefix 'my_lib' }
などのプレフィックスを使用してプロジェクトを構成できます。lint は、すべてのリソースがこのプレフィックスを使用しているかどうかを確認します。スタイルとテーマに応じて、さまざまな名前のバリエーションを使用できます。たとえば、my_lib プレフィックスの場合、MyLibTheme
、myLibAttr
、my_lib_layout
などの名前のテーマを使用できます。 - WebP への切り替え: このチェックは、プロジェクトの
minSdkVersion
設定に基づいて、プロジェクト内の WebP 形式に変換可能な画像を特定します。関連付けられたクイック フィックスで自動的に画像を変換するか、手動で画像を WebP に変換できます。 - 安全でない WebP: プロジェクトに WebP 画像がすでに含まれている場合、このチェックはプロジェクトを分析し、
minSdkVersion
設定の値がその WebP 画像をサポートできるほど十分に大きいかどうかを確認します。Android と Android Studio における WebP サポートの詳細については、WebP をネイティブでサポートするブラウザおよび Android Studio を使用して WebP 画像を作成するをご覧ください。
- 古い
変更点
- Instant Run を使用して変更をプッシュする個別のボタン: アプリをデプロイした後、[Apply Changes]
をクリックすると、Instant Run を使用して実行中のアプリに増分変更を迅速にプッシュできます。[Run]
ボタンと [Debug]
ボタンを使用すると、いつでも変更を確実にプッシュしてアプリを強制的に再起動できます。
- Instant Run は、Android 5.0(API レベル 21)以上を搭載している対象デバイスにアプリをデプロイする場合に限り、サポートされます。
- CMake または ndk-build を使用して外部ネイティブ プロジェクトにリンクするプロジェクトで、Instant Run が無効化されなくなりました。ただし、Instant Run を使用できるのは、ネイティブ コードではなく Java コードに増分変更をプッシュする場合に限られます。
- コールド スワップ([Run]
のクリックにより実行中のアプリに強制できます)の信頼性が向上しました。また、コールド スワップを強制実行する際に、対象デバイスで通知 UI とウィジェット UI の変更が更新されなかった問題も修正されました。
- 最適化によりアプリの起動が大幅に高速化しました。この最適化はプロファイリングに影響する可能性があるため、アプリのプロファイリングを行う際は、一時的に Instant Run を無効化してください。
-
[AVD Manager]
ボタンと [SDK Manager]
ボタンが、完全なツールバーだけでなく、小型のナビゲーション バーにも含まれるようになりました。小型のナビゲーション バーを使用するには、[View] をクリックして [View] メニューを開き、[Navigation Bar] をオンにして [Toolbar] をオフにします。
- 「ハイブリッド」デバッガの名前が「デュアル」デバッガに変更されました。
- [Run/Debug Configurations] ダイアログの左ペインにある [Defaults] で、以下の実行構成の名前が変更されました(動作の変更はありません)。
- JUnit の名前が Android JUnit に変更されました。JUnit 実行構成を使用しているプロジェクトがある場合、その構成は、Android Studio でプロジェクトを初めて開いたときに Android JUnit 実行構成に変換されます。名前の変更を知らせるダイアログが表示されます。
- Android Tests の名前が Android Instrumented Tests に変更されました。
- バージョン 2.3 以降の Android Studio から GPU Debugger が削除されました。現在、このツールのオープンソースのスタンドアロン バージョンを GitHub で入手できます。
*.gradle build
スクリプトを右クリックしたとき、[Run/Debug] オプションが使用できなくなりました。- すべてのテンプレートで、
ConstraintLayout
がデフォルト レイアウトとして使用されるようになりました。 - Layout Editor の [Widgets] パレットが再設計されました。
このリリースには、いくつかのバグ修正も含まれています。2.3.0 のすべてのバグ修正をご覧ください。
既知の問題: 一部のデバイス メーカーは、アプリがデバイスにインストールされた後、アプリの自動起動をブロックしています。この制限があると、Android Studio 2.3 を搭載している物理デバイスにアプリをデプロイする際に、Instant Run の想定された動作が妨げられ、「Error: Not found; no service started
」というエラーが出力されます。この問題を回避するには、エミュレータを使用するか、デバイスの設定でアプリの自動起動を有効にします。そのための手順はデバイスによって異なるため、メーカーから提供される手順書をご確認ください。この問題の詳細については、Issue #235879 をご覧ください。
2.2(2016 年 9 月)
2.2.3(2016 年 12 月)
これは Android Studio 2.2 のマイナー アップデートです。Gradle、コア IDE、lint を中心とするバグ修正が組み込まれています。
ビルドの主な変更点:
- ProGuard バージョンのロールバック。ProGuard 5.3.1 で発見された正確性に関する問題のため、ProGuard を 5.2.1 にロールバックしました。Google は ProGuard チームと協力して速やかに修正を進めており、Android Studio 2.3 Canary 3 で ProGuard 5.3.2 にロール フォワードする予定です。
aaptOptions
IgnoreAssetsPattern
が正常に動作しないバグの修正(issue 224167)- Constraint Layout ライブラリに対する Gradle 自動ダウンロードに関するバグの修正(issue 212128)
- JDK8/Kotlin コンパイラと dx の問題に関するバグの修正(issue 227729)
2.2.3 のすべてのバグ修正をご覧ください。
2.2.2(2016 年 10 月)
これは Android Studio 2.2 のマイナー アップデートです。以下のような軽微な変更とバグ修正が組み込まれています。
- IDE を通じて Instant Run の問題を報告する際に、
InstantRun
イベントの logcat 出力も報告に含まれるようになりました。追加ロギングを有効にして問題を報告することにより、Instant Run の改善にご協力ください。 - Gradle に関するいくつかの軽微なバグ修正。
- マルチ APK の生成に関する問題の修正。
2.2.1(2016 年 10 月)
これは Android Studio 2.2 のマイナー アップデートです。いくつかのバグ修正と、Instant Run に関する問題のトラブルシューティングに役立つ追加ロギングを有効にする新機能が組み込まれています。追加ロギングを有効にして問題を報告することにより、Instant Run の改善にご協力ください。
新機能
- 新しい Layout Editor は、ConstraintLayout をサポートするカスタムビルド ツールを備えています。
- 新しい Layout Inspector では、エミュレータまたはデバイスでアプリを実行しているときに、レイアウト階層のスナップショットを検査できます。
- 新しい [Assistant] ウィンドウにより、Firebase サービスをアプリに統合できます。
- 新しい APK Analyzer ツールを使用して、パッケージ化アプリのコンテンツを検査できます。
- 新しい Espresso テスト レコーダー ツール(現在はベータ版)では、独自のインタラクションを記録して UI テストを作成できます。
- 新しいビルド キャッシュ(現在は試験運用版)により、ビルド パフォーマンスが高速化されます。
- C / C++ ビルドが CMake および ndk-build と統合されました。 新規または既存のネイティブ コードを、APK にパッケージ化されたライブラリにコンパイルしてビルドし、LLDB を使用してデバッグできます。新しいプロジェクトの場合、Android Studio はデフォルトで CMake を使用しますが、既存のプロジェクトの場合は ndk-build もサポートされます。Android アプリにネイティブ コードを組み込む方法については、C / C++ コードをプロジェクトに追加するをご覧ください。LLDB を使用してネイティブ コードをデバッグする方法については、ネイティブ コードをデバッグするをご覧ください。
- 新しいサンプル ブラウザにより、Android Studio 内から Google Android サンプルコードを簡単に検索して、アプリ開発を速やかに開始できます。
- 新しい Merged Manifest Viewer を使用すると、プロジェクト ビルド バリアント全体でマニフェスト ファイルとアプリ依存関係がどのようにマージされるかを診断できます。
- [Run] ウィンドウに、現在実行中のアプリのログメッセージも表示されるようになりました。なお、logcat モニターの表示は設定できますが、[Run] ウィンドウは設定できません。
- Android Emulator の新機能:
- 仮想センサーと [Cellular] > [Signal Strength] コントロールが新しく追加されました。
- [Cellular] > [Network type ] コントロールに [LTE] オプションが追加されました。
- 上下のスワイプ シミュレーションが追加され、縦方向のメニューをマウスホイールでスクロールできるようになりました。
- 実行 / デバッグ構成の新機能:
- Android App テンプレートと Android Tests テンプレートの [Debugger] タブに、LLDB でデバッグを行うための新しいオプションがいくつか追加されました。
- Android App テンプレートと Android Tests テンプレートの [Profiling] タブに、GPU トレースを有効にするための [Capture GPU Commands] オプションが追加されました。GPU Debugger(ベータ版機能)内で GPU トレースを表示できるようになりました。
- Android Tests テンプレートに、デプロイメント ターゲット用の [Firebase Test Lab Device Matrix] オプションが追加されました。
- Native Application テンプレートは非推奨になりました。プロジェクト内でこのテンプレートを使用していると、Android Studio によって自動的に Android App テンプレートに変換されます。
- Android Application テンプレートの名前が、Android App テンプレートに変更されました。
- GPU Debugger(現在はベータ版)のインストール、構成、パフォーマンス、UI の各機能が改善されました。
- Android Studio に OpenJDK 8 がバンドルされました。 既存のプロジェクトでは、[File] > [Project Structure] > [SDK Location] で指定されている JDK が引き続き使用されます。使用する JDK を新しくバンドルされたものに切り替えるには、[File] > [Project Structure] > [SDK Location] をクリックして、[Use embedded JDK] チェックボックスをオンにします。
- UI に新しいヘルプメニューとボタンが追加され、オンライン ドキュメントを見つけるのが容易になりました。
変更点
- IDE コードベースが IntelliJ 15 から IntelliJ 2016.1 にアップデートされました。
- Instant Run を使用するには、ターゲット デバイスの API レベルに対応するプラットフォーム SDK をインストールすることが必要になりました。
- ユーザーが仕事用プロファイルでアプリを実行している場合またはセカンダリ ユーザーとしてアプリを実行している場合、Instant Run は自動的に無効になります。
- 変更がデプロイされない問題やアプリがクラッシュする問題など、Instant Run の信頼性に関する多くの問題が修正されました。
- 一部のアプリアセットが実行中のアプリにデプロイされていませんでした(バグ: #213454)。
- Serializable クラスに対して serialVersionUID が定義されていない場合に、Instant Run セッションと非 Instant Run セッション間をユーザーが遷移すると、アプリがクラッシュしていました(バグ: #209006)。
- Instant Run にスタイルの変更が反映されませんでした(バグ: #210851)。
- Instant Run セッションの信頼性が低く、FileNotFoundException が発生していました (バグ: #213083)。
- ドローアブルに対する変更が、KitKat に対して完全な再ビルドを実行するまで反映されませんでした(バグ: #21530)。
- ネストされたパスがカスタム sourceSets に含まれる場合、Instant Run にリソースの変更が反映されませんでした(バグ: #219145)。
- 変更したクラスに列挙値を持つアノテーションが含まれる場合、ホットスワップとウォーム スワップが機能しませんでした(バグ: #209047)。
- Instant Run にアノテーション データの変更が反映されませんでした (バグ: #210089)。
- IDE の外部でコードに変更を加えた場合、Instant Run に変更が反映されませんでした(バグ: #213205)。
- セキュリティ トークンが一致しないため、Instant Run セッションが信頼できませんでした (バグ: #211989)。
- run-as を適切にサポートしていないデバイスで、コールド スワップが失敗していました (バグ: #210875)。
- Instant Run の再起動後にアプリがクラッシュしていました(バグ: #219744)。
- Instant Run から Instant Debug に切り替える際、ClassNotFoundException が発生していました(バグ: #215805)。
- 特に大規模プロジェクトの場合に、IDE 内の Gradle 同期のパフォーマンスが向上しました。
- 新しいアプリ パッケージ化コードにより、フルビルドでも増分ビルドでも、ビルド時間が短縮されました。
- アノテーション プロセッサやプロセス内 dex 変換のサポートなど、Jack コンパイラのパフォーマンスと機能が改善されました。詳細については、Android Plugin for Gradle 2.2.0 リリースノートをご覧ください。
- AVD Manager から Scale AVD プロパティが削除されました。
- Android Emulator の -port および -ports のコマンドライン オプションにより、エミュレータ インスタンスが使用しているポートとシリアル番号がレポートされ、指定した値に問題がある場合は警告が表示されるようになりました。
- [Create New Class] ダイアログと、対応するファイル テンプレートが改善されました。注: AnnotationType、Class、Enum、Interface、Singleton の各ファイル テンプレートを以前カスタマイズしていた場合は、新しいテンプレートを遵守するようにテンプレートを修正する必要があります。修正しないと、[Create New Class] ダイアログの新しいフィールドを使用できません。
- Vector Asset Studio のユーザー インターフェースが改善され、Adobe Photoshop Document(PSD)ファイルのサポートが追加されました。
- Image Asset Studio のユーザー インターフェースが改善されました。
- Theme Editor のリソース選択ツールが改善されました。
- Android Studio のメモリリークが修正され、全体的なメモリ使用量が削減されました。
- SDK Manager に [Background] ボタンが追加されました。別の作業に戻った後、バックグラウンドでパッケージをインストールできます。
- ユーザー補助機能が改善されました。スクリーン リーダーやキーボード ナビゲーションがサポートされます。
- コード分析機能が強化されました。Java 8 言語使用のコード品質チェックや、さまざまなクロスファイル分析が追加されています。
- いくつかのツールバー アイコンが変更されました。
2.1(2016 年 4 月)
このアップデートの主な変更は、Android N プレビューを使用した開発がサポートされるようになったことです。
2.1.3(2016 年 8 月)
このアップデートでは、Gradle 2.14.1 との互換性が追加されました。Gradle 2.14.1 には、パフォーマンス改善、新機能、重要なセキュリティ修正が含まれています。詳細については、Gradle リリースノートをご覧ください。
Android Studio 2.1.3 の新しいプロジェクトは、デフォルトで Gradle 2.14.1 を使用します。既存のプロジェクトの場合、Gradle 2.14.1 および Android Plugin for Gradle 2.1.3(Gradle 2.14.1 以上を使用する場合に必要)へのアップグレードを促すプロンプトが表示されます。
2.1.2(2016 年 6 月)
このアップデートには、いくつかの軽微な変更とバグ修正が含まれています。
- Instant Run のアップデートとバグ修正。
- LLDB パフォーマンスとクラッシュ通知の改善。
- Android Studio 2.1.1 セキュリティ アップデートで
git rebase
が失敗するようになった問題が修正されました。
2.1.1(2016 年 5 月)
セキュリティ リリースのアップデート。
Android N プラットフォームでは、Java 8 言語機能のサポートが追加されています。そのために、Jack と呼ばれる新しい試験運用版コンパイラが必要になります。現在のところ、Jack の最新バージョンをサポートしているのは、Android Studio 2.1 に限られます。したがって、Java 8 言語機能を使用する場合は、Android Studio 2.1 を使用してアプリをビルドする必要があります。
注: 現在 Instant Run と Jack コンパイラには互換性がないため、Jack コンパイラを有効にすると Instant Run は無効になります。
現在 Android Studio 2.1 は安定版ですが、Jack コンパイラはまだ試験運用版であり、build.gradle
ファイル内の jackOptions
プロパティで有効にする必要があります。
Android Studio 2.1 には、N プレビュー版をサポートするための変更以外に、軽微なバグ修正と以下の機能強化が含まれています。
- N デバイスやエミュレータを使用している場合に、実行 / デバッグ構成の [Debugger] タブで [Native] デバッガモードを選択すると、デフォルトで Java 対応 C++ デバッガが有効になります。
増分 Java コンパイルやプロセス内 dex 変換などのビルド機能の強化を利用する場合は、Android Plugin for Gradle をバージョン 2.1.0 に更新してください。
2.0(2016 年 4 月)
注: N デベロッパー プレビュー向けに開発を行っている場合、Android Studio 2.1 プレビュー版を使用する必要があります。Android Studio 2.0 は、N プレビュー版をターゲットにするために必要な機能の一部をサポートしていません。
Instant Run:
- Android Studio は、これまでにない速さでクリーンビルドをデプロイできるようになりました。 さらに、エミュレータまたは物理デバイスに対する増分コード変更のプッシュもほぼ瞬時に行われます。新しいデバッグビルドを再デプロイしなくても、また、ほとんどの場合アプリを再起動しなくても、更新内容を確認できます。
- Instant Run は、実行中のアプリに対する以下の変更のプッシュをサポートします。
- 既存のインスタンス メソッドまたは静的メソッドの実装に対する変更
- 既存のアプリリソースに対する変更
- メソッド シグネチャや静的フィールドなどの構造コードに対する変更(API レベル 21 以上を搭載した対象デバイスが必要)
- 詳細については、Instant Run のドキュメントをご覧ください。
注: Instant Run がサポートされるのは、デバッグビルド バリアントをデプロイし、Android Plugin for Gradle バージョン 2.0.0 以上を使用していて、アプリのモジュール レベルの
build.gradle
ファイルでminSdkVersion 15
以上を設定している場合に限られます。 最適なパフォーマンスを実現するには、アプリをminSdkVersion 21
以上で構成する必要があります。
lint に対する追加:
@IntDef
アノテーション付きの整数を使用したswitch
ステートメントの検査。これにより、すべての定数が処理されることを確認します。不足しているステートメントを迅速に追加するには、インテンション アクション プルダウン メニューで [Add Missing @IntDef Constants] を選択します。- 文字列補間を使用して
build.gradle
ファイルにバージョン番号を挿入しようとする誤った処理を示すフラグ。 Fragment
クラスを拡張する匿名クラスを示すフラグ。res/
フォルダやasset/
フォルダなど、安全でない場所にあるネイティブ コードを示すフラグ。 このフラグは、ネイティブ コードをlibs/
フォルダに格納することを促す役割を果たします。このフォルダにコードを格納すると、インストール時にアプリのdata/app-lib/
フォルダに安全にパッケージ化されます。AOSP: #169950Runtime.load()
呼び出しとSystem.load()
呼び出しへの安全でない呼び出しを示すフラグ。AOSP: #179980- メニューバーから [Refactor] > [Remove Unused Resources] を選択すると、未使用のリソースを見つけて削除できます。未使用のリソースを検出する機能は、未使用のリソース、未加工ファイル内の参照(
.html
画像参照など)、Gradle リソース圧縮ツールが使用するtools:keep
属性およびtools:discard
属性のいずれかによって参照されるリソースだけをサポートするようになりました。その際、非アクティブなソースセット(他のビルド フレーバーで使用されるリソースなど)が考慮され、静的フィールドのインポートが適切に処理されます。 - 暗黙的 API 参照が
minSdkVersion
のターゲットとなっているすべてのプラットフォームでサポートされているかどうかのチェック。 RecyclerView
とParcelable
の不適切な使用を示すフラグ。@IntDef
、@IntRange
、@Size
の検査で、int
配列および可変長引数もチェックされるようになりました。
他の改善点:
- Android Emulator 2.0 の最適化。エミュレータはこれまでになく高速になり、幅広い仮想デバイスをサポートするようになりました。UI も大幅に改善されています。新しいエミュレータの詳細については、SDK Tools リリースノートをご覧ください。
- Android Virtual Device Manager の改善:
- システム イメージが [Recommended]、[x86]、[Other] の各タブに分類されました。
- 詳細設定で、マルチコア サポートを有効にし、エミュレータが使用できるコアの数を指定できるようになりました。
- 詳細設定で、次のいずれかのオプションを選択することで、エミュレータ上のグラフィックのレンダリング方法を指定できるようになりました。
- Hardware: パソコンのグラフィック カードを使用して、レンダリングを高速化します。
- Software: ソフトウェア ベースのレンダリングを使用します。
- Auto: エミュレータが最適なオプションを判断します。これがデフォルト設定です。
- アプリのビルド前にデプロイ ターゲットを指定することで、AAPT のパッケージ化時間が短縮されました。これにより、Android Studio は、指定したデバイスが必要とするリソースだけを効率よくパッケージ化できます。
- クラウド サービスの利便性と拡張性を備えたオンデマンド アプリテストを実現するため、Cloud Test Lab 統合機能が追加されました。詳細については、Android Studio で Cloud Test Lab を使用する方法をご覧ください。
- 新しい GPU Debugger のプレビューが追加されました。グラフィックを多用するアプリの OpenGL ES コードを視覚的にステップ実行することができ、アプリやゲームを最適化できます。
- Google App Indexing Test が追加されました。URL、アプリ インデックス作成、検索機能のサポートをアプリに追加できます。これは、アプリへのトラフィックを増やし、どのアプリ コンテンツがよく利用されているかを把握して、新しいユーザーを引き付けるのに役立ちます。アプリ内 URL のテストと検証を、すべて Android Studio 内で行うことができます。Android Studio で URL とアプリ インデックス作成をサポートするをご覧ください。
- 最新の IntelliJ 15 リリースにアップグレードされました。コード分析とパフォーマンスが改善されています。新機能と機能強化の詳細については、IntelliJ の新機能をご覧ください。
- XML エディタのオートコンプリートで、属性を補完する際に引用符が追加されるようになりました。このオプションを有効にするには、[Setting] ダイアログまたは [Preferences] ダイアログを開き、[Editor] > [General] > [Smart Keys] に移動して、[Add quotes for attribute value on attribute completion] チェックボックスをオンにします。Issue: 195113
- XML エディタが、データ バインディング式のコードの補完をサポートするようになりました。
過去のリリース