Android Studio 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 アップデート情報もご覧ください。