Android Studio 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] メニュー オプション

アプリ プロジェクトの作成後、次の手順でベース モジュールをいつでも即座に有効化できるようになりました。

  1. メニューバーから [View] > [Tool Windows] > [Project] を選択して、[Project] パネルを開きます。
  2. 通常は「app」という名のベース モジュールを右クリックし、[Refactor] > [Enable Instant Apps Support] を選択します。
  3. 表示されたダイアログで、プルダウン メニューからベース モジュールを選択します。
  4. [OK] をクリックします。

注: [Create New Project] ウィザードからベースアプリ モジュールを即座に有効にするオプションは削除されました。

詳細については、Google Play Instant の概要をご覧ください。

APK Analyzer でクラスとメソッドのバイトコードの難読化を解除する

APK Analyzer を使用して DEX ファイルを検査する場合、次のように、クラスとメソッドのバイトコードの難読化を解除できます。

  1. メニューバーから [Build] > [Analyze APK] を選択します。
  2. 表示されたダイアログで、検査する APK に移動して選択します。
  3. [Open] をクリックします。
  4. APK Analyzer で、検査する DEX ファイルを選択します。
  5. DEX ファイル ビューアで、分析する APK の ProGuard マッピング ファイルを読み込みます。
  6. 検査するクラスまたはメソッドを右クリックし、[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 の再読み込み {:#3.6-reload-apk}

プロジェクト内の APK が IDE 外で更新されたときに、新しいプロジェクトを作成する必要がなくなりました。Android Studio は APK の変更を検出し、APK を再インポートするオプションを提供します。

Kotlin 専用 APK ソースのアタッチ

事前ビルドされた APK のプロファイリングとデバッグを行う際、Kotlin 専用の外部 APK ソースをアタッチできるようになりました。詳しくは、Kotlin / Java ソースをアタッチするをご覧ください。

Memory Profiler でのリーク検出

Memory Profiler でヒープダンプを分析する場合、アプリの Activity および Fragment インスタンスでメモリリークが発生していると考えられるプロファイリング データをフィルタできるようになりました。

フィルタで表示されるデータの種類は、次のとおりです。

  • 破棄されているが、まだ参照されている Activity インスタンス。
  • 有効な FragmentManager がないが、まだ参照されている Fragment インスタンス。

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] ボタンをクリックします。

エミュレータの [Extended Controls] にある [Single Points] タブ

Routes

[Single points] タブと同様に、[Routes] タブには、Google マップ WebView が表示されるので、2 つ以上の場所の間に経路を作成できます。経路を作成して保存する手順は次のとおりです。

  1. 地図表示で、テキスト フィールドを使用して経路の最初の目的地を検索します。
  2. 検索結果から場所を選択します。
  3. ナビゲーション ボタンを選択します。
  4. 地図から経路の出発地を選択します。
  5. (省略可)経路の目的地を追加する場合は、[Add destination] をクリックします。
  6. 地図表示で [Save route] をクリックして経路を保存します。
  7. ルートの名前を指定して、[Save] をクリックします。

保存した経路に沿ってエミュレータでシミュレートするには、[Saved routes] リストから経路を選択し、[Extended controls] ウィンドウの右下にある [Play route] をクリックします。シミュレーションを停止するには、[Stop route] をクリックします。

エミュレータの [Extended controls] の [Routes] タブ

指定した経路に沿ってエミュレータで継続的にシミュレートするには、[Repeat playback] のスイッチを有効にします。エミュレータが指定された経路をたどる速度を変更するには、[Playback speed] プルダウンから速度を選択します。

マルチディスプレイのサポート

Android Emulator では、カスタマイズ可能なディメンションをサポートする複数のディスプレイにアプリをデプロイして、マルチウィンドウマルチディスプレイをサポートするアプリをテストできます。仮想デバイスの実行中、次のように、最大 2 つのディスプレイを追加できます。

  1. [Extended controls] を開き、[Displays] タブに移動します。

  2. ディスプレイを 1 つ追加するには、[Add secondary display] をクリックします。

  3. [Secondary displays] のプルダウン メニューから、次のいずれかを行います。

  4. プリセットのアスペクト比のいずれかを選択する

  5. [custom] を選択して、カスタム ディスプレイの高さdpi を設定する

  6. (省略可)3 つ目のディスプレイを追加するには、[Add secondary display] をクリックします。

  7. [Apply changes] をクリックして、指定したディスプレイを、実行中の仮想デバイスに追加します。

エミュレータの [Extended controls] の [Display] タブに複数のディスプレイを追加

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 プロジェクトのテンプレートを選択

さらに、Android Automotive OS デバイス用の Android Virtual Device(AVD)も作成できるようになりました。それには、[Virtual Device Configuration] ウィザードの [Automotive] タブで次のどちらかを選択します。

  1. Polestar 2: Polestar 2 ヘッドユニットをエミュレートする AVD を作成します。
  2. Automotive (1024p landscape): 1024 × 768 ピクセルの汎用 Android Auto ヘッドユニットの AVD を作成します。

Android Automotive 仮想デバイスを選択

再開可能な SDK のダウンロード

SDK Manager を使用して SDK コンポーネントやツールをダウンロードする場合、Android Studio ではダウンロードを最初からやり直すのではなく、中断されたダウンロード(ネットワークの問題などによる)を再開できるようになりました。この拡張機能は、Android Emulator やシステム イメージなどの大容量ダウンロードで、インターネット接続が不安定な場合に特に役立ちます。

また、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] ウィンドウ上部にある「オフライン モード切り替え」アイコン Gradle パネルの Gradle オフライン ボタン。 をクリックします。

IntelliJ IDEA 2019.2

IntelliJ IDEA 2019.2 リリースによる改善に伴い、コアの Android Studio IDE が更新されました。

バージョン 2019.2 に累積して組み込まれている他の IntelliJ バージョンの改善点については、以下のページをご覧ください。

コミュニティ貢献者

Google は、バグの発見などを通して Android Studio 3.6 の改善にご協力いただいたすべてのコミュニティ貢献者に感謝の意を表します。バグをご報告いただいた以下の方々には、特に感謝いたします。

  • Albert Lo
  • Alexey Rot
  • Andrea Leganza
  • Benedikt Kolb
  • César Puerta
  • Curtis Kroetsch
  • Damian Wieczorek
  • Dan Lew
  • David Burström
  • Deepanshu
  • Egor Andreevici
  • Eli Graber
  • Emin Kokalari
  • Evan Tatarka
  • Frantisek Nagy
  • Greg Moens
  • Hannes Achleitner
  • Hans Petter Eide
  • Henning Bunk
  • Hugo Visser
  • Igor Escodro
  • Iñaki Villar
  • Javentira Lienata
  • Joe Rogers
  • Kristoffer Danielsson
  • Liran Barsisa
  • Louis CAD
  • Lóránt Pintér
  • Łukasz Wasylkowski
  • Luke Fielke
  • Malvin Sutanto
  • Masatoshi Kubode
  • Mathew Winters
  • Michael Bailey
  • Michał Górny
  • Mihai Neacsu
  • Mike Scamell
  • Monte Creasor
  • Nelson Osacky
  • Nelson Osacky
  • Nick Firmani
  • Nicklas Ansman Giertz
  • Niclas Kron
  • Nicolás Lichtmaier
  • Niek Haarman
  • Niels van Hove
  • Niklas Baudy
  • Renato Goncalves
  • Roar Grønmo
  • Ruslan Baratov
  • Sinan Kozak
  • Slawomir Czerwinski
  • Stefan Wolf
  • Stephen D'Amico
  • Tao Wang
  • Tomas Chladek
  • Tomáš Procházka
  • Tony Robalik
  • Torbjørn Sørli
  • Warren He
  • Yenchi Lin
  • Zac Sweers