過去のリリース

以下は、Android Studio 3.6 以前と Android Gradle プラグイン 3.6.0 以前のリリースノートです。

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
  • 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 のツールバー ボタン

    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 のインストールと構成をご覧ください。

    ChromeOS のサポート

    Android Studio では、HP Chromebook x360 14 や Acer Chromebook 13/Spin 13 を含め、システム要件に記載されている各種の ChromeOS デバイスが公式にサポートされています。使用するには、互換性のある ChromeOS デバイスで Android Studio をダウンロードし、インストール手順を実施します。

    注: 現在、ChromeOS 上の 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 で追加できます。

    注: 既存のビルド構成ファイルで複雑な Groovy スクリプトを使用して値を割り当てている場合、PSD ではそれらの値を編集できない場合があります。また、Kotlin で記述されたビルドファイルは、PSD では編集できません。

    Modules

    [Modules] セクションでは、既存のモジュール内のすべてのビルド バリアントに適用されるプロパティを構成したり、新しいモジュールをプロジェクトに追加したりすることが可能です。たとえば、defaultConfig プロパティの構成や署名構成の管理が可能です。

    依存関係

    プロジェクトの同期中に 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 内の .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 が導入される前のコンパイル プロセスの概要を示しています。

    R8 より前、ProGuard は dex 変換や desugar とは異なるコンパイル ステップでした。

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

    R8 では、desugar、圧縮、難読化、最適化、dex 変換がすべて 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
        
      

    注: 特定のビルドタイプでは、アプリ モジュールの build.gradle ファイルで useProguardfalse に設定している場合、プロジェクトの gradle.properties ファイルで R8 を無効にしているかどうかにかかわらず、Android Gradle プラグインは R8 を使用してそのビルドタイプに対応するアプリのコードを圧縮します。

    Navigation コンポーネントでサポートされているすべての引数タイプが、Navigation Editor でサポートされるようになりました。サポートされるタイプの詳細については、デスティネーション間でデータを渡すをご覧ください。

    Layout 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] をオンにすると、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] チェックボックスをオンにします。

    注: 現在のところ、この最適化は、Java プログラミング言語のみを含むプロジェクトに対応しています。たとえば、プロジェクト内に Kotlin または C++ のコードがあることを IDE が検出した場合、この最適化が自動的に有効になることはありません。また、手動で有効にすることも避けてください。

    詳細については、単一バリアント プロジェクトの同期を有効にするをご覧ください。

    クイック フィードバックの提供

    使用統計情報の共有を有効にして 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 を有効にするには、[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 レイアウトにはランタイム データが含まれているため、アプリ開発の設計段階でレイアウトのデザインを可視化することが難しい場合があります。そこで、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] を選択します。他のヒープダンプと同じように、メモリ プロファイラでこのファイルのデータを検査できます。

    ヒープダンプ データを後で確認するために保存するには、[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'
                ...
            }
        }
        
        splits {
            abi {
                include("armeabi", "mips", "mips64")
                ...
            }
        }
        

    注: この動作変更は Android Studio 3.1 RC1 以上にも組み込まれています。

    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() 依存関係を指定してください。

        buildscript {
            repositories {
                google() // here
                jcenter()
            }
            dependencies {
                classpath 'com.android.tools.build:gradle:3.2.0'
            }
        }
        allprojects {
            repositories {
                google() // and here
                jcenter()
            }
        }
        
        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 events] コマンドを使用すると、誤って「No Testing are 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)以上でのみ動作します。

    注: Android Studio 3.0 以上を使用している場合、ネイティブ デバッグは 32 ビット Windows では機能しません。32 ビット Windows を使用していて、ネイティブ コードをデバッグする必要がある場合は、Android Studio 2.3 を使用してください。

    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 の [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 にはさまざまな改善措置や新機能が組み込まれていますが、最大の目的は、多数のモジュールを持つプロジェクトのビルド パフォーマンスを高めることです。新しいプラグインを大規模なプロジェクトで使用すると、以下のメリットがもたらされます。

    • 新しい遅延型の依存関係解決により、ビルド構成時間が短縮されます。
    • バリアントを識別した依存関係の解決では、ビルドするプロジェクトとバリアントのみが対象になります。
    • コードまたはリソースに対してシンプルな変更を適用する際の増分ビルドが高速化されます。

    注: 上記の改善を行うには、一部のプラグインの動作、DSL、API に影響する大幅な変更が必要でした。バージョン 3.0.0 へのアップグレードを行うと、ビルドファイルと 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] をクリックする)か、新規プロジェクト ウィザードを使用して新しい 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] をクリックします)。

    ウィンドウの上部にあるイベント タイムラインには、タッチイベント、キープレス、アクティビティの変更が表示されるので、さまざまなコンテキストを通じてタイムライン内の他のパフォーマンス イベントを把握できます。

    注: [Logcat] ビューも別個のウィンドウに移動されました(以前は Android Monitor の内部にありましたが、これは削除されました)。

    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 App をご覧ください。

    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)] を選択します。

    注: アダプティブ ランチャー アイコンを使用するには、compileSdkVersion を 26 以上に設定する必要があります。

    詳細については、アダプティブ アイコンをご覧ください。

    フォント リソースのサポート

    Android 8.0 の新しいフォント リソースをサポートするため、Android Studio にフォント リソース セレクタが追加されました。これにより、フォントをアプリ内にバンドルしたり、必要に応じてフォントをデバイスにダウンロードするようプロジェクトを設定したりすることができます。また、Layout Editor でも、レイアウト内でフォントをプレビューできます。

    ダウンロード可能フォントを試すには、デバイスやエミュレータが Google Play Services 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] をクリックすると、アプリ内のインデックス登録可能オブジェクトが個人コンテンツ インデックスに追加されているか検証できます。

    アプリリンク アシスタントが更新され、以下の新機能が追加されました。

    • 各 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 を参照)。

    <h3 class="hide-from-toc">
      New
    </h3>
    
    <div class="video-wrapper-left">
      <iframe class="devsite-embedded-youtube-video" data-video-id="VFyKclKBGf0"
              data-autohide="1" data-showinfo="0" frameborder="0" allowfullscreen>
      </iframe>
    </div>
    
    <ul>
      <li>Android Studio can now convert PNG, BMP, JPG, and static GIF files to
      WebP format. WebP is an image file format from Google that provides lossy
      compression (like JPEG) as well as transparency (like PNG) but can provide
      better compression than either JPEG or PNG. For more information, see
        <a href="/studio/write/convert-webp.html">Convert images to WebP in Android
        Studio</a>.
      </li>
    
      <li>The new <a href="/studio/write/app-link-indexing.html">App Links
      Assistant</a> simplifies the process of adding Android App Links to your app
      into a step-by-step wizard. Android App Links are HTTP URLs that bring users
      directly to specific content in your Android app.
      </li>
    
      <li>The Layout Editor now includes support for two new ConstraintLayout
      features:
        <ul>
          <li>Define a view size based on an aspect ratio.
          </li>
          <li>Create packed, spread, and weighted linear groups with constraint
          chains.
          </li>
        </ul>
        For more information, see <a href=
        "/training/constraint-layout/index.html">Build a Responsive UI with
        ConstraintLayout</a>.
      </li>
    
      <li>The Layout Editor also now lets you create a list of <a href=
      "/studio/write/layout-editor.html#edit-properties">favorite attributes</a> so
      you don't have to click <b>View all attributes</b> to access the attributes
      you use most.
      </li>
    
      <li>When adding a material icon using the Vector Import Dialog (<b>File &gt;
      New &gt; Vector Asset</b>), you can now filter the list of available icons by
      category or by icon name. For more information, see <a href=
      "/studio/write/vector-asset-studio.html#materialicon">Adding a material
      icon</a>.
      </li>
    
      <li>
        <a href="/studio/write/annotations.html#accessibility">New and updated
        annotations</a>. The new <code>@RestrictTo</code> annotation for methods,
        classes, and packages lets you restrict an API. The updated
        <code>@VisibleForTesting</code> annotation now has an optional
        <code>otherwise</code> argument that lets you designate what the visibility
        of a method should be if not for the need to make it visible for testing.
        Lint uses the <code>otherwise</code> option to enforce the intended
        visibility of the method.
      </li>
    
      <li>New <a href="/studio/write/lint.html#snapshot">lint baseline support</a>
      allows you to use a snapshot of your project's current set of warnings as a
      baseline for future inspection runs so only new issues are reported. The
      baseline snapshot lets you start using lint to fail the build for new issues
      without having to go back and address all existing issues first.
      </li>
    
      <li>New lint checks, including the following:
        <ul>
          <li>Obsolete <code>SDK_INT</code> Checks: Android Studio removes obsolete
          code that checks for SDK versions.
          </li>
          <li>Object Animator Validation: Lint analyzes your code to make sure that
          your <code>ObjectAnimator</code> calls reference valid methods with the
          right signatures and checks that those methods are annotated with <code>
            @Keep</code> to prevent ProGuard from renaming or removing them during
            release builds.
          </li>
          <li>Unnecessary Item Decorator Copy: Older versions of the
          <code>RecyclerView</code> library did not include a divider decorator
          class, but one was provided as a sample in the support demos. Recent
          versions of the library have a divider decorator class. Lint looks for
          the old sample and suggests replacing it with the new one.
          </li>
          <li>WifiManager Leak: Prior to Android 7.0 (API level 24), initializing
          the <code>WifiManager</code> with <code><a href="/reference/android/content/Context.html#getSystemService(java.lang.Class&lt;T&gt;)">Context.getSystemService()</a></code>
          can cause a memory leak if the context is not the application context.
          Lint looks for these initializations, and if it <em>cannot</em> determine
          that the context is the application context, it suggests you use <code><a href="/reference/android/content/Context.html#getApplicationContext()">Context.getApplicationContext()</a></code> to get the proper context for the
          initialization.
          </li>
          <li>Improved Resource Prefix: The existing <code>resourcePrefix</code>
          lint check had many limitations. You can now configure your project with
          a prefix, such as <code>android { resourcePrefix '<var>my_lib</var>'
          }</code>, and lint makes sure that all of your resources are using this
          prefix. You can use variations of the name for styles and themes. For
          example for the <var>my_lib</var> prefix, you can have themes named
          <code>MyLibTheme</code>, <code>myLibAttr</code>,
          <code>my_lib_layout</code>, and so on.
          </li>
          <li>Switch to WebP: This check identifies images in your project that can
          be converted to WebP format based on your project’s
          <code>minSdkVersion</code> setting. An associated quickfix can
          automatically convert the images, or you can <a href=
          "/studio/write/convert-webp.html">convert images to WebP</a> manually.
          </li>
          <li>Unsafe WebP: If your project already includes WebP images, this check
          analyzes your project to ensure that your <code>minSdkVersion</code>
          setting is high enough to support the included images. For more
          information about WebP support in Android and Android Studio, see
          <a class="external" href=
          "https://developers.google.com/speed/webp/faq#which_web_browsers_natively_support_webp">
            Which browsers natively support WebP?</a> and <a href=
            "/studio/write/convert-webp.html">Create WebP Images Using Android
            Studio</a>.
          </li>
        </ul>
      </li>
    </ul>
    
    <h3 class="hide-from-toc">
      Changes
    </h3>
    
    <ul>
      <li>A separate button to push changes with Instant Run: After deploying your
      app, you now click <b>Apply Changes</b> <img src=
      "/studio/images/buttons/toolbar-apply-changes.svg" alt="" class=
      "inline-icon"> to quickly push incremental changes to your running app using
      Instant Run. The <b>Run</b> <img src="/studio/images/buttons/toolbar-run.png"
        alt="" class="inline-icon"> and <b>Debug</b> <img src=
        "/studio/images/buttons/toolbar-debug.png" alt="" class="inline-icon">
        buttons are always available to you when you want to reliably push your
        changes and force an app restart.
        <ul>
          <li>Instant Run is supported only when deploying your app to a target
          device running Android 5.0 (API level 21) or higher.
          </li>
          <li>Instant Run is no longer disabled for projects that <a href=
          "/studio/projects/add-native-code.html">link to external native
          projects</a> using CMake or ndk-build. However, you can only use Instant
          Run to push incremental changes to your Java code, not your native code.
          </li>
          <li>Cold swaps (which you can force for a running app by clicking
          <strong>Run</strong> <img src="/studio/images/buttons/toolbar-run.png"
          alt="" class="inline-icon">) are now more reliable. Forcing a cold swap
          also fixes the issue where changes to notification and widget UIs were
          not updated on the target device.
          </li>
          <li>Includes optimizations that make app startup much faster. These
          optimizations may affect profiling, so you should temporarily <a href=
          "/studio/run/index.html#disable-ir">disable Instant Run</a> whenever
          profiling your app.
          </li>
        </ul>
      </li>
    
      <li>
        <p>
          The <b>AVD Manager</b> <img src=
          "/studio/images/buttons/toolbar-avd-manager.png" alt="" class=
          "inline-icon"> and <b>SDK Manager</b> <img src=
          "/studio/images/buttons/toolbar-sdk-manager.png" alt="" class=
          "inline-icon"> buttons are now included in the lean Navigation Bar as
          well as the full Toolbar. To use the lean Navigation Bar, click
          <b>View</b> to open the View menu, then ensure that <b>Navigation Bar</b>
          is selected and <b>Toolbar</b> is <em>not</em> selected.
        </p>
        <img src="/studio/images/releases/navigationbar_sdkavd_2x.png" width="757">
      </li>
    
      <li>The "Hybrid" debugger has been renamed to "Dual" debugger.
      </li>
    
      <li>In the <a href="/studio/run/rundebugconfig.html">Run/Debug
      Configurations</a> dialog, under Defaults in the left pane, the following run
      configuration names have changed with no behavior changes:
        <ul>
          <li>The JUnit name has changed to Android JUnit. If you have a project
          that uses JUnit run configurations, those configurations are transformed
          to Android JUnit run configurations the first time you open the project
          with Android Studio. A dialog appears to inform you of the name change.
          </li>
          <li>The Android Tests name has changed to Android Instrumented Tests.
          </li>
        </ul>
      </li>
    
      <li>The <a href="/studio/debug/am-gpu-debugger.html">GPU Debugger</a> has
      been removed from Android Studio as of version 2.3. An open-source,
      standalone version of the tool is now available on <a href=
      "https://github.com/google/gapid" class="external-link">GitHub</a>.
      </li>
    
      <li>The Run/Debug option is no longer available when you right-click a <code>
        *.gradle build</code> script.
      </li>
    
      <li>All templates now use <code>ConstraintLayout</code> as the default
      layout.
      </li>
    
      <li>The Widgets palette in the Layout Editor has been redesigned.
      </li>
    </ul>
    
    <p>
      This release also includes a number of bug fixes. <a href=
      "https://code.google.com/p/android/issues/list?can=1&amp;q=target%3D2.3+status%3DReleased&amp;colspec=ID+Status+Priority+Owner+Summary+Stars+Reporter+Opened&amp;cells=tiles">
      See all bug fixes in 2.3.0.</a>
    </p>
    
    <p class="note">
      <b>Known issue:</b> Some device manufacturers block apps from automatically
      launching after being installed on the device. When deploying your app to a
      physical device using Android Studio 2.3, this restriction breaks the
      intended behavior of Instant Run and causes the following error output:
      <code>Error: Not found; no service started</code>. To avoid this issue,
      either <a href="/studio/run/emulator.html">use the emulator</a> or enable
      automatic launching for your app in your device's settings. The procedure
      for doing this is different for each device, so check the instructions
      provided by the manufacturer. To learn more about this issue, see
      <a href="https://code.google.com/p/android/issues/detail?id=235879">Issue
        #235879</a>.
    </p>
    

    2.2(2016 年 9 月)

    2.2.3(2016 年 12 月)

    <p>
      This is a minor update to Android Studio 2.2. It includes a bug fixes
      focused around gradle, the core IDE, and lint.
    </p>
    
    <p>
      Highlighted build changes:
    </p>
    
    <ul>
      <li>ProGuard version rollback. Due to a <a href=
      "https://sourceforge.net/p/proguard/bugs/625/">correctness issue</a>
      discovered in ProGuard 5.3.1, we have rolled back to ProGuard 5.2.1. We
      have worked with the ProGuard team on getting a fix quickly, and we expect
      to roll forward to ProGuard 5.3.2 in Android Studio 2.3 Canary 3.
      </li>
      <li>Bug fix for <code>aaptOptions</code> <code>IgnoreAssetsPattern</code>
      not working properly (<a href="http://b.android.com/224167">issue
      224167</a>)
      </li>
      <li>Bug fix for Gradle autodownload for Constraint Layout library
        (<a href="https://code.google.com/p/android/issues/detail?id=212128">issue
        212128</a>)
      </li>
      <li>Bug fix for a JDK8/Kotlin compiler + dx issue (<a href=
      "http://b.android.com/227729">issue 227729</a>)
      </li>
    </ul>
    
    <p>
      <a href=
      "https://code.google.com/p/android/issues/list?can=1&amp;q=target%3D2.2.3+status%3AReleased+&amp;colspec=ID+Status+Priority+Owner+Summary+Stars+Reporter+Opened&amp;cells=tiles">
      See all bug fixes in 2.2.3</a>.
    </p>
    

    2.2.2(2016 年 10 月)

    <p>
      This is a minor update to Android Studio 2.2. It includes a number of small
      changes and bug fixes, including:
    </p>
    
    <ul>
      <li>When reporting Instant Run issues through the IDE, the report now also
      includes logcat output for <code>InstantRun</code> events. To help us
      improve Instant Run, please <a href=
      "/studio/run/index.html#submit-feedback">enable extra logging and report
      any issues</a>.
      </li>
      <li>A number of small bug fixes for Gradle.
      </li>
      <li>A fix for problems with generating multiple APKs.
      </li>
    </ul>
    

    2.2.1(2016 年 10 月)

    <p>
      This is a minor update to Android Studio 2.2. It includes several bug fixes
      and a new feature to enable extra logging to help us troubleshoot Instant
      Run issues—to help us improve Instant Run, please <a href=
      "/studio/run/index.html#submit-feedback">enable extra logging and report
      any issues</a>.
    </p>
    

    新規

    • 新しい Layout Editor は、ConstraintLayout をサポートするカスタムビルド ツールを備えています。
    • <li>New <strong><a href=
      "http://tools.android.com/tech-docs/layout-inspector">Layout
      Inspector</a></strong> lets you examine snapshots of your layout hierarchy
      while your app is running on the emulator or a device.
      </li>
      
      <li>New <strong><a href="/studio/write/firebase.html">Assistant</a></strong>
      window to help you integrate Firebase services into your app.
      </li>
      
      <li>New <strong><a href="/studio/debug/apk-analyzer.html">APK
      Analyzer</a></strong> tool so you can inspect the contents of your packaged
      app.
      </li>
      
      <li>New <strong><a href=
      "http://tools.android.com/tech-docs/test-recorder">Espresso Test
      Recorder</a></strong> tool (currently in beta) to help you create UI tests by
      recording your own interactions.
      </li>
      
      <li>New <strong><a href=
      "http://tools.android.com/tech-docs/build-cache">build cache</a></strong>
      (currently experimental) to speed up build performance.
      </li>
      
      <li>New <strong>C/C++ build integration with CMake and ndk-build</strong>.
      Compile and build new or existing native code into libraries packaged into
      your APK, and debug using lldb. For new projects, Android Studio uses CMake
      by default, but also supports ndk-build for existing projects. To learn how
      to include native code in your Android application, read <a href=
      "/studio/projects/add-native-code.html">Add C and C++ Code to Your
      Project</a>. To learn how to debug native code with lldb, see <a href=
      "/studio/debug/index.html#debug-native">Debug Native Code</a>.
      </li>
      
      <li>New <strong><a href="/studio/intro/index.html#sample-code">Samples
      Browser</a></strong> so you can easily look up Google Android sample code
      from within Android Studio to jump start app development.
      </li>
      
      <li>New <strong>Merged Manifest Viewer</strong> to help you diagnose how your
      manifest file merges with your app dependencies across project build
      variants.
      </li>
      
      <li>The <strong>Run</strong> window now contains log messages for the current
      running app. Note that you can configure the <a href=
      "/studio/debug/am-logcat.html">logcat Monitor</a> display, but not the
      <strong>Run</strong> window.
      </li>
      
      <li>New <strong><a href="/studio/run/emulator.html">Android
      Emulator</a></strong> features:
        <ul>
          <li>Added new <strong>Virtual</strong> <strong>Sensors</strong> and
          <strong>Cellular</strong> &gt; <strong>Signal Strength</strong> controls.
          </li>
          <li>Added an <strong>LTE</strong> option to the <strong>Cellular</strong>
          &gt; <strong>Network type</strong> control.
          </li>
          <li>Added simulated vertical swipes for scrolling through vertical menus
          with a mouse wheel.
          </li>
        </ul>
      </li>
      
      <li>New <strong><a href="/studio/run/rundebugconfig.html">Run/Debug
      Configuration</a></strong> features:
        <ul>
          <li>The <strong>Debugger</strong> tab of the Android App and Android
          Tests templates now contain several new options for debugging with LLDB.
          </li>
          <li>The <strong>Profiling</strong> tab of the Android App and Android
          Tests templates now contain a <strong>Capture GPU Commands</strong>
          option for enabling GPU tracing. You can display GPU traces in the GPU
          Debugger (a beta feature).
          </li>
          <li>The Android Tests template now has a <strong>Firebase Test Lab Device
          Matrix</strong> option for the <strong>Deployment Target</strong>.
          </li>
          <li>The Native Application template has been deprecated. If you use this
          template in a project, Android Studio automatically converts it to the
          Android App template.
          </li>
          <li>The Android Application template has been renamed to Android App.
          </li>
        </ul>
      </li>
      
      <li>Improved installation, configuration, performance, and UI features in the
      <strong><a href="/studio/debug/am-gpu-debugger.html">GPU
      Debugger</a></strong> (currently in beta).
      </li>
      
      <li>Android Studio now comes bundled with <strong>OpenJDK 8</strong>.
      Existing projects still use the JDK specified in <strong>File &gt; Project
      Structure &gt; SDK Location</strong>. You can switch to use the new bundled
      JDK by clicking <strong>File &gt; Project Structure &gt; SDK
      Location</strong> and checking the <strong>Use embedded JDK</strong>
      checkbox.
      </li>
      
      <li>Added new <strong>help menus and buttons</strong> in the UI so you can
      more easily find the online documentation.
      </li>
      

    変更

    • 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)。
    • <li>Improved performance for <strong>Gradle sync</strong> within the IDE,
      especially for large projects.
      </li>
      
      <li>Improved build times for both full and incremental builds with new app
      packaging code.
      </li>
      
      <li>Improved <strong>Jack compiler performance and features</strong>,
      including support for annotation processors and dexing in process. To learn
      more, read the <a href=
      "/studio/releases/gradle-plugin.html#revisions">Android plugin for Gradle
      2.2.0 release notes</a>.
      </li>
      
      <li>Removed the <strong>Scale</strong> AVD property from the AVD Manager.
      </li>
      
      <li>The Android Emulator <strong>-port</strong> and <strong>-ports</strong>
      command-line options now report which ports and serial number the emulator
      instance is using, and warn if there are any issues with the values you
      provided.
      </li>
      
      <li>Improved the <strong><a href=
      "/studio/write/create-java-class.html">Create New Class dialog</a></strong>
      and the corresponding file templates. <strong>Note:</strong> If you've
      previously customized the <strong>AnnotationType</strong>,
      <strong>Class</strong>, <strong>Enum</strong>, <strong>Interface</strong>, or
      <strong>Singleton</strong> file templates, you need to modify your templates
      to comply with the new templates or you won’t be able to use the new fields
      in the <strong>Create New Class</strong> dialog.
      </li>
      
      <li>Improved the <strong><a href=
      "/studio/write/vector-asset-studio.html">Vector Asset Studio</a></strong>
      user interface and added support for Adobe Photoshop Document (PSD) files.
      </li>
      
      <li>Improved the <strong><a href=
      "/studio/write/image-asset-studio.html">Image Asset Studio</a></strong> user
      interface.
      </li>
      
      <li>Improved the <strong>Theme Editor</strong>'s Resource Picker.
      </li>
      
      <li>Fixed memory leaks and reduced overall memory usage in Android Studio.
      </li>
      
      <li>Added a <strong>Background</strong> button in the <strong><a href=
      "/studio/intro/update.html#sdk-manager">SDK Manager</a></strong> so you can
      get back to work and install your packages in the background.
      </li>
      
      <li>Improved <strong><a href="/studio/intro/accessibility.html">Accessibility
      features</a></strong>, including support for screen readers and keyboard
      navigation.
      </li>
      
      <li>Enhanced <strong>Code Analysis</strong> includes code quality checks for
      Java 8 language usage and more cross-file analysis.
      </li>
      
      <li>Several toolbar icons have changed.
      </li>
      

    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: #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 向けに最適化されています。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 エディタが、データ バインディング式のコードの補完をサポートするようになりました。

    Android Studio v1.5.1(2015 年 12 月)

    修正と機能強化:

    • Layout Editor のレンダリング エラーに関する問題が修正されました。 Issue: 194612
    • 構成ごとに description マニフェスト属性を変更できる機能が追加されました。 Issue: 194705
    • Vector Asset Studio の Android Studio Darcula 外観テーマのコントラストが改善されました。 Issue: 191819
    • Vector Asset Studio に [Help] ボタンのサポートが追加されました。
    • データ バインディング用の % 演算子のサポートが追加されました。Issue: 194045
    • デバッグ用アプリを起動するとデバッガが誤ったデバイスに接続される問題が修正されました。Issue: 195167
    • 特定のシナリオでアプリを実行しようとしたときに発生する可能性があった null ポインタ例外が修正されました。

    Android Studio v1.5.0(2015 年 11 月)

    修正と機能強化:

    • Android Monitor に、新しい Memory Monitor 分析機能が追加されました。このモニターから取得した HPROF ファイルを表示すると、表示内容が明確になり、メモリリークなどの問題を迅速に特定できるようになりました。このモニターを使用するには、メイン ウィンドウの下部にある [Android Monitor] をクリックします。[Android Monitor] で、[Memory] タブをクリックします。モニターの実行中に、[Dump Java Heap] アイコンをクリックして、メイン ウィンドウの [Captures] をクリックし、表示するファイルをダブルクリックします。右側にある [Capture Analysis] をクリックします(Android Device Monitor と Android Monitor を同時に実行することはできません)。
    • 新しいディープリンクとアプリリンクのサポートが追加されました。コードエディタにより、AndroidManifest.xml ファイル内にディープリンク用のインテント フィルタを自動的に作成できます。また、Java ファイルのアクティビティ内で、App Indexing API との統合に役立つコードを生成できます。ディープリンク テスト機能は、指定したディープリンクでアプリを起動できるかどうかを検証するのに役立ちます。ディープリンク起動オプションは、[Run/Debug Configurations] ダイアログの [General] タブで指定できます。また、Android Monitor の [logcat] 表示を使用して、アクティビティ内の App Indexing API 呼び出しをテストすることもできます。Android lint ツールには、ディープリンクと App Indexing API に関連する特定の問題に対する警告が追加されています。
    • コードエディタでカスタムビューをコード補完する際に短縮名を使用する機能が追加されました。
    • 下位互換性を維持するため、Vector Asset Studio に多数の VectorDrawable 要素のサポートが追加されました。Vector Asset Studio は、それらの要素を使用してベクター型ドローアブルを PNG ラスター画像に変換し、Android 4.4(API レベル 20)以下で使用できるようにします。
    • Android TV と Android Auto 用の新しい lint チェックが追加されました。Android Studio で、いくつかのクイック フィックスとともに実用的なフィードバックをすぐに入手できます。たとえば、Android TV では、アクセス許可、サポート対象外のハードウェア、uses-feature 要素、バナーの欠落に関する問題がレポートされ、クイック フィックスが提供されます。Android Auto では、AndroidManifest.xml ファイルから参照される記述子ファイル内の使用法が適切かどうかが検証され、MediaBrowserService クラスのインテント フィルタがない場合はレポートされ、特定の音声操作に関する問題が特定されます。
    • 非セキュアなブロードキャスト レシーバ、SSLCertificateSocketFactory および HostnameVerifier クラスの使用、File.setReadable() および File.setWritable() 呼び出しに対する新しい lintチェックが追加されました。また、特に構成によって異なるリソースについては、無効なマニフェスト リソース検索も検出されます。
    • 安定性に関するいくつかの問題が修正されました。

    Android Studio v1.4.1(2015 年 10 月)

    修正と機能強化:

    • IDE の再起動時に過度の Gradle 同期を発生させる可能性があった、Gradle モデルのキャッシュ保存に関する問題が修正されました。
    • ネイティブ デバッグのデッドロックに関する問題が修正されました。
    • Subversion 1.9 バージョン管理システムのユーザーがブロックされる問題が修正されました。
    • [Device Chooser] ダイアログに関する問題が修正されました。許可されていないデバイスを接続した後、エミュレータを選択できなくなっていました。Issue: 189658
    • ベース言語 / 地域ではない地域の地域修飾子と翻訳を持つ言語 / 地域の場合に、不適切な翻訳エラーレポートが生じる問題が修正されました。Issue: 188577
    • Theme Editor を Layout Editor と連携する際に Theme Editor で生じるデッドロックに関する問題が修正されました。Issue: 188070
    • Theme Editor の再読み込みと編集の競合が修正されました。この競合により、属性が正しく更新されていませんでした。 Issue: 187726
    • Theme Editor のパフォーマンスが向上しました。
    • マニフェストで android:required 属性が無視される問題が修正されました。 Issue: 187665

    Android Studio v1.4.0(2015 年 9 月)

    修正と機能強化:

    • マテリアル アイコンや SVG ファイルなどのベクター グラフィックをインポートするため、Vector Asset Studio ツールが追加されました。このツールを使用するには、プロジェクト ウィンドウの [Android] ビューで、[res] フォルダを右クリックし、[New] > [Vector Asset] を選択します。
    • 新しい Android Monitor 機能として、GPU Monitor と Network Monitor が追加されました。各モニターを使用するには、メイン ウィンドウの下部にある [Android Monitor] をクリックします。Android Device Monitor と Android Monitor を同時に実行することはできません。
    • 新しい Theme Editor の早期プレビュー版が追加されました。この機能を使用するには、[Tools] > [Android] > [Theme Editor] を選択します。
    • Design サポート ライブラリの Android テンプレートが更新されました。テンプレートには、マテリアル デザイン仕様のサポートと、下位互換性を維持するための appcompat サポート ライブラリが追加されています。

    Android Studio v1.3.2(2015 年 8 月)

    修正と機能強化:

    • Android 6.0(API レベル 23)のサポートが追加されました。これには、新しいアイコンや、新しい画面密度のデバイスを作成するための AVD Manager サポートが含まれています。
    • 更新チェック中に発生していた例外が修正されました。 Issue: 183068
    • 未解決のビュー座標によって Layout Editor がクラッシュする問題が修正されました。Issue: 178690
    • 無効なリソースタイプの警告に関する問題が修正されました。 Issue: 182433
    • リソースを誤ってプライベート リソースとしてフラグ付けする lint チェックが修正されました。 Issue: 183120

    Android Studio v1.3.1(2015 年 8 月)

    修正と機能強化:

    • Windows 上で Android Wear Android 仮想デバイス(AVD)を作成するためのサポートが修正されました。
    • 入力したプロジェクト名を使用するように [Project] ウィザードが更新されました。
    • Android SDK を読み取り専用ディレクトリ内に保存するためのサポートが追加されました。
    • Android Plugin for Gradle がバージョン 1.3.0 に更新されました。
    • Android Debug Bridge(adb)Unix シェルからデバッグ セッションを起動する際の問題が修正されました。
    • 正しいパッケージ名を示すように Java パッケージ名前変更メッセージが修正されました。

    Android Studio v1.3.0(2015 年 7 月)

    修正と機能強化:

    • Android Studio 内から、アプリ内の開発者向けサービスGoogle AdMobGoogle アナリティクスなど)を有効にするオプションが追加されました。
    • @RequiresPermission@CheckResults@MainThread などのアノテーションが追加されました。
    • Memory Monitor から Java ヒープダンプを生成してスレッド割り当てを分析する機能が追加されました。Android Studio 内から、Android 固有の HPROF バイナリ形式のファイルを標準の HPROF 形式に変換することもできます。
    • Android Studio に SDK Manager が統合されました。パッケージとツールへのアクセスが簡単になり、アップデート情報が通知されます。

      注: スタンドアロン SDK Manager は引き続きコマンドラインから使用できますが、スタンドアロン SDK インストールだけで使用することをおすすめします。

    • エミュレータ コンソールに finger コマンドが追加され、指紋認証のシミュレーションが可能になりました。
    • <public> リソース宣言が追加され、ライブラリ リソースをパブリック リソースおよびプライベート リソースとして指定することが可能になりました。

      注: Android Plugin for Gradle バージョン 1.3 以上が必要です。

    • アプリロジックをレイアウト要素にバインドする宣言型レイアウトを作成するためのデータ バインディング サポートが追加されました。
    • Android Studio 内でテスト APK をビルドするための個別テスト APK モジュールのサポートが追加されました。
    • AVD Manager が更新されました。HAXM 最適化が組み込まれ、通知機能が改善されています。
    • QEMU 2.1 に対する 64 ビット ARM および MIPS エミュレータのサポートが追加されました。
    • Parcelable 実装の自動生成などのクイック フィックスが追加され、lint 警告の解決が容易になりました。
    • コード スニペットを簡単に挿入できるライブ テンプレート サポートが追加されました。

    Android Studio v1.2.2(2015 年 6 月)

    修正と機能強化:

    • ビルドの完了を阻害していたビルド問題が修正されました。

    Android Studio v1.2.1(2015 年 5 月)

    修正と機能強化:

    • パフォーマンスと機能に関する軽微な問題が修正されました。

    Android Studio v1.2.0(2015 年 4 月)

    修正と機能強化:

    • Android ランタイム ウィンドウが更新されました。Memory Monitor ツールが組み込まれ、CPU パフォーマンス モニタリング用のタブが追加されています。
    • 左マージン内に [Captures] タブが追加されました。CPU メソッドのトラッキングやメモリヒープ スナップショットなど、キャプチャしたメモリ / CPU パフォーマンス データファイルが表示されます。
    • アノテーションのサポートが拡張されました。追加のメタデータ アノテーションと null 可能性推定を利用できます。
    • Translations Editor が強化されました。3 文字の言語 / 地域コードを使用する Best Current Practice(BCP)47 のサポートが追加されています。
    • IntelliJ 14 および 14.1 の機能が統合されました。コード分析とパフォーマンスが改善されています。
      • デバッグ機能が強化されました。変数と参照元オブジェクトのインライン値が表示され、ラムダ式と演算子式のインライン評価が実施されます。
      • タブサイズとインデント サイズのコードスタイル検出機能が追加されました。
      • プロジェクト ファイルなしでコードテストとプロトタイピングを実施するためのスクラッチ ファイルが追加されました。
      • HTML ファイルと XML ファイルに開始タグと終了タグを同時に挿入する機能が追加されました。
      • ビルトイン Java クラス逆コンパイラが追加されました。ソースコードが利用できないライブラリの内容を確認できます。

      新機能と機能強化の詳細については、IntelliJ の新機能をご覧ください。

    • [Scratches]、[Project Files]、[Problems]、[Production]、[Tests] 用の [Project] ビューが追加され、プロジェクトの管理機能とアクセス機能が強化されました。
    • [File] > [Settings] のメニューとダイアログが強化され、設定のアクセス機能と管理機能が改善されました。
    • Windows と Linux 向けの高密度ディスプレイのサポートが追加されました。
    • res/drawable-280dpi/ フォルダ内の 280 dpi リソースに対するサポートが追加されました。

    Android Studio v1.1.0(2015 年 2 月)

    修正と機能強化:

    • Android Wear ウォッチ テンプレートのサポートが追加されました。
    • プロジェクトとモジュールの新規作成方法が変更されました。密度別ランチャー アイコン用の res/mipmap フォルダが追加されています。これらの res/mipmap フォルダは、ランチャー アイコン用の res/drawable フォルダの後継です。
    • ランチャー アイコンが更新されました。外観にマテリアル デザインが採用され、xxxhdpi ランチャー アイコンが追加されています。
    • 地域と言語の組み合わせ、ランチャー アイコン、リソース名、その他一般的なコード問題に対する lint チェックが追加および強化されました。
    • Best Current Practice(BCP)言語タグ 47 のサポートが追加されました。

    Android Studio v1.0.1(2014 年 12 月)

    修正と機能強化:

    • AVD Manager と device.xml ファイルのロックに関する問題が修正されました。
    • Windows システムのエミュレータ ログが修正されました。
    • Windows システムの異なるドライブにインストールされた Android Studio と Android SDK を使用して AVD を作成する際の問題が修正されました。
    • 新規ダウンロードのデフォルト アップデート チャネルを [Stable] に設定しました。Android Studio バージョン 1.0.0 をインストール済みで、安定した実稼働対応バージョンのアップデートを希望する場合は、[File] > [Settings] > [Updates] を使用して、アップデート チャネルを [Stable] に変更してください。

    Android Studio v1.0(2014 年 12 月)

    Android Studio の初回リリース。

    Android Studio v0.8.14(2014 年 10 月)

    変更内容の完全なリストについては、tools.android.com をご覧ください。

    Android Studio v0.8.6(2014 年 8 月)

    変更内容の完全なリストについては、tools.android.com をご覧ください。

    Android Studio v0.8.0(2014 年 6 月)

    Android Wear プロジェクトのサポートが追加されました。

    変更内容の完全なリストについては、tools.android.com をご覧ください。

    Android Studio v0.5.2(2014 年 5 月)

    • 変更内容の完全なリストについては、tools.android.com をご覧ください。

    Android Studio v0.4.6(2014 年 3 月)

    • 変更内容の完全なリストについては、tools.android.com をご覧ください。

    Android Studio v0.4.2(2014 年 1 月)

    • 変更内容の完全なリストについては、tools.android.com をご覧ください。

    Android Studio v0.3.2(2013 年 10 月)

    • 変更内容の完全なリストについては、tools.android.com をご覧ください。

    Android Studio v0.2.x(2013 年 7 月)

    • 最新の IntelliJ コードベースの変更にマージされました。Linux のフォントサイズの調整とフォント レンダリングなどに関する、Studio ユーザーから報告された問題が修正されています。
    • Android Gradle プラグインが 0.5.0 にアップデートされました。

      注意: この新しいバージョンには下位互換性がありません。 古いバージョンのプラグインを使用しているプロジェクトを開くと、「Gradle <プロジェクト名> project refresh failed.」というエラーが表示されます。

      アップデート版の Gradle プラグインでは、以下の点が変更されています。

      • IDE モデルが修正され、DSL でカスタマイズした場合でも出力ファイルを含むようになりました。また、DSL が修正され、variant.packageApplication or variant.zipAlign を使用する必要をなくすために、バリアント オブジェクトで出力ファイルを取得 / 設定するようになりました。
      • 依存関係の解決が修正されました。デフォルト構成、ビルドタイプ、フレーバーを個別に解決するのではなく、それらの組み合わせをまとめて解決できます。
      • ライブラリ プロジェクトのテスト用の依存関係が修正されました。ライブラリ自体のすべての依存関係が適切に組み込まれるようになりました。
      • 2 つの依存関係が同じリーフ名を持つケースが修正されました。
      • フレーバーに Proguard ルールファイルを適用できない問題が修正されました。

      Gradle プラグインのすべてのリリースノートは、http://tools.android.com/tech-docs/new-build-system で入手できます。

    • aapt の Gradle エラーが、build/ フォルダ内のマージ出力ファイルを指し示さずに、実際のソースの場所を指し示すようになりました。
    • 並列ビルド - Gradle の並列ビルドを使用できるようになりました。ただし、並列ビルドはまだ開発段階にあります(Gradle のドキュメントを参照)。この機能はデフォルトでオフになっています。有効にするには、[Preferences] > [Compiler] に移動して、[Compile independent modules in parallel] チェックボックスをオンにします。
    • レイアウトのレンダリングやエディタ内でのリソースの折りたたみなどに使用する新しいリソース リポジトリについて、次のような改善の取り組みが継続して行われています。
      • .aar ライブラリ依存関係の基本的なサポート(たとえば、ソースのローカルコピーのないライブラリの使用)。ソースエディタ内のリソース XML の検証とナビゲーションは、まだ動作しません。
      • リソース参照内のサイクル検出。
      • キャレットの下の文字列のすべての翻訳を表示できるクイック ドキュメント(F1)は、さまざまな Gradle フレーバーおよびビルドタイプのリソース オーバーレイや、ライブラリを表示できるようになりました。それぞれリソース オーバーレイの逆順でリスト表示され、マスキングされている文字列のバージョンには取り消し線が引かれます。
      • モジュール依存関係のセットが変更されたときに、マージリソースを更新する処理が修正されました。
      • 文字実体参照宣言と XML エスケープおよび Unicode エスケープを適切に処理できるように、XML レンダリングが修正されました。
    • [Layout Preview] ウィンドウや [Layout Editor] ウィンドウのスクリーンショット保存がサポートされるようになりました。
    • テンプレートのバグが修正されました。
    • lint のバグが修正されました。
    • クラッシュ レポートに基づいて、さまざまな点が修正されました。クラッシュ レポートを提出していただき、まことにありがとうございます。

    Android Studio v0.1.x(2013 年 5 月)

    • Windows のインストールに関する一般的な問題を含め、さまざまなバグが修正されました。

    Android Gradle プラグインの古いリリース

    3.6.0(2020 年 2 月)

    このバージョンの Android プラグインには、次のものが必要です。

    3.6.4(2020 年 7 月)

    このマイナー アップデートでは、Android 11 でのパッケージの公開設定に関する新しいデフォルト設定と各種機能との互換性が確保されています。

    詳細については、4.0.1 リリースノートをご覧ください。

    新機能

    このバージョンの Android Gradle プラグインには、次の新機能が含まれています。

    ビュー バインディング

    ビュー バインディングにより、コード内のビューを参照する際にコンパイル時の安全性を実現します。 findViewById() は、自動生成されたバインディング クラス参照に置き換えることができるようになりました。ビュー バインディングを使用するには、各モジュールの build.gradle ファイルに次の行を含めます。

          android {
              viewBinding.enabled = true
          }
          
          android {
              viewBinding.enabled = true
          }
          

    詳細については、ビュー バインディングのドキュメントをご覧ください。

    Maven Publish プラグインのサポート

    Android Gradle プラグインには、Maven Publish Gradle プラグインのサポートが含まれています。これにより、ビルド アーティファクトを Apache Maven リポジトリに公開できます。Android Gradle プラグインは、アプリまたはライブラリ モジュール内のビルド バリアント アーティファクトごとにコンポーネントを作成します。これを使用して、Maven リポジトリへのパブリケーションをカスタマイズできます。

    詳細については、Maven Publish プラグインを使用する方法についてのページをご覧ください。

    新しいデフォルトのパッケージ化ツール

    アプリのデバッグ バージョンをビルドする場合、プラグインは zipflinger という新しいパッケージ化ツールを使用して APK をビルドします。この新しいツールを使用すると、ビルド速度が向上します。この新しいパッケージ化ツールが期待どおりに動作しない場合は、バグを報告してください。以前のパッケージ化ツールを使用するには、次の行を gradle.properties ファイルに含めます。

            android.useNewApkCreator=false
          
    ネイティブ ビルド アトリビューション

    プロジェクトの各 C / C++ ファイルを Clang でビルドしてリンクするのにかかる時間を測定できるようになりました。Gradle はこれらのコンパイラ イベントのタイムスタンプを含む Chrome トレースを出力できるため、プロジェクトをビルドするのに必要な時間を詳細に把握できます。このビルド アトリビューション ファイルを出力する手順は次のとおりです。

    1. Gradle ビルドを実行するときに、フラグ -Pandroid.enableProfileJson=true を追加します。次に例を示します。

      gradlew assembleDebug -Pandroid.enableProfileJson=true

    2. Chrome ブラウザを開き、検索バーに「chrome://tracing」と入力します。

    3. [Load] ボタンをクリックし、<var>project-root</var>/build/android-profile に移動して、profile-<var>timestamp</var>.json.gz という名前のファイルを探します。

    ネイティブ ビルド アトリビューション データがビューアの上部に表示されます。

    Chrome のネイティブ ビルド アトリビューション トレース

    動作の変更

    このバージョンのプラグインを使用する場合、以下のように動作が変更されます。

    非圧縮ネイティブ ライブラリのパッケージ化(デフォルト)

    アプリをビルドするときに、プラグインによってデフォルトで extractNativeLibs"false" に設定されるようになりました。つまり、ネイティブ ライブラリのページ アライメントとパッケージ化が圧縮なしで行われます。その結果、アップロード サイズは大きくなりますが、ユーザーには次のようなメリットがあります。

    • プラットフォームはインストール済みの APK からネイティブ ライブラリに直接アクセスできるため、アプリのインストール サイズが小さくなります。しかも、ライブラリのコピーを作成する必要がありません。
    • APK または Android App Bundle に非圧縮ネイティブ ライブラリを含めると、通常は Play ストアの圧縮効率が向上するため、ダウンロード サイズが小さくなります。

    Android Gradle プラグインで圧縮ネイティブ ライブラリをパッケージ化する場合は、アプリのマニフェストに次の行を含めます。

            <application
              android:extractNativeLibs="true"
              ... >
            </application>
            
          

    注: extractNativeLibs マニフェスト属性は、useLegacyPackaging DSL オプションに置き換えられました。詳細については、リリースノートの DSL を使用して圧縮ネイティブ ライブラリをパッケージ化するをご覧ください。

    デフォルトの NDK バージョン

    複数のバージョンの NDK をダウンロードした場合、Android Gradle プラグインはデフォルトのバージョンを選択するようになりました。ソースコード ファイルのコンパイルでは、このデフォルトのバージョンが使用されます。プラグインは以前は、最近ダウンロードされたバージョンの NDK を選択していました。プラグインが選択したデフォルトのバージョンをオーバーライドするには、モジュールの build.gradle ファイル内の android.ndkVersion プロパティを使用します。

    R クラス生成の簡素化

    Android Gradle プラグインは、プロジェクトのライブラリ モジュールごとに R クラスを 1 つだけ生成し、その R クラスを他のモジュール依存関係と共有することで、コンパイル クラスパスを簡素化します。この最適化によってビルドが高速化されますが、以下の点に留意する必要があります。

    • コンパイラは R クラスを上流のモジュール依存関係と共有するため、プロジェクト内の各モジュールで一意のパッケージ名を使用することが重要です。
    • 他のプロジェクト依存関係からライブラリの R クラスを参照できるかどうかは、ライブラリを依存関係として含めるために使用するコンフィグレーションによって決まります。たとえば、ライブラリ A に「api」依存関係としてライブラリ B が含まれている場合、ライブラリ A と、ライブラリ A に依存する他のライブラリは、ライブラリ B の R クラスを参照できます。ただし、他のライブラリはライブラリ B の R クラスを参照できない場合があります。それは、ライブラリ A が implementation 依存関係コンフィグレーションを使用している場合です。詳細については、依存関係コンフィグレーションをご覧ください。
    デフォルトの設定にないリソースの削除

    ライブラリ モジュールに関して、デフォルトのリソースセットに含まれていない言語のリソースを含める場合(hello_world/values-es/strings.xml に文字列リソースとして含まれているが、そのリソースが /values/strings.xml で定義されていない場合など)、Android Gradle プラグインはプロジェクトのコンパイル時にそのリソースを含めなくなりました。この動作変更により、Resource Not Found ランタイム例外の発生が減少し、ビルド速度が向上します。

    アノテーションに適用される CLASS 保持ポリシーの考慮(D8)

    D8 において、アプリのコンパイル中にアノテーションが CLASS 保持ポリシーを適用するタイミングが考慮されるようになりました。また、これらのアノテーションは、実行時には使用できなくなりました。この動作は、アプリのターゲット SDK を API レベル 23 に設定するときにも行われます。そのため以前は、Android Gradle プラグインと D8 の古いバージョンを使用してアプリをコンパイルする場合、実行時にこれらのアノテーションにアクセスすることができました。

    その他の動作の変更
    • aaptOptions.noCompress は、すべてのプラットフォーム(APK とバンドルの両方)で大文字と小文字が区別されなくなり、大文字を使用するパスが優先されなくなりました。
    • データ バインディングがデフォルトでインクリメンタルになりました。詳細については、問題 #110061530 をご覧ください。

    • すべての単体テスト(Roboelectric 単体テストを含む)がキャッシュ可能になりました。詳細については、問題 #115873047 をご覧ください。

    バグの修正

    このバージョンの Android Gradle プラグインには、次のバグ修正が含まれています。

    • Robolectric 単体テストが、データ バインディングを使用するライブラリ モジュールでサポートされるようになりました。詳細については、問題 #126775542 をご覧ください。
    • Gradle の並列実行モードが有効になっている場合に、複数のモジュールで connectedAndroidTest タスクを実行できるようになりました。

    既知の問題

    このセクションでは、Android Gradle プラグイン 3.6.0 に存在する既知の問題について説明します。

    Android Lint タスクのパフォーマンスの低下

    Android Lint は、解析インフラストラクチャでの回帰が原因で、一部のプロジェクトにおいて完了までに非常に時間がかかることがあります。そのため、特定のコード構造では、ラムダの推定型の計算速度が低下します。

    この問題は IDEA のバグとして報告されており、Android Gradle プラグイン 4.0 で修正される予定です。

    マニフェスト クラスがない {:#agp-missing-manifest}

    アプリのマニフェストでカスタム権限を定義している場合、Android Gradle プラグインは通常、カスタム権限を文字列定数として含む Manifest.java クラスを生成します。Android Gradle プラグインはこのクラスをアプリにパッケージ化するため、ランタイムにこれらの権限を簡単に参照できます。

    Android Gradle プラグイン 3.6.0 では、マニフェスト クラスの生成は行われません。 このバージョンのプラグインでアプリをビルドし、そのアプリでマニフェスト クラスを参照すると、ClassNotFoundException 例外が発生することがあります。この問題を解決するには、以下のいずれかを行います。

    • カスタム権限を完全修飾名で参照します。 例: "com.example.myapp.permission.DEADLY_ACTIVITY"

    • 次のように独自の定数を定義します。

                  public final class CustomPermissions {
                    public static final class permission {
                      public static final String DEADLY_ACTIVITY="com.example.myapp.permission.DEADLY_ACTIVITY";
                    }
                  }
                  
                

    3.5.0(2019 年 8 月)

    Android Gradle プラグイン 3.5.0 と Android Studio 3.5 が Project Marble の主なリリースとなります。今回のリリースでは Android デベロッパー ツールの 3 つの主な改善点であるシステムの健全性、機能の改良、バグの修正に重点を置いています。特に、プロジェクト ビルド速度の向上がこのアップデートの主な焦点でした。

    Project Marble の上記の情報とその他の最新情報については、Android デベロッパー ブログの記事または下記のセクションをご覧ください。

    このバージョンの Android プラグインには、次のものが必要です。

    3.5.4(2020 年 7 月)

    このマイナー アップデートでは、Android 11 でのパッケージの公開設定に関する新しいデフォルト設定と各種機能との互換性が確保されています。

    詳細については、4.0.1 リリースノートをご覧ください。

    3.5.3(2019 年 12 月)

    Android Studio 3.5.3 をサポートするマイナー アップデートです。さまざまなバグの修正とパフォーマンスの改善が含まれています。

    3.5.2(2019 年 11 月)

    Android Studio 3.5.2 をサポートするマイナー アップデートです。さまざまなバグの修正とパフォーマンスの改善が含まれています。主なバグ修正のリストについては、リリース アップデート情報ブログの関連記事をご覧ください。

    3.5.1(2019 年 10 月)

    Android Studio 3.5.1 をサポートするマイナー アップデートです。さまざまなバグの修正とパフォーマンスの改善が含まれています。主なバグ修正のリストについては、リリース アップデート情報ブログの関連記事をご覧ください。

    増分アノテーション処理

    gradle.properties ファイルで android.databinding.incremental=true を設定すると、Data Binding アノテーション プロセッサは増分アノテーション処理をサポートします。この最適化により、増分ビルドのパフォーマンスが向上しています。最適化されたアノテーション プロセッサの完全なリストについては、増分アノテーション プロセッサの表をご覧ください。

    また、KAPT 1.3.30 以降でも、増分アノテーション プロセッサがサポートされます。これは、gradle.properties ファイルに kapt.incremental.apt=true を追加することで有効にできます。

    キャッシュ可能な単体テスト

    includeAndroidResourcestrue に設定して単体テストで Android リソース、アセット、マニフェストを使用できるようにすると、Android Gradle プラグインは、絶対パスを含むテスト構成ファイルを生成し、キャッシュの再配置を中断します。相対パスを使用してテスト構成を生成するように指定すると、AndroidUnitTest タスクは完全にキャッシュ可能になります。そのためには、gradle.properties ファイルに次の行を追加します。

          android.testConfig.useRelativePath = true
        

    既知の問題

    • Kotlin Gradle プラグイン 1.3.31 以前を使用すると、プロジェクトのビルドや同期の際に次の警告が表示されることがあります。

                WARNING: API 'variant.getPackageLibrary()' is obsolete and has been replaced
                        with 'variant.getPackageLibraryProvider()'.
                
              

      この問題を解決するには、プラグインをバージョン 1.3.40 以降にアップグレードしてください。

    3.4.0(2019 年 4 月)

    このバージョンの Android プラグインには、次のものが必要です。

    • Gradle 5.1.1 以降。詳細については、Gradle のアップデートに関するセクションをご覧ください。

      注: Gradle 5.0 以降を使用すると、デフォルトの Gradle デーモンのメモリヒープ サイズが 1 GB から 512 MB に減少します。これにより、ビルドのパフォーマンスが低下する可能性があります。このデフォルト設定をオーバーライドするには、プロジェクトの gradle.properties ファイルで Gradle デーモンのヒープサイズを指定します。

    • SDK Build Tools 28.0.3 以降。

    3.4.3(2020 年 7 月)

    このマイナー アップデートでは、Android 11 でのパッケージの公開設定に関する新しいデフォルト設定と各種機能との互換性が確保されています。

    詳細については、4.0.1 リリースノートをご覧ください。

    3.4.2(2019 年 7 月)

    Android Studio 3.4.2 をサポートするマイナー アップデートです。さまざまなバグの修正とパフォーマンスの改善が含まれています。 主なバグ修正のリストについては、リリース アップデート情報ブログの関連記事をご覧ください。

    3.4.1(2019 年 5 月)

    Android Studio 3.4.1 をサポートするマイナー アップデートです。さまざまなバグの修正とパフォーマンスの改善が含まれています。 主なバグ修正のリストについては、リリース アップデート情報ブログの関連記事をご覧ください。

    新機能

    • 新しい lint チェック依存関係コンフィグレーション: lintChecks の動作が変更され、新しい依存関係コンフィグレーション lintPublish が導入されました。これにより、Android ライブラリにパッケージ化される lint チェックを細かく制御できるようになりました。

      • lintChecks: プロジェクトをローカルでビルドするときだけ実行する、lint チェックに使用する既存の構成。以前に lintChecks 依存関係コンフィグレーションを使用して公開 AAR に lint チェックを含めていた場合は、これらの依存関係を移行して、下記の新しい lintPublish コンフィグレーションを使用する必要があります。
      • lintPublish: 下記のように、公開 AAR に含める lint チェックに使用する、ライブラリ プロジェクトの新しいコンフィグレーション。つまりライブラリを使用するプロジェクトでも、これらの lint チェックを適用します。

      次のコードサンプルでは、ローカルの Android ライブラリ プロジェクトで両方の依存関係コンフィグレーションを使用しています。

      dependencies {
        // Executes lint checks from the ':lint' project at build time.
        lintChecks project(':lint')
        // Packages lint checks from the ':lintpublish' in the published AAR.
        lintPublish project(':lintpublish')
      }
              
      dependencies {
        // Executes lint checks from the ':lint' project at build time.
        lintChecks(project(":lint"))
        // Packages lint checks from the ':lintpublish' in the published AAR.
        lintPublish(project(":lintpublish"))
          }
              
      • 一般に、パッケージ化と署名のタスクで、全体的なビルド速度が改善されています。これらのタスクに関連してパフォーマンスの低下が見られた場合は、バグを報告してください。

    動作の変更

    • Android Instant Apps Feature プラグイン非推奨の警告: インスタント アプリのビルドに依然として com.android.feature プラグインを使用している場合、Android Gradle プラグイン 3.4.0 では、非推奨の警告がスローされます。今後のバージョンのプラグインでもインスタント アプリをビルドできるようにするには、動的機能プラグインを使用するようにインスタント アプリを移行します。またこれにより、インストール済みアプリとインスタント アプリの両方のエクスペリエンスを、単一の Android App Bundle から公開できます。

    • R8 をデフォルトで有効化: R8 は、desugar、圧縮、難読化、最適化、dex 変換をすべて 1 つのステップに統合し、ビルド パフォーマンスを大幅に改善します。R8 は Android Gradle プラグイン 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
          
        

    注: 特定のビルドタイプでは、アプリ モジュールの build.gradle ファイルで useProguardfalse に設定している場合、プロジェクトの gradle.properties ファイルで R8 を無効にしているかどうかにかかわらず、Android Gradle プラグインは R8 を使用してそのビルドタイプに対応するアプリのコードを圧縮します。

    • ndkCompile は非推奨: ndkBuild を使用してネイティブ ライブラリをコンパイルしようとすると、ビルドエラーが発生するようになりました。代わりに CMake か ndk-build を使用して、プロジェクトに C / C++ コードを追加する必要があります。

    既知の問題

    • 一意のパッケージ名を正しく使用することは現在必須ではありませんが、プラグインの今後のバージョンでは、より厳密になります。Android Gradle プラグインのバージョン 3.4.0 では、次の行を gradle.properties ファイルに追加することで、使用可能なパッケージ名をプロジェクトで宣言しているかどうかの確認をオプトインできます。

                android.uniquePackageNames = true
                
              

      Android Gradle プラグインを使用してパッケージ名を設定する方法について詳しくは、アプリケーション ID の設定をご覧ください。

    3.3.0(2019 年 1 月)

    このバージョンの Android プラグインには、次のものが必要です。

    3.3.3(2020 年 7 月)

    このマイナー アップデートでは、Android 11 でのパッケージの公開設定に関する新しいデフォルト設定と各種機能との互換性が確保されています。

    詳細については、4.0.1 リリースノートをご覧ください。

    3.3.2(2019 年 3 月)

    Android Studio 3.3.2 をサポートするマイナー アップデートです。さまざまなバグの修正とパフォーマンスの改善が含まれています。 主なバグ修正のリストについては、リリース アップデート情報ブログの関連記事をご覧ください。

    3.3.1(2019 年 2 月)

    Android Studio 3.3.1 をサポートするマイナー アップデートです。さまざまなバグの修正とパフォーマンスの改善が含まれています。

    新機能

    • クラスパス同期の改善: ランタイム クラスパスやコンパイル クラスパスの依存関係を解決する際、Android Gradle プラグインは、複数のクラスパスにまたがって現れる依存関係に関し、それ以降の特定のバージョン競合を修正しようとします。

      たとえば、ランタイム クラスパスにライブラリ A バージョン 2.0 が含まれ、コンパイル クラスパスにライブラリ A バージョン 1.0 が含まれている場合、プラグインはコンパイル クラスパスへの依存関係を自動的にライブラリ A バージョン 2.0 にアップデートして、エラーを回避します。

      ただし、ランタイム クラスパスにライブラリ A バージョン 1.0 が含まれ、コンパイル クラスパスにライブラリ A バージョン 2.0 が含まれている場合、プラグインはコンパイル クラスパスの依存関係をライブラリ A バージョン 1.0 にダウングレードしないため、エラーが発生します。詳細については、クラスパス間の競合の修正をご覧ください。

    • アノテーション プロセッサ使用時の増分 Java コンパイルの改善: このアップデートにより、アノテーション プロセッサ使用時の増分 Java コンパイルのサポートが改善され、ビルド時間が短縮されます。

      注: この機能は Gradle 4.10.1 以降で利用できますが、Gradle 5.1 は除きます(Gradle の問題 8194 のため)。

      • Kapt を使用するプロジェクト(ほとんどの Kotlin のみのプロジェクトと Kotlin-Java ハイブリッド プロジェクト): データ バインディングや retro-lambda プラグインを使用する場合でも、増分 Java コンパイルが有効になります。Kapt タスクによるアノテーション処理は、まだ増分ではありません。

      • Kapt を使用しないプロジェクト(Java のみのプロジェクト): 使用するすべてのアノテーション プロセッサが増分アノテーション処理をサポートしている場合、増分 Java コンパイルはデフォルトで有効になります。増分アノテーション プロセッサの採用状況を確認するには、Gradle の問題 5277 をご覧ください。

        ただし、1 つ以上のアノテーション プロセッサが増分ビルドをサポートしていない場合、増分 Java コンパイルは有効になりません。代わりに、gradle.properties ファイルで次のフラグを指定できます。

        android.enableSeparateAnnotationProcessing=true
                    

        このフラグを指定すると、Android Gradle プラグインは別のタスクでアノテーション プロセッサを実行し、Java コンパイル タスクを段階的に実行できます。

    • 古い API を使用する場合のデバッグ情報の改善: プラグインは、サポートされなくなった API の使用を検出したとき、その API が使用されている場所の特定に役立つ、より詳細な情報を提供できるようになりました。 追加情報を表示するには、プロジェクトの gradle.properties ファイルに以下を含めます。

                android.debug.obsoleteApi=true
              

      フラグを有効にするには、-Pandroid.debug.obsoleteApi=true をコマンドラインから渡します。

    • コマンドラインから、機能モジュールでのインストゥルメンテーション テストを実行できます。

    動作の変更

    • 遅延タスク設定: プラグインは Gradle の新しいタスク作成 API を使用して、現在のビルド(または実行タスクグラフにないタスク)の完了に必要でないタスクの初期化と設定を回避するようになりました。たとえば、「release」や「debug」など複数のビルド バリアントがあり、アプリの「debug」バージョンをビルドしている場合、プラグインはアプリの「release」バージョンのタスクの初期化と設定を回避します。

      variant.getJavaCompile() など、Variants API の特定の古いメソッドを呼び出すと、タスクの設定が必須になることがあります。ビルドを遅延タスク設定用に最適化するには、代わりに variant.getJavaCompileProvider() などの TaskProvider オブジェクトを返す新しいメソッドを呼び出します。

      カスタムビルド タスクを実行する場合は、Gradle の新しいタスク作成 API に対応する方法をご確認ください。

    • 特定のビルドタイプで useProguard false を設定すると、プラグインは ProGuard の代わりに R8 を使用して、アプリのコードとリソースを圧縮し難読化するようになりました。R8 の詳細については、Android デベロッパー ブログのこちらのブログ投稿をご覧ください。

    • ライブラリ プロジェクトの R クラス生成の高速化: 以前、Android Gradle プラグインは、プロジェクトの依存関係ごとに R.java ファイルを生成し、アプリの他のクラスと一緒にコンパイルしていました。プラグインは最初に中間の R.java クラスをビルドせずに、アプリのコンパイル済み R クラスを含む JAR を直接生成するようになりました。この最適化によって、ライブラリ サブプロジェクトや依存関係が多数あるプロジェクトのビルド パフォーマンスが大幅に改善され、Android Studio のインデックス処理速度が改善される可能性があります。

    • Android App Bundle をビルドする際、Android 6.0(API レベル 23)以降を対象とするアプリバンドルから生成された APK には、デフォルトで未圧縮バージョンのネイティブ ライブラリが含まれるようになりました。この最適化によって、デバイスがライブラリのコピーを作成する必要がなくなるため、アプリのディスク上のサイズが小さくなります。この最適化を無効にする場合は、gradle.properties ファイルに次の行を追加します。

      android.bundle.enableUncompressedNativeLibs = false
              
    • 一部のサードパーティ プラグインの最小バージョンを適用します。

    • シングル バリアント プロジェクト同期: ビルド設定とプロジェクトを同期することは、プロジェクトの構造を 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] チェックボックスをオンにします。

      注: この最適化機能は、Java 言語と C++ 言語を使用したプロジェクトを完全にサポートしており、Kotlin にも一部対応しています。Kotlin コンテンツを含むプロジェクトでこの最適化を有効にすると、内部で全バリアントを使用するように、Gradle 同期がフォールバックします。

    • 不足している SDK パッケージの自動ダウンロード: この機能は、NDK をサポートするように拡張されました。詳細については、不足しているパッケージの Gradle での自動ダウンロードをご覧ください。

    バグの修正

    • Android Gradle プラグイン 3.3.0 で修正される問題は、次のとおりです。

      • Jetifier が有効になっているにもかかわらず AndroidX バージョンではなく android.support.v8.renderscript.RenderScript を呼び出すビルドプロセス
      • 次を含む androidx-rs.jar によるクラッシュ: 静的にバンドルされた annotation.AnyRes
      • RenderScript を使用する場合、build.gradle ファイルで Build Tools のバージョンを手動設定する必要がなくなりました。

    3.2.0(2018 年 9 月)

    このバージョンの Android プラグインには、次のものが必要です。

    3.2.1(2018 年 10 月)

    このアップデートにより、SDK Build Tools のバージョンを指定する必要がなくなりました。Android Gradle プラグインはデフォルトでバージョン 28.0.3 を使用します。

    新機能

    • Android App Bundle のビルドのサポート: アプリバンドルは新しいアップロード形式で、アプリのコンパイル済みコードとリソースはすべてここに含まれますが、APK の生成と署名は Google Play ストアで行います。デベロッパー側では複数の APK を生成、署名、管理する必要がなくなり、ユーザー側ではサイズが削減されデバイスに合わせて最適化されたダウンロードを行えます。詳細については、Android App Bundle の概要をご覧ください。

    • アノテーション プロセッサ使用時の増分ビルド速度改善のサポート: AnnotationProcessorOptions DSL で CommandLineArgumentProvider を拡張しました。これによりユーザーやアノテーション プロセッサ作成者は、増分ビルド プロパティ型のアノテーションを使用してプロセッサの引数にアノテーションを付けられます。このようなアノテーションを使用すると、増分ビルドやキャッシュ済みクリーンビルドの正確性とパフォーマンスが改善されます。詳細については、アノテーション プロセッサへの引数の指定をご覧ください。

    • AndroidX 用移行ツール: Android 3.2 以降で Android Gradle プラグイン 3.2.0 を使用している場合、メニューバーから [Refactor] > [Migrate to AndroidX] を選択することで、プロジェクトのローカル依存関係と Maven 依存関係を移行して新しい AndroidX ライブラリを使用できます。この移行ツールを使用すると、gradle.properties ファイルで次のフラグも true に設定されます。

      • android.useAndroidX: true に設定すると、Android プラグインはサポート ライブラリではなく、該当する AndroidX ライブラリを使用します。このフラグが指定されていない場合、プラグインはデフォルトで false に設定します。

      • android.enableJetifier: true に設定すると、Android プラグインは既存のサードパーティ ライブラリのバイナリを書き換えて、AndroidX 依存関係を使用するように自動的に移行します。このフラグが指定されていない場合、プラグインはデフォルトで false に設定します。このフラグを true に設定できるのは android.useAndroidXtrue に設定されている場合のみであり、それ以外の場合はビルドエラーが発生します。

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

    • 新しいコード圧縮ツール R8: R8 はコードの圧縮と難読化用の新しいツールで、ProGuard の後継です。R8 のプレビュー版の使用を開始するには、プロジェクトの gradle.properties ファイルに次の行を追加します。

              android.enableR8 = true
              
              android.enableR8 = true
              

    動作の変更

    • D8 での desugar がデフォルトで有効になりました。

    • AAPT2 は 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()
                  }
                
                buildscript {
                      repositories {
                          google() // here
                          jcenter()
                      }
                      dependencies {
                          classpath 'com.android.tools.build:gradle:3.2.0'
                      }
                  }
                  allprojects {
                      repositories {
                          google() // and here
                          jcenter()
                  }
                
    • ネイティブの Multidex がデフォルトで有効になりました。以前のバージョンの Android Studio では、Android API レベル 21 以上を搭載しているデバイスにアプリのデバッグ バージョンをデプロイしたときに、ネイティブ multidex が有効になっていました。今回のリリースでは、デバイスへのデプロイであるかリリース用 APK の作成であるかにかかわらず、minSdkVersion=21 以上に設定されているすべてのモジュールに対して、Android Plugin for Gradle がネイティブ multidex を有効にします。

    • プラグインの最小バージョンが protobuf プラグイン(0.8.6)、Kotlin プラグイン(1.2.50)、Crashlytics プラグイン(1.25.4)になりました。

    • 機能モジュール プラグイン com.android.feature では、モジュール名の指定時に英数字とアンダースコアのみを使用するようになりました。たとえば機能モジュール名にダッシュが含まれていると、ビルドエラーが発生します。この動作は、動的機能プラグインの動作と同じです。

    バグの修正

    • JavaCompile は、データ バインディングのあるプロジェクトでキャッシュできるようになりました。(問題 #69243050)。
    • データ バインディングのあるライブラリ モジュールのコンパイル回避を改善しました。 (問題 #77539932)。
    • オンデマンド設定を、以前のバージョンでは予測不能なビルドエラーのために無効にしていた場合でも、再度有効にできるようになりました。 (問題 #77910727)。

    3.1.0(2018 年 3 月)

    このバージョンの Android プラグインには、次のものが必要です。

    • Gradle 4.4 以降。

      詳細については、Gradle のアップデートに関するセクションをご覧ください。

    • Build Tools 27.0.3 以降。

      android.buildToolsVersion プロパティを使用してビルドツールのバージョンを指定する必要がなくなりました。プラグインはデフォルトで必要な最低限のバージョンを使用します。

    新しい DEX コンパイラ D8

    Android Studio は、D8 という新しい DEX コンパイラをデフォルトで使用するようになりました。DEX コンパイルは、.class バイトコードを Android ランタイム(古いバージョンの Android では Dalvik)用の .dex バイトコードに変換する処理です。DX という以前のコンパイラと比較すると、D8 はコンパイルが高速で、出力される DEX ファイルのサイズが小さく、しかもアプリのランタイム パフォーマンスは同等以上です。

    D8 によって日々のアプリ開発ワークフローが変わることはありませんが、新しいコンパイラに関連する問題が発生した場合は、バグを報告してください。プロジェクトの gradle.properties ファイルで次のように指定すると、D8 を一時的に無効にして DX を使用できます。

          android.enableD8=false
        

    Java 8 言語機能を使用しているプロジェクトの場合、デフォルトで増分 desugar が有効になってます。無効にするには、プロジェクトの gradle.properties ファイルで次のように指定します。

          android.enableIncrementalDesugaring=false.
        

    プレビュー ユーザー: D8 のプレビュー版をすでにお使いの場合、D8 は JDK ではなく、SDK Build Tools に含まれるライブラリに対してコンパイルされるようになりました。そのため、JDK に存在し、SDK ビルドツール ライブラリには存在しない API にアクセスすると、コンパイル エラーが発生します。

    動作の変更

    • それぞれが異なる ABI をターゲットとする複数の APK をビルドする場合、mipsmips64armeabi の各 ABI 用の APK がデフォルトで生成されなくなりました。

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

                splits {
                    abi {
                        include 'armeabi', 'mips', 'mips64'
                        ...
                    }
                }
              
                splits {
                    abi {
                        include("armeabi", "mips", "mips64")
                        ...
                    }
                }
              
    • Android プラグインのビルド キャッシュが、30 日以上経過したキャッシュ エントリを削除するようになりました。

    • resConfig"auto" を渡しても、APK にパッケージ化する文字列リソースが自動的に選択されなくなりました。引き続き "auto" を使用する場合、プラグインはアプリと依存関係で提供されるすべての文字列リソースをパッケージ化します。そのため、プラグインを APK にパッケージ化する各ロケールを指定する必要があります。

    • ローカル モジュールはアプリのテスト APK に依存できないため、androidTestImplementation の代わりに androidTestApi コンフィグレーションを使用してインストルメント化テストに依存関係を追加すると、Gradle は次の警告を発行します。

              WARNING: Configuration 'androidTestApi' is obsolete
              and has been replaced with 'androidTestImplementation'
              
              WARNING: Configuration 'androidTestApi' is obsolete
              and has been replaced with 'androidTestImplementation'
              

    修正

    • Android Studio がコンポジット ビルドの依存関係を正しく認識しない問題を修正しました。
    • 1 回のビルドで Android プラグインを複数回読み込むと(たとえば buildscript のクラスパスに Android プラグインが含まれているサブプロジェクトが複数存在する場合)、プロジェクト同期エラーが発生する問題を修正しました。

    3.0.0(2017 年 10 月)

    Android Gradle プラグイン 3.0.0 には、大規模プロジェクトのパフォーマンスの問題に対処することを目的とした、さまざまな変更が含まれています。

    たとえば、約 130 個のモジュールと多数の外部依存関係を持つ(ただしコードやリソースはない)サンプル スケルトン プロジェクトでは、次のようなパフォーマンス改善が得られます。

    Android プラグイン バージョン + Gradle バージョン Android プラグイン 2.2.0 + Gradle 2.14.1 Android プラグイン 2.3.0 + Gradle 3.3 Android プラグイン 3.0.0 + Gradle 4.1
    構成(例: ./gradlew --help の実行) ~2 分 ~9 秒 ~2.5 秒
    Java を 1 行変更(実装変更) ~2 分 15 秒 ~29 秒 ~6.4 秒

    これらの変更の中には、既存のビルドが失敗するものもあります。そのため、新しいプラグインを使用する前に、プロジェクトを移行する労力を考慮する必要があります。

    上記のパフォーマンス改善が見られない場合は、Gradle Profiler を使用したビルドのトレースを含めてバグを報告してください。

    このバージョンの Android プラグインには、次のものが必要です。

    • Gradle 4.1 以降。詳細については、Gradle のアップデートに関するセクションをご覧ください。
    • Build Tools 26.0.2 以降。このアップデートにより、ビルドツールのバージョンを指定する必要がなくなりました。プラグインはデフォルトで必要な最低限のバージョンを使用します。 そのため、android.buildToolsVersion プロパティを削除できるようになりました。

    3.0.1(2017 年 11 月)

    Android Studio 3.0.1 をサポートするマイナー アップデートです。全般的なバグの修正とパフォーマンスの改善が含まれています。

    最適化

    • 詳細なタスクグラフによるマルチモジュール プロジェクトの並列処理の改善。
    • Gradle は、依存関係を変更する場合、その依存関係の API にアクセスできないモジュールを再コンパイルしないことにより、ビルドを高速化します。 Gradle の新しい依存関係コンフィグレーションimplementationapicompileOnlyruntimeOnly)を使用して、API が他のモジュールにリークする依存関係を制限する必要があります。
    • クラスごとに dex を実行することにより、増分ビルドが高速になりました。各クラスが個別の DEX ファイルにコンパイルされ、変更されたクラスのみが re-dex されるようになりました。また、minSdkVersion を 20 以下に設定した以前の multi-dex を使用しているアプリでも、ビルド速度の向上が見込まれます。
    • 特定のタスクを最適化してキャッシュ出力を使用することで、ビルド速度を改善しました。 この最適化を活かすには、まず Gradle ビルド キャッシュを有効にする必要があります。
    • デフォルトで有効になった AAPT2 を使用する増分リソース処理を改善しました。 AAPT2 の使用中に問題が発生した場合は、バグを報告してください。gradle.properties ファイルで android.enableAapt2=false を設定し、コマンドラインから ./gradlew --stop を実行して Gradle デーモンを再起動することにより、AAPT2 を無効にすることもできます。

    新しい機能と特長

    • バリアント識別による依存関係の管理。 プラグインは、モジュールの特定のバリアントをビルドする際に、ローカル ライブラリ モジュールの依存関係のバリアントと、ビルドしているモジュールのバリアントを自動的にマッチングするようになりました。
    • Android Instant Apps と Android Instant Apps SDK(SDK Manager を使用してダウンロードできます)をサポートする、新しい機能モジュール プラグインが含まれています。新しいプラグインによる機能モジュールの作成の詳細については、複数の機能を備えた Instant App の構造をご覧ください。
    • 特定の Java 8 言語機能と Java 8 ライブラリを使用するためのビルトイン サポート。 Jack はサポート終了になり、不要になりました。このため、まず Jack を無効にしてから、デフォルトのツールチェーンにビルトインされている改善された Java 8 サポートを使用する必要があります。詳細については、Java 8 言語機能の使用をご覧ください。
    • Android Test Orchestrator でテストを行うサポートを追加しました。これにより、アプリのテストをそれぞれの Instrumentation 呼び出し内で行えます。各テストはそれぞれの Instrumentation インスタンスで行われるため、テスト間の共有状態はデバイスの CPU やメモリに蓄積されません。また、1 つのテストがクラッシュした場合でも、その Instrumentation インスタンスのみが削除されるため、他のテストは引き続き行われます。

      • デバイス上のテスト オーケストレーションを使用するかどうかを決定する testOptions.execution を追加しました。Android Test Orchestrator を使用する場合、次に示すように ANDROID_TEST_ORCHESTRATOR を指定する必要があります。デフォルトでは、このプロパティは HOST に設定されます。これはテストを行う標準的な方法であり、デバイス上のオーケストレーションは無効になります。

      Groovy

              android {
                testOptions {
                  execution 'ANDROID_TEST_ORCHESTRATOR'
                }
              }
              

      Kotlin

              android {
                testOptions {
                  execution = "ANDROID_TEST_ORCHESTRATOR"
                }
              }
              
    • 新しい androidTestUtil 依存関係コンフィグレーションにより、インストルメンテーション テスト(Android Test Orchestrator など)を実行する前に、別のテストヘルパー APK をインストールできるようになりました。

      Groovy

              dependencies {
                androidTestUtil 'com.android.support.test:orchestrator:1.0.0'
                ...
              }
              

      Kotlin

              dependencies {
                androidTestUtil("com.android.support.test:orchestrator:1.0.0")
                ...
              }
              
    • Roboelectric などの Android リソースを必要とする単体テストをサポートするために、testOptions.unitTests.includeAndroidResources を追加しました。このプロパティを true に設定すると、プラグインは単体テストを実行する前に、リソース、アセット、マニフェストのマージを実施します。 テストでは、次のキーのクラスパスで com/android/tools/test_config.properties を検査できます。

      • android_merged_assets: マージされたアセット ディレクトリへの絶対パス。

        注: ライブラリ モジュールの場合、マージされたアセットに依存関係のアセットは含まれません(問題 #65550419 参照)。

      • android_merged_manifest: マージされたマニフェスト ファイルへの絶対パス。

      • android_merged_resources: マージされたリソース ディレクトリへの絶対パス。モジュールのすべてのリソースと依存関係が含まれます。

      • android_custom_package: 最後の R クラスのパッケージ名。アプリケーション ID を動的に変更する場合、このパッケージ名は、アプリのマニフェストの package 属性と一致しないことがあります。

    • リソースとしてのフォントをサポートしました。これは Android 8.0(API レベル 26)で導入された新機能です。
    • Android Instant Apps SDK 1.1 以降での言語固有の APK をサポートしました。
    • 次のように、外部のネイティブ ビルド プロジェクトの出力ディレクトリを変更できるようになりました。

      Groovy

              android {
                  ...
                  externalNativeBuild {
                      // For ndk-build, instead use the ndkBuild block.
                      cmake {
                          ...
                          // Specifies a relative path for outputs from external native
                          // builds. You can specify any path that's not a subdirectory
                          // of your project's temporary build/ directory.
                          buildStagingDirectory "./outputs/cmake"
                      }
                  }
              }
              

      Kotlin

              android {
                  ...
                  externalNativeBuild {
                      // For ndk-build, instead use the ndkBuild block.
                      cmake {
                          ...
                          // Specifies a relative path for outputs from external native
                          // builds. You can specify any path that's not a subdirectory
                          // of your project's temporary build/ directory.
                          buildStagingDirectory = "./outputs/cmake"
                      }
                  }
              }
              
    • Android Studio からネイティブ プロジェクトをビルドするときに CMake 3.7 以降を使用できるようになりました。
    • 新しい lintChecks 依存関係コンフィグレーションにより、カスタム lint ルールを定義する JAR を作成し、AAR や APK のプロジェクトにパッケージ化できます。

      カスタム lint ルールは、単一の JAR を出力し、compileOnly 依存関係のみを含む、別のプロジェクトに属している必要があります。他のアプリやライブラリ モジュールは、lintChecks コンフィグレーションを使用して lint プロジェクトに依存できます。

      Groovy

              dependencies {
                  // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file
                  // and package it with your module. If the module is an Android library,
                  // other projects that depend on it automatically use the lint checks.
                  // If the module is an app, lint includes these rules when analyzing the app.
                  lintChecks project(':lint-checks')
              }
              

      Kotlin

              dependencies {
                  // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file
                  // and package it with your module. If the module is an Android library,
                  // other projects that depend on it automatically use the lint checks.
                  // If the module is an app, lint includes these rules when analyzing the app.
                  lintChecks(project(":lint-checks"))
              }
              

    動作の変更

    • Android プラグイン 3.0.0 では特定の API が削除されるため、その API を使用するとビルドが失敗します。たとえば、Variants API を使用して outputFile() オブジェクトにアクセスすることや、processManifest.manifestOutputFile() を使用して各バリアントのマニフェスト ファイルを取得することはできなくなりました。詳細については、API の変更をご覧ください。
    • ビルドツールのバージョンを指定する必要がなくなりました(そのため、android.buildToolsVersion プロパティを削除できるようになりました)。デフォルトでは、使用しているバージョンの Android プラグインに最小限必要なバージョンのビルドツールが自動的に使用されます。
    • 次のように、buildTypes ブロックで PNG 自動最適化を有効または無効にできるようになりました。すべてのビルドについて PNG 自動最適化がデフォルトで有効になっていますが、PNG ファイルが多く含まれるプロジェクトではビルド時間が長くなることから、デバッグビルドは除きます。そのため、他のビルドタイプのビルド時間を改善するには、PNG 自動最適化を無効にするか、画像を WebP に変換する必要があります。

      Groovy

            android {
              buildTypes {
                release {
                  // Disables PNG crunching for the release build type.
                  crunchPngs false
                }
              }
            }
            

      Kotlin

            android {
              buildTypes {
                release {
                  // Disables PNG crunching for the release build type.
                  isCrunchPngs = false
                }
              }
            }
            
    • Android プラグインは、外部の CMake プロジェクトで設定する実行可能ターゲットを自動的にビルドするようになりました。
    • annotationProcessor 依存関係コンフィグレーションを使用してプロセッサ クラスパスにアノテーション プロセッサを追加する必要があります。
    • 非推奨の ndkCompile の使用制限が強化されました。 代わりに、CMake または ndk-build のいずれかを使用して、APK にパッケージ化するネイティブ コードをコンパイルする方法に移行する必要があります。詳細については、ndkcompile から移行するをご覧ください。

    3.0.0(2017 年 10 月)

    Android Gradle プラグイン 3.0.0 には、大規模プロジェクトのパフォーマンスの問題に対処することを目的とした、さまざまな変更が含まれています。

    たとえば、約 130 個のモジュールと多数の外部依存関係を持つ(ただしコードやリソースはない)サンプル スケルトン プロジェクトでは、次のようなパフォーマンス改善が得られます。

    Android プラグイン バージョン + Gradle バージョン Android プラグイン 2.2.0 + Gradle 2.14.1 Android プラグイン 2.3.0 + Gradle 3.3 Android プラグイン 3.0.0 + Gradle 4.1
    構成(例: ./gradlew --help の実行) ~2 分 ~9 秒 ~2.5 秒
    Java を 1 行変更(実装変更) ~2 分 15 秒 ~29 秒 ~6.4 秒

    これらの変更の中には、既存のビルドが失敗するものもあります。そのため、新しいプラグインを使用する前に、プロジェクトを移行する労力を考慮する必要があります。

    上記のパフォーマンス改善が見られない場合は、Gradle Profiler を使用したビルドのトレースを含めてバグを報告してください。

    このバージョンの Android プラグインには、次のものが必要です。

    • Gradle 4.1 以降。詳細については、Gradle のアップデートに関するセクションをご覧ください。
    • Build Tools 26.0.2 以降。このアップデートにより、ビルドツールのバージョンを指定する必要がなくなりました。プラグインはデフォルトで必要な最低限のバージョンを使用します。 そのため、android.buildToolsVersion プロパティを削除できるようになりました。

    3.0.1(2017 年 11 月)

    Android Studio 3.0.1 をサポートするマイナー アップデートです。全般的なバグの修正とパフォーマンスの改善が含まれています。

    最適化

    • 詳細なタスクグラフによるマルチモジュール プロジェクトの並列処理の改善。
    • Gradle は、依存関係を変更する場合、その依存関係の API にアクセスできないモジュールを再コンパイルしないことにより、ビルドを高速化します。 Gradle の新しい依存関係コンフィグレーションimplementationapicompileOnlyruntimeOnly)を使用して、API が他のモジュールにリークする依存関係を制限する必要があります。
    • クラスごとに dex を実行することにより、増分ビルドが高速になりました。各クラスが個別の DEX ファイルにコンパイルされ、変更されたクラスのみが re-dex されるようになりました。また、minSdkVersion を 20 以下に設定した以前の multi-dex を使用しているアプリでも、ビルド速度の向上が見込まれます。
    • 特定のタスクを最適化してキャッシュ出力を使用することで、ビルド速度を改善しました。 この最適化を活かすには、まず Gradle ビルド キャッシュを有効にする必要があります。
    • デフォルトで有効になった AAPT2 を使用する増分リソース処理を改善しました。 AAPT2 の使用中に問題が発生した場合は、バグを報告してください。gradle.properties ファイルで android.enableAapt2=false を設定し、コマンドラインから ./gradlew --stop を実行して Gradle デーモンを再起動することにより、AAPT2 を無効にすることもできます。

    新しい機能と特長

    • バリアント識別による依存関係の管理。 プラグインは、モジュールの特定のバリアントをビルドする際に、ローカル ライブラリ モジュールの依存関係のバリアントと、ビルドしているモジュールのバリアントを自動的にマッチングするようになりました。
    • Android Instant Apps と Android Instant Apps SDK(SDK Manager を使用してダウンロードできます)をサポートする、新しい機能モジュール プラグインが含まれています。新しいプラグインによる機能モジュールの作成の詳細については、複数の機能を備えた Instant App の構造をご覧ください。
    • 特定の Java 8 言語機能と Java 8 ライブラリを使用するためのビルトイン サポート。 Jack はサポート終了になり、不要になりました。このため、まず Jack を無効にしてから、デフォルトのツールチェーンにビルトインされている改善された Java 8 サポートを使用する必要があります。詳細については、Java 8 言語機能の使用をご覧ください。
    • Android Test Orchestrator でテストを行うサポートを追加しました。これにより、アプリのテストをそれぞれの Instrumentation 呼び出し内で行えます。各テストはそれぞれの Instrumentation インスタンスで行われるため、テスト間の共有状態はデバイスの CPU やメモリに蓄積されません。また、1 つのテストがクラッシュした場合でも、その Instrumentation インスタンスのみが削除されるため、他のテストは引き続き行われます。

      • デバイス上のテスト オーケストレーションを使用するかどうかを決定する testOptions.execution を追加しました。Android Test Orchestrator を使用する場合、次に示すように ANDROID_TEST_ORCHESTRATOR を指定する必要があります。デフォルトでは、このプロパティは HOST に設定されます。これはテストを行う標準的な方法であり、デバイス上のオーケストレーションは無効になります。

      Groovy

              android {
                testOptions {
                  execution 'ANDROID_TEST_ORCHESTRATOR'
                }
              }
              

      Kotlin

              android {
                testOptions {
                  execution = "ANDROID_TEST_ORCHESTRATOR"
                }
              }
              
    • 新しい androidTestUtil 依存関係コンフィグレーションにより、インストルメンテーション テスト(Android Test Orchestrator など)を実行する前に、別のテストヘルパー APK をインストールできるようになりました。

      Groovy

              dependencies {
                androidTestUtil 'com.android.support.test:orchestrator:1.0.0'
                ...
              }
              

      Kotlin

              dependencies {
                androidTestUtil("com.android.support.test:orchestrator:1.0.0")
                ...
              }
              
    • Roboelectric などの Android リソースを必要とする単体テストをサポートするために、testOptions.unitTests.includeAndroidResources を追加しました。このプロパティを true に設定すると、プラグインは単体テストを実行する前に、リソース、アセット、マニフェストのマージを実施します。 テストでは、次のキーのクラスパスで com/android/tools/test_config.properties を検査できます。

      • android_merged_assets: マージされたアセット ディレクトリへの絶対パス。

        注: ライブラリ モジュールの場合、マージされたアセットに依存関係のアセットは含まれません(問題 #65550419 参照)。

      • android_merged_manifest: マージされたマニフェスト ファイルへの絶対パス。

      • android_merged_resources: マージされたリソース ディレクトリへの絶対パス。モジュールのすべてのリソースと依存関係が含まれます。

      • android_custom_package: 最後の R クラスのパッケージ名。アプリケーション ID を動的に変更する場合、このパッケージ名は、アプリのマニフェストの package 属性と一致しないことがあります。

    • リソースとしてのフォントをサポートしました。これは Android 8.0(API レベル 26)で導入された新機能です。
    • Android Instant Apps SDK 1.1 以降での言語固有の APK をサポートしました。
    • 次のように、外部のネイティブ ビルド プロジェクトの出力ディレクトリを変更できるようになりました。

      Groovy

              android {
                  ...
                  externalNativeBuild {
                      // For ndk-build, instead use the ndkBuild block.
                      cmake {
                          ...
                          // Specifies a relative path for outputs from external native
                          // builds. You can specify any path that's not a subdirectory
                          // of your project's temporary build/ directory.
                          buildStagingDirectory "./outputs/cmake"
                      }
                  }
              }
              

      Kotlin

              android {
                  ...
                  externalNativeBuild {
                      // For ndk-build, instead use the ndkBuild block.
                      cmake {
                          ...
                          // Specifies a relative path for outputs from external native
                          // builds. You can specify any path that's not a subdirectory
                          // of your project's temporary build/ directory.
                          buildStagingDirectory = "./outputs/cmake"
                      }
                  }
              }
              
    • Android Studio からネイティブ プロジェクトをビルドするときに CMake 3.7 以降を使用できるようになりました。
    • 新しい lintChecks 依存関係コンフィグレーションにより、カスタム lint ルールを定義する JAR を作成し、AAR や APK のプロジェクトにパッケージ化できます。

      カスタム lint ルールは、単一の JAR を出力し、compileOnly 依存関係のみを含む、別のプロジェクトに属している必要があります。他のアプリやライブラリ モジュールは、lintChecks コンフィグレーションを使用して lint プロジェクトに依存できます。

      Groovy

              dependencies {
                  // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file
                  // and package it with your module. If the module is an Android library,
                  // other projects that depend on it automatically use the lint checks.
                  // If the module is an app, lint includes these rules when analyzing the app.
                  lintChecks project(':lint-checks')
              }
              

      Kotlin

              dependencies {
                  // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file
                  // and package it with your module. If the module is an Android library,
                  // other projects that depend on it automatically use the lint checks.
                  // If the module is an app, lint includes these rules when analyzing the app.
                  lintChecks(project(":lint-checks"))
              }
              

    動作の変更

    • Android プラグイン 3.0.0 では特定の API が削除されるため、その API を使用するとビルドが失敗します。たとえば、Variants API を使用して outputFile() オブジェクトにアクセスすることや、processManifest.manifestOutputFile() を使用して各バリアントのマニフェスト ファイルを取得することはできなくなりました。詳細については、API の変更をご覧ください。
    • ビルドツールのバージョンを指定する必要がなくなりました(そのため、android.buildToolsVersion プロパティを削除できるようになりました)。デフォルトでは、使用しているバージョンの Android プラグインに最小限必要なバージョンのビルドツールが自動的に使用されます。
    • 次のように、buildTypes ブロックで PNG 自動最適化を有効または無効にできるようになりました。すべてのビルドについて PNG 自動最適化がデフォルトで有効になっていますが、PNG ファイルが多く含まれるプロジェクトではビルド時間が長くなることから、デバッグビルドは除きます。そのため、他のビルドタイプのビルド時間を改善するには、PNG 自動最適化を無効にするか、画像を WebP に変換する必要があります。

      Groovy

            android {
              buildTypes {
                release {
                  // Disables PNG crunching for the release build type.
                  crunchPngs false
                }
              }
            }
            

      Kotlin

            android {
              buildTypes {
                release {
                  // Disables PNG crunching for the release build type.
                  isCrunchPngs = false
                }
              }
            }
            
    • Android プラグインは、外部の CMake プロジェクトで設定する実行可能ターゲットを自動的にビルドするようになりました。
    • annotationProcessor 依存関係コンフィグレーションを使用してプロセッサ クラスパスにアノテーション プロセッサを追加する必要があります。
    • 非推奨の ndkCompile の使用制限が強化されました。 代わりに、CMake または ndk-build のいずれかを使用して、APK にパッケージ化するネイティブ コードをコンパイルする方法に移行する必要があります。詳細については、ndkcompile から移行するをご覧ください。

    2.3.0(2017 年 2 月)

    2.3.3(2017 年 6 月)

    Android Studio 2.3.3 との互換性を追加するマイナー アップデートです。

    2.3.2(2017 年 5 月)

    Android Studio 2.3.2 との互換性を追加するマイナー アップデートです。

    2.3.1(2017 年 4 月)

    Android プラグイン 2.3.0 のマイナー アップデートです。一部の物理 Android デバイスが Instant Run で正常に動作しなかった問題を修正しました(問題 #235879 参照)。

    依存関係:
    新規:
    • パフォーマンスの改善と新機能が含まれる Gradle 3.3 を使用します。詳細については、Gradle リリースノートをご覧ください。
    • ビルド キャッシュ: プロジェクトをビルドするときに Android プラグインが生成する特定の出力(非パッケージ化 AAR、事前 DEX 変換済みのリモート依存関係など)を保存します。キャッシュされたファイルは、ビルドシステムが以降のビルドを行う際に再利用できるため、再生成の手間が省け、クリーンビルドの時間が大幅に短縮されます。Android プラグイン 2.3.0 以降を使用しているプロジェクトでは、デフォルトでビルド キャッシュが使用されます。詳細については、ビルド キャッシュによるクリーンビルドの高速化をご覧ください。
    変更内容:

    2.2.0(2016 年 9 月)

    依存関係:
    新規:
    • パフォーマンスの改善と新機能が含まれる Gradle 2.14.1 を使用します。また、Gradle デーモン使用時のローカル権限昇格を可能にするセキュリティ脆弱性を修正しました。詳細については、Gradle リリースノートをご覧ください。
    • externalNativeBuild {} DSL を使用することで、Gradle でネイティブ ソースにリンクし、CMake や ndk-build を使用してネイティブ ライブラリをコンパイルできるようになりました。Gradle は、ネイティブ ライブラリを作成した後、APK にパッケージ化します。CMake と ndk-build を Gradle で使用する方法については、プロジェクトへの C / C++ コードの追加をご覧ください。
    • コマンドラインからビルド実行すると、Gradle は不足している SDK コンポーネントやプロジェクトが依存しているアップデートの自動ダウンロードを試みます。 詳細については、不足しているパッケージの Gradle での自動ダウンロードをご覧ください。
    • 新しい試験運用版のキャッシュ機能により、Gradle では、pre-dex をかけ、保存し、pre-dex がかけられたバージョンのライブラリを再利用することで、ビルド時間を短縮できます。この試験運用版機能の使用方法について詳しくは、ビルド キャッシュのガイドをご覧ください。
    • 圧縮、署名、zipalign を 1 つのタスクで処理する新しいデフォルトのパッケージ化パイプラインを採用することで、ビルドのパフォーマンスを改善しました。gradle.properties ファイルに android.useOldPackaging=true を追加すると、以前のパッケージ化ツールを使用するように戻せます。新しいパッケージ化ツールの使用中、zipalignDebug タスクは使用できません。ただし、createZipAlignTask(String taskName, File inputFile, File outputFile) メソッドを呼び出すことで、独自に作成できます。
    • APK 署名では、従来の JAR 署名に加えて APK 署名スキーム v2 が使用されるようになりました。生成される APK は、すべての Android プラットフォームで受け入れられます。署名後にこれらの APK を変更すると、v2 署名が無効になり、デバイスへのインストールができなくなります。この機能を無効にするには、モジュール レベルの build.gradle ファイルに次のコードを追加します。

      Groovy

      android {
        ...
        signingConfigs {
          config {
            ...
            v2SigningEnabled false
          }
        }
      }
            

      Kotlin

      android {
        ...
        signingConfigs {
          create("config") {
            ...
            v2SigningEnabled = false
          }
        }
      }
            
    • Multidex ビルドでは、ProGuard ルールを使用して、Gradle でアプリのメインの DEX ファイルにコンパイルする必要があるクラスを決定できるようになりました。Android システムはアプリの起動時にメインの DEX ファイルを最初に読み込むため、特定のクラスをメインの DEX ファイルにコンパイルすることで、起動時に優先順位を付けられます。メインの DEX ファイル専用の ProGuard 設定ファイルを作成してから、 buildTypes.multiDexKeepProguard を使用して、設定ファイルのパスを Gradle に渡します。この DSL の使用は、アプリの一般的な ProGuard ルールを提供しメイン DEX ファイルのクラスを指定しない buildTypes.proguardFiles の使用とは異なります。
    • デバイスにインストールするときにアプリのサイズを小さくできる android:extractNativeLibs フラグのサポートを追加しました。アプリのマニフェストの <application> 要素でこのフラグを false に設定すると、Gradle は圧縮されていないバージョンと調整されたバージョンのネイティブ ライブラリを APK にパッケージ化します。PackageManager がインストール時に APK からデバイスのファイル システムにネイティブ ライブラリをコピーできなくなり、アプリの差分アップデートを小さくできるというメリットもあります。
    • プロダクト フレーバーに versionNameSuffix applicationIdSuffix を指定できるようになりました。(問題 59614)。
    変更内容:
    • getDefaultProguardFile は、Android Plugin for Gradle が提供するデフォルトの ProGuard ファイルを返すようになり、Android SDK のファイルを使用しなくなりました。
    • Jack コンパイラのパフォーマンスと機能を改善しました:
      • testCoverageEnabledtrue に設定すると、Jack で Jacoco テスト カバレッジがサポートされるようになりました。
      • アノテーション プロセッサのサポートを改善しました。compile 依存関係など、クラスパス上のアノテーション プロセッサは、ビルドに自動的に適用されます。ビルドでアノテーション プロセッサを指定し、モジュール レベルの build.gradle ファイルで javaCompileOptions.annotationProcessorOptions {} DSL を使用して引数を渡すこともできます。

        Groovy

        android {
          ...
          defaultConfig {
            ...
            javaCompileOptions {
              annotationProcessorOptions {
                className 'com.example.MyProcessor'
                // Arguments are optional.
                arguments = [ foo : 'bar' ]
              }
            }
          }
        }
            

        Kotlin

        android {
          ...
          defaultConfig {
            ...
            javaCompileOptions {
              annotationProcessorOptions {
                className = "com.example.MyProcessor"
                // Arguments are optional.
                arguments(mapOf(foo to "bar"))
              }
            }
          }
        }
            

        コンパイル時にアノテーション プロセッサを適用するが APK に含めないという場合は、annotationProcessor 依存関係スコープを使用します。

        Groovy

        dependencies {
            compile 'com.google.dagger:dagger:2.0'
            annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
           // or use buildVariantAnnotationProcessor to target a specific build variant
        }
            

        Kotlin

        dependencies {
            implementation("com.google.dagger:dagger:2.0")
            annotationProcessor("com.google.dagger:dagger-compiler:2.0")
           // or use buildVariantAnnotationProcessor to target a specific build variant
        }
            
      • 設定可能なパラメータのリストを表示するには、コマンドラインから次のコマンドを実行します。

        java -jar /build-tools/jack.jar --help-properties
        
      • Gradle デーモンのヒープサイズが 1.5 GB 以上の場合、Jack はデフォルトで Gradle と同じプロセスで実行されるようになりました。デーモンのヒープサイズを調整するには、gradle.properties ファイルに次の行を追加します。
        # This sets the daemon heap size to 1.5GB.
        org.gradle.jvmargs=-Xmx1536M
        

    2.1.0(2016 年 4 月)

    2.1.3(2016 年 8 月)

    このアップデートには、Gradle 2.14.1 以降が必要です。Gradle 2.14.1 には、パフォーマンスの改善、新機能、重要なセキュリティ修正が含まれています。詳細については、Gradle リリースノートをご覧ください。

    依存関係:
    新規:
    • N Developer Preview、JDK 8、Jack ツールチェーンを使用した Java 8 言語機能のサポートを追加しました。詳細については、N Preview のガイドをご覧ください。

      注: Instant Run は、現段階では Jack と併用できません。そのため、新しいツールチェーンの使用中は無効になります。N Preview 向けに開発していて、サポートされている Java 8 言語機能を使用する場合に限り、Jack を使用する必要があります。

    • 開発中のコンパイル時間を短縮するために、増分 Java コンパイルのデフォルト サポートが追加されました。これは、ソースのうち変更された部分や再コンパイルが必要な部分だけを再コンパイルすることで行われます。この機能を無効にするには、モジュール レベルの build.gradle ファイルに次のコードを追加します。

      Groovy

      android {
        ...
        compileOptions {
          incremental false
        }
      }
      

      Kotlin

      android {
        ...
        compileOptions {
          incremental = false
        }
      }
      
    • 個々の外部 VM プロセスではなくビルドプロセス内で dex 変換を行う、プロセス内 dex 変換のサポートを追加しました。これにより、増分ビルドが高速化されるだけでなく、フルビルドも高速化されます。Gradle デーモンの最大ヒープサイズが 2,048 MB 以上に設定されたプロジェクトでは、この機能がデフォルトで有効になります。そのためには、プロジェクトの gradle.properties ファイルに次の行を追加します。

      ```none org.gradle.jvmargs = -Xmx2048m ```

      モジュール レベルの build.gradle ファイルで javaMaxHeapSize の値を定義した場合、org.gradle.jvmargsjavaMaxHeapSize + 1,024 MB の値に設定する必要があります。たとえば、javaMaxHeapSize を「2048m」に設定した場合、プロジェクトの gradle.properties ファイルに次の行を追加する必要があります。

      ```none org.gradle.jvmargs = -Xmx3072m ```

      プロセス内 dex 変換を無効にするには、モジュール レベルの build.gradle ファイルに次のコードを追加します。

      Groovy

      android {
        ...
        dexOptions {
            dexInProcess false
        }
      }
      

      Kotlin

      android {
        ...
        dexOptions {
            dexInProcess = false
        }
      }
      

    2.0.0(2016 年 4 月)

    依存関係:
    新規:
    • バイトコード インジェクションをサポートし、エミュレータや実機で実行中のアプリにコードとリソースのアップデートをプッシュすることで、Instant Run を有効にします。
    • アプリが実行されていない場合についても、増分ビルドのサポートを追加しました。 接続されているデバイスに Android Debug Bridge を介して増分変更をプッシュすることで、フルビルドの時間が改善されます。
    • 同時に生成できるワーカー dex プロセスの数を制御する maxProcessCount を追加しました。次のコード(モジュール レベルの build.gradle ファイル内)では、同時プロセスの最大数を 4 に設定しています。

      Groovy

      android {
        ...
        dexOptions {
          maxProcessCount = 4 // this is the default value
        }
      }
      

      Kotlin

      android {
        ...
        dexOptions {
          maxProcessCount = 4 // this is the default value
        }
      }
      
        </li>
      
        <li>Added an experimental code shrinker to support pre-dexing and reduce re-dexing
        of dependencies, which are not supported with Proguard. This improves the build
        speed of your debug build variant. Because the experimental shrinker does not
        support optimization and obfuscation, you should enable Proguard for your
        release builds. To enable the experimental shrinker for your debug builds, add
        the following to your module-level <code>build.gradle</code> file:
      

      Groovy

      android {
        ...
        buildTypes {
          debug {
            minifyEnabled true
            useProguard false
          }
          release {
            minifyEnabled true
            useProguard true // this is a default setting
          }
        }
      }
      

      Kotlin

      android {
        ...
        buildTypes {
          getByName("debug") {
            minifyEnabled = true
            useProguard = false
          }
          getByName("release") {
            minifyEnabled = true
            useProguard = true // this is a default setting
          }
        }
      }
      
        </li>
      
        <li>Added logging support and improved performance for the resource shrinker.
        The resource shrinker now logs all of its operations into a <code>resources.txt</code>
        file located in the same folder as the Proguard log files.
        </li>
      </ul>
      

    変更された動作:
    • minSdkVersion が 18 以上に設定されている場合、APK 署名は SHA256 を使用します。
    •   <li>DSA and ECDSA keys can now sign APK packages.
      
          <p class="note">
            <strong>Note:</strong> The <a href=
            "/training/articles/keystore.html">Android keystore</a> provider no
            longer supports <a href=
            "/about/versions/marshmallow/android-6.0-changes.html#behavior-keystore">
            DSA keys on Android 6.0</a> (API level 23) and higher.
          </p>
      
        </li>
      </ul>
      

    修正された問題:
    • テスト設定とメインのビルド設定の両方で AAR 依存関係が重複する問題を修正しました。

    Android Plugin for Gradle リビジョン 1.5.0(2015 年 11 月)

    依存関係:
    • Gradle 2.2.1 以降。
    • Build Tools 21.1.1 以降。
    一般的な注意事項:
    • データ バインディング プラグインを Android Plugin for Gradle に統合しました。有効にするには、プラグインを使用する各プロジェクトの build.gradle ファイルに次のコードを追加します。
    • android {
          dataBinding {
              enabled = true
          }
      }
              
      android {
          dataBinding {
              enabled = true
          }
      }
              
    • 新しい Transform API を追加しました。これにより、.dex ファイルに変換する前にコンパイル済みの .class ファイルをサードパーティ プラグインで操作できるようになりました。Transform API を使用すると、カスタムクラス操作の挿入が簡単になると同時に、操作可能な対象に関して柔軟性が高まります。変換をビルドに挿入するには、いずれかの Transform インターフェースを実装する新しいクラスを作成し、android.registerTransform(theTransform)android.registerTransform(theTransform, dependencies) に登録します。タスクをつなぎ合わせる必要はありません。Transform API に関する注意事項は次のとおりです。
      • 変換は、現在のプロジェクト、サブプロジェクト、外部ライブラリの 1 つまたは複数に適用できます。
      • 変換はグローバルに登録する必要があり、すべてのバリアントに適用されます。
      • Java Code Coverage Library(JaCoCo)、ProGuard、MultiDex による内部コード処理で、Transform API が使用されるようになりました。ただし、Java Android Compiler Kit(Jack)はこの API を使用せず、javac/dx コードパスのみを使用します。
      • Gradle は、変換を JaCoCo、サードパーティ プラグイン、ProGuard の順に実行します。 サードパーティ プラグインの実行順序は、サードパーティ プラグインによって変換が追加される順序と一致します。サードパーティ プラグインの開発者は、API を介して変換の実行順序を制御できません。
    • ApplicationVariant クラスから dex ゲッターが非推奨になりました。 変換を介して実行されるようになったため、Dex タスクにバリアント API を介してアクセスできなくなりました。現在、dex プロセスを制御する代替手段はありません。
    • アセットの増分サポートを修正しました。
    • テスト プロジェクトで使用できるように MultiDex のサポートを改善し、テストが自動的に com.android.support:multidex-instrumentation 依存関係を持つようになりました。
    • Gradle ビルドが非同期タスクを呼び出し、ワーカー プロセスで障害が発生した場合に、Gradle ビルドが適切に失敗し、根本的なエラー原因を報告する機能を追加しました。
    • 複数のアプリケーション バイナリ インターフェース(ABI)が含まれるバリアントで特定の ABI を設定するためのサポートを追加しました。
    • テストのインストール時や実行時の、ANDROID_SERIAL 環境変数に対するデバイス シリアル番号のカンマ区切りリストのサポートを追加しました。
    • Android 5.0(API レベル 20)以降を実行しているデバイスで、APK 名にスペースが含まれているとインストールが失敗する問題を修正しました。
    • Android Asset Packaging Tool(AAPT)のエラー出力に関連する、さまざまな問題を修正しました。
    • JaCoCo 増分インストゥルメンテーションのサポートを追加し、増分ビルドを高速化しました。Android Plugin for Gradle は、JaCoCo instrumenter を直接呼び出します。新しいバージョンの JaCoCo instrumenter を強制するには、ビルド スクリプトの依存関係として追加する必要があります。
    • クラスでないファイルを無視するように、JaCoCo のサポートを修正しました。
    • 下位互換性のために、ビルド時に PNG を生成するためのベクター型ドローアブルのサポートを追加しました。 Android Plugin for Gradle は、API バージョンを指定しない、またはアプリのマニフェストの <uses-sdk> 要素で 20 以下の android:minSdkVersion 属性を指定するリソース ディレクトリにあるすべてのベクター型ドローアブルに対して、PNG を生成します。build.gradle ファイルの defaultConfigproductFlavor のセクションで generatedDensities プロパティを使用すると、PNG 密度を設定できます。
    • プラグインが一度だけ生成して単体テストに使用する、モック可能な android.jar の共有を追加しました。applib などの複数のモジュールで共有されるようになりました。再生成するには $rootDir/build を削除します。
    • APK のパッケージ化中ではなく、難読化タスクの前に Java リソースを処理するように変更しました。この変更により、難読化タスクは、パッケージの難読化に続いて Java リソースを適応させることができます。
    • 試験運用版ライブラリ プラグインで Java Native Interface(JNI)コードを使用する際の問題を修正しました。
    • 試験運用版ライブラリ プラグインの android:compileSdkVersion 属性とは別にプラットフォームのバージョンを設定する機能を追加しました。

    Android Plugin for Gradle リビジョン 1.3.1(2015 年 8 月)

    依存関係:
    • Gradle 2.2.1 以降。
    • Build Tools 21.1.1 以降。
    一般的な注意事項:
    • カスタマイズされたファイル名を使用する場合に、前のタスクの出力を適切に使用するように ZipAlign タスクを修正しました。
    • NDK での Renderscript パッケージングを修正しました。
    • createDebugCoverageReport ビルドタスクのサポートを維持しました。
    • build.gradle ファイルでの archiveBaseName プロパティの使用をカスタマイズするサポートを追加しました。
    • Android Studio の外部で lint を実行しているときにパラメータ メソッドのアノテーション ルックアップによって発生する Invalid ResourceType lint 警告を修正しました。

    Android Plugin for Gradle リビジョン 1.3.0(2015 年 7 月)

    依存関係:
    • Gradle 2.2.1 以降。
    • Build Tools 21.1.1 以降。
    一般的な注意事項:
    • gradle.properties ファイルまたはコマンドラインから Android タスクのスレッドプール サイズを制御する com.android.build.threadPoolSize プロパティのサポートを追加しました。次の例では、このプロパティを 4 に設定しています。

              
              -Pcom.android.build.threadPoolSize=4
              
            
    • デフォルトのビルド動作を、APK から LICENSE ファイルと LICENSE.txt ファイルを除外するように設定しました。これらのファイルを APK に含めるには、build.gradle ファイルの packagingOptions.excludes プロパティからこれらのファイルを削除します。次に例を示します。
      android {
            packagingOptions.excludes = []
          }
            
      android {
            packagingOptions.excludes.clear()
          }
          
    • 使用可能なすべてのソースセットのセットを検査する sourceSets タスクを追加しました。
    • マルチフレーバーとビルド バリアントのソースフォルダを認識するように、単体テストのサポートを拡張しました。たとえば、マルチフレーバー flavor1flavorA を持つアプリを Debug ビルドタイプでテストする場合、テスト ソースセットは次のようになります。
      • test
      • testFlavor1
      • testFlavorA
      • testFlavor1FlavorA
      • testFlavor1FlavorADebug

      Android テストでは、すでにマルチフレーバーのソースフォルダが認識されています。

    • 単体テストのサポートを次のとおり改善しました。
      • ビルドファイルで useJack プロパティが true に設定されている場合でも、メインソースとテストソースで javac を実行します。
      • 各ビルドタイプの依存関係を正しく認識します。
    • コマンドラインからインストゥルメンテーション テストランナー引数を指定するためのサポートを追加しました。 次に例を示します。
      ./gradlew connectedCheck \
         -Pandroid.testInstrumentationRunnerArguments.size=medium \
         -Pandroid.testInstrumentationRunnerArguments.class=TestA,TestB
              
    • build.gradle ファイルでの任意の追加 Android Asset Packaging Tool(AAPT)パラメータのサポートを追加しました。次に例を示します。

      android {
          aaptOptions {
            additionalParameters "--custom_option", "value"
          }
      }
            
      android {
          aaptOptions {
            additionalParameters += listOf("--custom_option", "value")
          }
      }
            
    • targetProjectPath プロパティと targetVariant プロパティを使用して APK パスとターゲット バリアントを設定する、個別のテスト モジュールとしてのテスト APK モジュールのサポートを追加しました。

      注: テスト APK モジュールはプロダクト フレーバーをサポートせず、1 つのバリアントのみをターゲットにできます。また、Jacoco はまだサポートされていません。

    • リソースをマージする前の、リソース名の検証を追加しました。
    • ライブラリ モジュール用に AAR(Android ARchive)パッケージを作成するときは、マニフェスト マージの設定で自動 @{applicationId} プレースホルダを使用しないでください。 代わりに、@{libApplicationId} など別のプレースホルダを使用し、アーカイブ ライブラリにアプリケーション ID を含める場合は、その値を指定します。

    Android Plugin for Gradle リビジョン 1.2.0(2015 年 4 月)

    依存関係:
    • Gradle 2.2.1 以降。
    • Build Tools 21.1.1 以降。
    一般的な注意事項:
    • Gradle による単体テスト実行のサポートを強化しました。
      • Gradle から単体テストを直接実行するとき、クラスパスに Java スタイルのリソースを含めるサポートを追加しました。
      • Android ARchive(AAR)アーティファクトの単体テスト依存性のサポートを追加しました。
      • build.gradle ファイルを使用して単体テストのバリアントを操作できるように、unitTestVariants プロパティのサポートを追加しました。
      • 単体テスト用にカスタマイズされたタスクを設定するための unitTest.all コードブロックを testOptions に追加しました。次のサンプルコードは、この新しいオプションを使用して単体テストの構成設定を追加する方法を示しています。
        android {
          testOptions {
            unitTest.all {
              jvmArgs '-XX:MaxPermSize=256m' // Or any other gradle option.
            }
          }
        }
        
        android {
          testOptions {
            unitTest.all {
              jvmArgs += listOf("-XX:MaxPermSize=256m") // Or any other gradle option.
            }
          }
        }
                    
      • mockable-android.jar ファイルのパッケージ化における列挙型とパブリック インスタンス フィールドの処理を修正しました。
      • 変更後にテストクラスが再コンパイルされるように、ライブラリ プロジェクトのタスクの依存関係を修正しました。
    • テスト APK を圧縮するときに ProGuard ファイルを適用する testProguardFile プロパティを追加しました。
    • Android Debug Bridge 画面録画の最大録画時間を設定する timeOut プロパティを adbOptions コードブロックに追加しました。
    • 280 dpi リソースのサポートを追加しました。
    • プロジェクト評価中のパフォーマンスを改善しました。

    Android Plugin for Gradle リビジョン 1.1.3(2015 年 3 月)

    依存関係:
    • Gradle 2.2.1 以降。
    • Build Tools 21.1.1 以降。
    一般的な注意事項:
    • ProGuard の障害を引き起こしたテストアプリで依存関係が重複する問題を修正しました。
    • JDK Comparator 契約に準拠せず JDK 7 エラーを生成していた Comparator 実装を修正しました。

    Android Plugin for Gradle リビジョン 1.1.2(2015 年 2 月)

    依存関係:
    • Gradle 2.2.1 以降。
    • Build Tools 21.1.1 以降。
    一般的な注意事項:
    • 単体テスト用のモック可能な JAR を作成する際のパスを標準化しました。
    • build.gradle ファイルの archivesBaseName の設定を修正しました。
    • ライブラリ テスト アプリをビルドするときにマニフェスト マージで発生していた未解決のプレースホルダ障害を修正しました。

    Android Plugin for Gradle リビジョン 1.1.1(2015 年 2 月)

    依存関係:
    • Gradle 2.2.1 以降。
    • Build Tools 21.1.1 以降。
    一般的な注意事項:
    • Wear アプリをパッケージ化するバリアントだけが Wear 固有のビルドタスクをトリガーするように、ビルド バリアントを変更しました。
    • 依存関係関連の問題がデバッグ時ではなくビルド時に失敗するように変更しました。この動作により、診断タスク(「依存関係」など)を実行して競合の解決に役立てられます。
    • 値を返すように android.getBootClasspath() メソッドを修正しました。

    Android Plugin for Gradle リビジョン 1.1.0(2015 年 2 月)

    依存関係:
    • Gradle 2.2.1 以降。
    • Build Tools 21.1.1 以降。
    一般的な注意事項:
    • 新しい単体テストのサポートを追加しました。
      • 一般的なモック フレームワーク(Mockito など)と互換性のある特別なバージョンの android.jar ファイルに対して、ローカル JVM 上で単体テストを実行できるようにしました。
      • プロダクト フレーバーを使用する場合の新しいテストタスク testDebugtestReleasetestMyFlavorDebug を追加しました。
      • 単体テストとして認識される新しいソースフォルダ src/test/java/src/testDebug/java/src/testMyFlavor/java/ を追加しました。
      • testCompile 'junit:junit:4.11'testMyFlavorCompile 'some:library:1.0' など、テスト専用の依存関係を宣言するための新しい設定を build.gradle ファイルに追加しました。

        注: 現在、テスト専用の依存関係は Jack(Java Android Compiler Kit)と互換性がありません。

      • モック可能な android.jar の動作を制御する android.testOptions.unitTests.returnDefaultValues オプションを追加しました。
    • テストタスク名の TestAndroidTest に置き換えました。たとえば、assembleDebugTest タスクは assembleDebugAndroidTest タスクになりました。単体テストタスクの名前には、引き続き UnitTest が含まれます(例: assembleDebugUnitTest)。
    • ProGuard 構成ファイルをテスト APK に適用しないように変更しました。圧縮が有効になっている場合、ProGuard はテスト APK を処理し、メイン APK の圧縮時に生成されるマッピング ファイルのみを適用します。
    • 依存関係の管理のアップデート
      • provided スコープと package スコープの使用に関する問題を修正しました。

        注: これらのスコープは AAR(Android ARchive)パッケージと互換性がなく、AAR パッケージによるビルドは失敗します。

      • テスト中のアプリとテストアプリの依存関係を比較するように依存関係の解決を変更しました。両方のアプリで同じバージョンのアーティファクトが見つかった場合、テストアプリには含まれず、テスト中のアプリにのみパッケージ化されます。両方のアプリで異なるバージョンのアーティファクトが見つかった場合、ビルドは失敗します。
    • リソース マージツールの anyDpi リソース修飾子のサポートを追加しました。
    • 多数の Android モジュールを含むプロジェクトの評価と IDE 同期の速度を改善しました。

    Android Plugin for Gradle リビジョン 1.0.1(2015 年 1 月)

    依存関係:
    • Gradle 2.2.1 から 2.3.x まで。

      注: このバージョンの Android Plugin for Gradle は、Gradle 2.4 以降と互換性がありません。

    • Build Tools 21.1.1 以降。
    一般的な注意事項:
    • extractReleaseAnnotations モジュールにアクセスするときの Gradle ビルドエラーに関する問題を修正しました。 (問題 81638)。
    • --no-optimize 設定を Dalvik Executable(dex)バイトコードに渡す Disable の問題を修正しました(問題 82662)。
    • 16 未満の targetSdkVersion でライブラリをインポートするときのマニフェスト マージの問題を修正しました。
    • JDK 8 で Android Studio を使用する場合の密度順序の問題を修正しました。

    Android Plugin for Gradle リビジョン 1.0.0(2014 年 12 月)

    依存関係:
    • Gradle 2.2.1 から 2.3.x まで。

      注: このバージョンの Android Plugin for Gradle は、Gradle 2.4 以降と互換性がありません。

    • Build Tools 21.1.1 以降。
    一般的な注意事項:
    • プラグインの初回リリース。