Android 11 のデベロッパー プレビューが公開されました。ぜひお試しのうえ、フィードバックをお寄せください

Android Studio リリースノート

Android Studio は Android 開発用の公式 IDE であり、Android アプリの構築に必要なものがすべて含まれています。

最新バージョンを入手するには、[Help] > [Check for updates](macOS の場合は [Android Studio] > [Check for updates] をクリックします。

こちらから Android Studio をダウンロードすることもできます。

Android Studio で問題が発生した場合は、既知の問題またはトラブルシューティングのページを確認してください。

各プレビュー リリースにおける重要な修正のリストなど、リリースに関する最新情報については、リリース アップデート情報をご覧ください。

Android Plugin for Gradle の新機能については、該当のリリースノートをご覧ください。

3.5(2019 年 8 月)

Android Studio 3.5 は Project Marble の結果を反映したメジャー リリースです。Android Studio 3.3 リリース以降の複数のリリースにおいて、Project Marble イニシアチブは IDE の 3 つの主要領域の改善に重点を置いています。それは、システムの健全性機能の改良、バグの修正です。

Project Madble の上記の情報とその他の最新情報については、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 のツールバー ボタン

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 要素の制約関係

選択した UI 要素の制約関係

同様に、制約を選択して Delete キーを押すことで、制約を削除できます。または、Control キー(macOS の場合は Command)を押しながら制約アンカーをクリックしても、制約を削除できます。Control または Command キーを押しながらアンカーにカーソルを合わせると、該当の制約が赤色に変わり、クリックして削除できることが示されます。

ビューが選択されているときは、[Attributes] パネルの [Constraint Widget] セクションでいずれかの [+] アイコンをクリックすることにより、制約を作成できます。次の図をご覧ください。新しい制約を作成すると、Layout Editor により制約が選択されてハイライト表示され、追加した情報がすぐに反映されて視覚化されます。

制約ウィジェットで制約を作成する方法を示すアニメーション

制約ウィジェットで制約を作成する

制約を作成すると、制約できる適格なアンカー ポイントのみが表示されます。以前は、制約できるかどうかにかかわらず、すべてのビューのすべてのアンカー ポイントがハイライト表示されていました。また、青いオーバーレイにより制約のターゲットがハイライト表示されます。このハイライト表示は、他のコンポーネントと重なっているコンポーネントに制約を適用するときに、特に便利です。

Android Studio 3.4 で重なり合ったコンポーネントに制約を作成する方法を示すアニメーション

Android Studio 3.4 で重なり合ったコンポーネントに制約を作成する

Android Studio 3.5 で重なり合ったコンポーネントに制約を作成する方法を示すアニメーション

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.4 でのコードエディタのパフォーマンス

Android Studio 3.5 でのコードエディタのパフォーマンスを示すアニメーション

Android Studio 3.5 でのコード編集のパフォーマンスの向上

C/C++ プロジェクトのサポートの改善

Android Studio 3.5 には、C/C++ プロジェクトのサポートを改善する変更がいくつか含まれています。

単一バリアント同期用の [Build Variants] パネルの改善

[Build Variants] パネルで、アクティブなビルド バリアントとアクティブな ABI の両方を指定できるようになりました。この機能により、モジュールごとのビルド構成が簡単になり、Gradle 同期のパフォーマンスも向上します。

詳細については、ビルド バリアントの変更をご覧ください。

ABI 別に選択された単一バリアントが表示された [Build Variants] パネル

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 コアライブラリを使用して、後からオンデマンドでモジュールをダウンロードすることをリクエストできます。詳細については、条件付き配信の構成をご覧ください。

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 によって解決された各依存関係を、プロジェクトの依存関係グラフに基づいて検査、視覚化することができます。手順は次のとおりです。

  1. PSD の左パネルで、[Dependencies] を選択します。
  2. [Modules] パネルで、解決済み依存関係を検査するモジュールを選択します。
  3. 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 内の ライブラリのビルド ID と一致するかどうかを検証します。

ビルド ID を使用して APK 内にネイティブ ライブラリをビルドした場合、Android Studio は、シンボル ファイル内のビルド ID がネイティブ ライブラリ内のビルド ID と一致するかどうかをチェックし、一致しない場合はシンボル ファイルを拒否します。ビルド ID を使用してビルドしていない場合、不適切なシンボル ファイルを指定すると、デバッグ時に問題が発生することがあります。

R8 がデフォルトで有効

R8 は、desugar、圧縮、難読化、最適化、dex 変換をまとめて 1 つのステップに統合することにより、ビルド パフォーマンスを大幅に改善します。 R8 は Android Gradle Plugin 3.3.0 で導入されました。現在は、3.4.0 以上のプラグインを使用するアプリ プロジェクトと Android ライブラリ プロジェクトの両方で、デフォルトで有効になっています。

下記の図は、R8 が導入される前のコンパイル プロセスの概要を示しています。

R8 の導入前、ProGuard は dex 変換および desugar とは別のコンパイル ステップでした。

現在では、下記の図に示すように、desugar、圧縮、難読化、最適化、dex 変換(D8)のすべてが、R8 によって 1 つのステップで完了します。

R8 では、desugar、圧縮、難読化、最適化、dex 変換がすべて単一のコンパイル ステップで行われます。

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 コンポーネントでサポートされているすべての引数タイプが、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 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] をオンにすると、インスタント対応動的機能モジュールを作成できます。なお、このモジュールを作成すると、アプリのベース モジュールもインスタント対応になります。

アプリをインスタント エクスペリエンスとしてローカル デバイスにデプロイするには、実行構成を編集して、[General] > [Deploy as instant app] チェックボックスをオンにします。

単一バリアント プロジェクトの同期

ビルド構成とプロジェクトを同期することは、プロジェクトがどのように構成されているかを Android Studio に認識させるうえで重要なステップです。ただし、大規模なプロジェクトでは、この処理に時間がかかることがあります。プロジェクト内で複数のビルド バリアントを使用している場合は、現在選択しているバリアントだけをプロジェクトと同期することで、この処理を最適化できます。

この最適化を有効にするには、Android Studio 3.3 以降と、Android Gradle Plugin 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 以降にはこの修正が組み込まれています。

  • 通常はビルドツールのバージョンを指定する必要はありませんが、renderscriptSupportModeEnabledtrue に設定して 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 開発の効率化に役立つコンポーネント、ツール、ガイダンスを備えており、繰り返し発生するタスクを削減できます。テスト可能な高品質のアプリを短時間で簡単に作成することが可能になります。Jetpack をサポートするため、Android Studio には以下のアップデートが組み込まれています。詳細については、Jetpack のドキュメントをご覧ください。

新しい Navigation Editor は Android Jetpack の Navigation コンポーネントと統合されており、アプリのナビゲーション構造の作成をグラフ表示できます。Navigation Editor により、アプリ内のデスティネーション間のナビゲーションのデザインと実装が簡単になります。

Android Studio 3.2 では、Navigation Editor は試験運用版です。Navigation Editor を有効にするには、[File] > [Settings](Mac の場合は [Android Studio] > [Preferences])をクリックして、左ペインで [Experimental] カテゴリを選択し、[Enable Navigation Editor] チェックボックスをオンにして、Android Studio を再起動します。

詳細については、Navigation Editor のドキュメントをご覧ください。

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 の新しいアプリ配信モデルである Dynamic Delivery が、App Bundle を使用して、個々のユーザーのデバイス構成に合わせて最適化した APK を生成して配信します。そのため、各ユーザーは、アプリの実行に必要なコードとリソースをダウンロードするだけで済みます。つまり、デベロッパー側では、複数の APK を生成、署名、管理する必要がなくなり、ユーザー側では、サイズの小さい最適化された APK をダウンロードできるようになります。

また、アプリ プロジェクトに動的機能モジュールを追加して、App Bundle に組み込むこともできます。Dynamic Delivery により、ユーザーはアプリの動的機能をオンデマンドでダウンロードし、インストールできます。

バンドルを作成するには、[Build] > [Build Bundle(s) / APK(s)] > [Build Bundle(s)] を選択します。

Android App Bundle のビルド方法と分析方法などについては、Android App Bundle をご覧ください。

Layout Editor のサンプルデータ

多くの Android レイアウトにはランタイム データが含まれているため、アプリ開発の設計段階でレイアウトのデザインを可視化することが難しい場合があります。そこで、Layout Editor のサンプルデータを利用して、ビューのプレビューを簡単に確認できるようになりました。ビューを追加すると、[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] を選択します。インポートしたデータは、他のヒープダンプと同じように Memory Profiler 内で検査できます。

ヒープダンプ データを後で確認するために保存するには、[Sessions] ペインの [Heap Dump] エントリの右側にある [Export Heap Dump] ボタンを使用します。[Export As] ダイアログが表示されるので、ファイル名拡張子を .hprof にしてファイルを保存します。

アプリ起動時の CPU アクティビティの記録

アプリ起動時に CPU アクティビティを記録できるようになりました。手順は次のとおりです。

  1. メインメニューで、[Run] > [Edit Configurations] を選択します。
  2. 目的の実行構成の [Profiling] タブで、[Start recording a method trace on startup] チェックボックスをオンにします。
  3. プルダウン メニューで、使用する CPU 記録構成を選択します。
  4. [Run] > [Profile] を選択して、Android 8.0(API レベル 26)以降を搭載しているデバイスにアプリをデプロイします。

CPU トレースのエクスポート

CPU Profiler を使用して CPU アクティビティを記録すると、そのデータを .trace ファイルとしてエクスポートし、他の誰かと共有したり後で検査したりできます。

CPU アクティビティの記録後にトレースをエクスポートする手順は次のとおりです。

  1. CPU タイムラインからエクスポートする記録を右クリックします。
  2. プルダウン メニューで [Export trace] を選択します。
  3. ファイルの保存先に移動し、[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.gradlelintOptions を通して、特定のチェックを有効または無効にするために必要な情報を見つけることが容易になりました。

詳細については、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 を作成する場合、プラグインで、mipsmips64armeabi の各 ABI 用の APK がデフォルトで生成されなくなりました。

これらの ABI をターゲットとする APK を作成するには、NDK r16b 以下を使用して、下記のように build.gradle ファイル内で対象の ABI を指定する必要があります。

    splits {
        abi {
            include 'armeabi', 'mips', 'mips64'
            ...
        }
    }
    

CMake ビルドファイルのエディタ機能の改善

CMake を使用してプロジェクトに C/C++ コードを追加する場合に CMake ビルド スクリプトの編集を容易にするため、Android Studio のエディタ機能が以下のように改善されています。

  • 構文ハイライト表示とコード補完: IDE 内で、一般的な CMake コマンドがハイライト表示され、コード補完候補が提示されるようになりました。 また、Ctrl キー(Mac の場合は command キー)を押しながらファイルをクリックすると、そのファイルに移動できます。
  • コードの再フォーマット: IntelliJ のコード再フォーマット オプションを使用して、CMake ビルド スクリプトにコードスタイルを適用できるようになりました。
  • 安全なリファクタリング: CMake ビルド スクリプト内で参照しているファイルの名前変更や削除をしていないか、IDE のビルトイン リファクタリング ツールで確認できるようになりました。

以前のバージョンの 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() 依存関係を指定してください。

      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.propertiesandroid.enableD8false に設定している場合は、そのフラグを削除するか、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 ProfilerMemory 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パレットに多くの改善が行われました。

  • ビューやレイアウトのカテゴリが再編成されました。
  • ビューとレイアウトに新しい [Common] カテゴリが追加されました。[Favorite] コマンドを使用して追加できます。
  • ビューとレイアウトの検索機能が改善されました。
  • 特定のビュー要素またはレイアウト要素のドキュメントを開くための新しいコマンドが追加されました。

コンポーネント ツリーまたはデザイン エディタに追加された新しい [Convert view] コマンドを使用すると、ビュー / レイアウトを別のタイプのビュー / レイアウトに変換できます。

[Attributes] ウィンドウの上部にあるビュー インスペクタ内の新しい [Create a connection] ボタンを使用すると、選択したビューの近くのアイテムに対して簡単に制約を作成できます。

Run と Instant Run

[Attributes] ウィンドウの上部にあるビュー インスペクタ内の新しい [Create a connection] ボタン()を使用すると、選択したビューの近くのアイテムに対して簡単に制約を作成することができます。Run と Instant RunSelect 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 に組み込まれています。

Java ファイルを Kotlin に変換する([Code] > [Convert Java File to Kotlin File] をクリックする)か、[New Project] ウィザードを使用して新しい Kotlin 対応プロジェクトを作成することにより、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 App のサポート

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 Assistant

Firebase Assistant が更新され、App Indexing をテストするための新しいチュートリアルが追加されました。 このアシスタントを開くには、[Tools] > [Firebase] を選択します。次に、[App Indexing] > [Test App Indexing] を選択します。

チュートリアルには、公開コンテンツと個人用コンテンツのインデックス作成をテストするための新しいボタンが含まれています。

  • ステップ 2 で、[Preview search results] をクリックすると、URL が Google 検索の検索結果に表示されるか検証できます。
  • ステップ 3 で、[Check for errors] をクリックすると、アプリ内のインデックス登録可能オブジェクトが個人コンテンツ インデックスに追加されているか検証できます。

App Links Assistant が更新され、次の新機能が追加されました。

  • 各 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.32017.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 に変換するをご覧ください。
  • 新しい App Links Assistant では、ステップバイステップ方式のウィザードを通じて、Android アプリリンクを簡単にアプリに追加できます。Android アプリリンクは、ユーザーを Android アプリ内の特定のコンテンツに直接誘導する HTTP URL です。
  • Layout Editor で、以下の 2 つの新しい ConstraintLayout 機能がサポートされるようになりました。
    • アスペクト比に基づいて、ビューサイズを定義します。
    • 制約チェーンを使用して、パッケージ化グループ、分散グループ、加重線形グループを作成します。
    詳細については、ConstraintLayout を使用してレスポンシブ UI を作成するをご覧ください。
  • また、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 プレフィックスでは、MyLibThememyLibAttrmy_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」というエラーが出力されます。この問題を回避するには、エミュレータを使用するか、デバイスの設定でアプリの自動起動を有効にします。そのための手順はデバイスによって異なるため、メーカーから提供される手順書をご確認ください。たとえば、影響を受ける一部の Asus デバイスの場合、自動起動マネージャーを使用してアプリをホワイトリストに登録する必要があります。この問題の詳細については、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 Test Recorder ツール(現在はベータ版)では、独自のインタラクションを記録して 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] ダイアログと、対応するファイル テンプレートが改善されました。注: AnnotationTypeClassEnumInterfaceSingleton の各ファイル テンプレートを以前カスタマイズしていた場合は、新しいテンプレートに準拠するようにテンプレートを修正する必要があります。そうしないと、[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 プレビュー版をターゲットにするために必要な機能の一部をサポートしていません。詳細については、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: #169950
  • Runtime.load() 呼び出しと System.load() 呼び出しへの安全でない呼び出しを示すフラグ。AOSP: #179980
  • メニューバーから [Refactor] > [Remove Unused Resources] を選択すると、未使用のリソースを見つけて削除できます。未使用のリソースを検出する機能は、未使用のリソース、未加工ファイル内の参照(.html 画像参照など)、Gradle リソース圧縮ツールが使用する tools:keep 属性および tools:discard 属性のいずれかによって参照されるリソースだけをサポートするようになりました。その際、非アクティブなソースセット(他のビルド フレーバーで使用されるリソースなど)が考慮され、静的フィールドのインポートが適切に処理されます。
  • 暗黙的 API 参照が minSdkVersion のターゲットとなっているすべてのプラットフォームでサポートされているかどうかのチェック。
  • RecyclerViewParcelable の不適切な使用を示すフラグ。
  • @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 エディタが、データ バインディング式のコード補完をサポートするようになりました。

過去のリリース