プレビュー版 Android Studio の新機能

Android Studio 3.1.4 は Stable チャンネルにリリース済みです。 こちらからダウンロードできます。

Android Studio 3.3 は現在、Canary チャンネルと Dev チャンネルにリリースされています。

Android Studio 3.2 は現在、Beta チャンネルにリリースされています。

このページでは、上記のプレビュー版における新機能と変更内容の概要を紹介します。

各リリースでの重要な修正のリストを含め、リリースに関する最新情報については、リリース アップデート情報もご覧ください。

プレビュー版 Android Studio の使用で問題が発生した場合は、お知らせください。ご提出いただいたバグレポートは、Android Studio の改善に役立たせていただきます。

Android Studio 3.3

ここでは、Android Studio 3.3 の新機能と変更内容の概要を紹介します。

[Show Gradle Daemons] ダイアログ

アクティブな Gradle デーモンのリストを Android Studio で確認できるようになりました。このリストを表示するには、Shift キーを 2 回押して [Search Everywhere] ダイアログを表示し、「Show Gradle Daemons」と入力して、表示された結果の「Show Gradle Daemons」をクリックします。

R8 がデフォルトで有効

R8 はコードの圧縮と難読化用の新しいツールで、ProGuard の後継です。この R8 はデフォルトで有効です。R8 で問題が発生した場合は、バグを報告してください。R8 を無効にするには、プロジェクトの gradle.properties ファイルに以下の行を追加してください。

android.enableR8 = false

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

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

Android Studio 3.3 Canary 6 以上を使用してプロジェクトを同期する場合は、この最適化を有効にするよう求めるメッセージが IDE に表示されます。

手動でこの最適化を有効にするには、[File] > [Settings] > [Experimental] > [Gradle](Mac の場合は [Android Studio] > [Preferences] > [Experimental] > [Gradle])をクリックし、[Only resolve selected variants] チェックボックスをオンにします。

[Project Structure] ダイアログの更新

Android Studio 3.3 Canary 4 では、[Project Structure] ダイアログが更新されました。メニューバーで [File] > [Project Structure] を選択してダイアログを開くと、次の新しい機能でプロジェクトの構成を管理できます。

  • プロジェクトの同期の際に Gradle によって解決された、プロジェクトの実際の構造を可視化できます。たとえば、各モジュールの依存関係を確認できます。
  • ライブラリ依存関係の新しいバージョンが利用可能になったときに通知を受け取ることができます。
  • build.gradle ファイルを手動で編集することなく、ダイアログの UI でプロジェクトを構成できます。

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

使用統計情報の共有を有効にして Android Studio の改善にご協力いただいている場合は、IDE ウィンドウの下部のステータスバーに 2 つの新しいアイコン が表示されるようになりました。

IDE の現在の操作性を適切に表すアイコンをクリックすると、IDE から使用統計情報が送信されます。これにより、Android Studio チームは使い勝手をより正確に把握できます。また、IDE に不具合があった場合などは、追加フィードバックを提供することもできます。

まだ利用したことがない場合は、[Settings] ダイアログ(Mac では [Preferences])を開き、[Appearance & Behavior] > [System Settings] > [Data Sharing] に移動して [Send usage statistics to Google] をクリックすると、使用統計情報の共有を有効にできます。

C++ カスタマイズ用オプションの削除

[Customize C++ Support] ダイアログから次のオプションが削除されました。

  • Exceptions Support(-fexceptions)
  • Runtime Type Information Support(-ftti)

各サポートは、Android Studio で作成されたすべてのプロジェクトで有効となります。

Android Studio 3.2

ここでは、Android Studio 3.2 の新機能と変更内容の概要を紹介します。

新しい [Assistant] パネル

Android Studio 3.2 には、新しい [Assistant] パネルが追加されました。Android Studio の最新の変更内容はこのパネルで確認できます。

お知らせする新しい情報があると、Android Studio の起動時にこのパネルが自動的に表示されます。また、[Help] > [What's new in Android Studio] を選択して [Assistant] パネルを開くこともできます。

Android Jetpack

Android Jetpack は、Android アプリ開発の効率化に役立つコンポーネント、ツール、ガイダンスの集合です。繰り返しタスクが排除され、高品質でテスト可能なアプリを短時間で簡単に作成できるようになります。Android Studio には、Jetpack をサポートするための次のアップデートが含まれています。詳しくは、Jetpack のドキュメントをご覧ください。

新しいナビゲーション エディタは Android Jetpack のナビゲーション コンポーネントと統合され、グラフィック ビューでアプリのナビゲーション構造を作成できます。ナビゲーション エディタにより、アプリ内の宛先間のナビゲーションのデザインと実装が簡素化されます。

Android Studio 3.2 では、ナビゲーション エディタは試験運用版です。ナビゲーション エディタを有効にするには、[File] > [Settings](Mac では [Android Studio] > [Preferences])をクリックし、左側のペインで [Experimental] カテゴリを選択し、[Enable Navigation Editor] チェックボックスをオンにします。

詳しくは、ナビゲーション エディタのドキュメントをご覧ください。

AndroidX の移行

Jetpack の一環として、androidx 名前空間を使用して Android Support Library を新しい Android 拡張ライブラリに移行しました。詳しくは、AndroidX の発表をご覧ください。

Android Studio 3.2 では、この処理に新しい移行機能を利用できます。

既存のプロジェクトを AndroidX に移行するには、[Refactor] > [Migrate to AndroidX] を選択します。AndroidX 名前空間に移行されなかった Maven 依存関係がある場合は、Android Studio ビルドシステムによってこの依存関係も自動的に変換されます。

Android Gradle プラグインには、gradle.properties ファイルで設定できる次のグローバル フラグが用意されています。

  • android.useAndroidX: このフラグを true に設定した場合は、AndroidX を今すぐ使い始めることを示します。このフラグがない場合は、false に設定されているものと見なされます。
  • android.enableJetifier: このフラグを true に設定した場合は、既存のサードパーティ ライブラリを AndroidX 向けに作成されているように自動的に変換する(Android Gradle プラグインの)ツールのサポートが必要であることを示します。このフラグがない場合は、false に設定されているものと見なされます。

[Migrate to AndroidX] を使用すると、両方のフラグが true に設定されます。

AndroidX ライブラリをすぐに使い始めたいが、既存のサードパーティ ライブラリの変換は必要ない場合は、android.useAndroidX フラグを true に設定し、android.enableJetifier フラグを false に設定します。

Android App Bundle

Android App Bundle は新しいアップロード形式で、アプリのコンパイル済みコードとリソースはすべてここに含まれますが、APK の生成と署名は Google Play ストアで行います。

Google Play の新しいアプリ配信モデルである「Dynamic Delivery」では、App Bundle を使用して、個々のユーザーの端末設定に合わせて最適化された APK を生成、配信します。このため、各ユーザーは、アプリの実行に必要なコードとリソースのみのダウンロードで済みます。デベロッパー側では複数の APK を生成、署名、管理する必要がなくなり、ユーザー側ではダウンロードが小さい容量で済み、より最適化されます。

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

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

Android App Bundle の作成、分析の手順など、詳しくは、Android App Bundle のスタートガイドをご覧ください。

レイアウト エディタのサンプルデータ

多くの Android レイアウトにはランタイム データが含まれているため、アプリ開発の設計段階でレイアウトのデザインを可視化することは難しくなる可能性があります。そこで、レイアウト エディタのサンプルデータを利用して、ビューのプレビューを簡単に確認できるようになりました。ビューを追加すると、[Design] ウィンドウでビューの下に ボタンが表示されます。このボタンをクリックして、設計時のビューの属性を設定します。さまざまなサンプルデータ テンプレートの中から選択し、ビューの生成に使う数多くのサンプル項目を指定することができます。

サンプルデータを使ってみるには、新しいレイアウトに RecyclerView を追加し、ビューの下にある設計時の属性ボタン をクリックして、サンプルデータ テンプレートのカルーセルから 1 つのテンプレートを選択します。

スライス

スライスは、Android の他のユーザー インターフェース サーフェスにアプリの機能の一部を埋め込む新しい方法です。たとえば、スライスを使うことで、Google 検索の候補にアプリの機能やコンテンツを表示できます。

Android Studio 3.2 には、新しい Slice Provider API でアプリを拡張できる組み込みテンプレートがあります。また、新しい lint チェックを使えば、おすすめの方法に沿ってスライスを作成することもできます。

始めに、プロジェクト フォルダを右クリックし、[New] > [Other] > [Slice Provider] を選択します。

スライスの結果をテストする方法など、詳しくは、スライスのスタートガイドをご覧ください。

IntelliJ IDEA 2018.1.1

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

Android プロファイラ

Android Studio 3.2 の最新バージョンで、次の新しい Android プロファイラの機能をお試しください。

エネルギー プロファイラ

エネルギー プロファイラには、アプリの推定エネルギー使用量のグラフが表示されます。

Android 8.0(API 26)以上が搭載されている接続済みの端末や Android エミュレータでアプリを実行すると、エネルギー プロファイラが [Profiler] ウィンドウの一番下に新しい行として表示されます。

[Energy] 行をクリックすると、エネルギー プロファイラ ビューが最大化されます。マウスポインタをタイムラインのバーに置くと、エネルギー使用量の内訳が CPU 別、ネットワーク別、地域(GPS)リソース別や、起動ロック、アラーム、ジョブなどのシステム イベント別に表示されます。

セッション

プロファイラのデータを「セッション」として保存し、後で再確認したり検査したりできるようになりました(IDE を再起動するまで、プロファイラはセッションのデータを維持します)。

メインメニューで [Run] > [Profile] を選択してアプリをデプロイした後、 をクリックし、プルダウン メニューからアプリのプロセスを選択して、新しいセッションを開始します。

メソッド トレースを記録したり、ヒープダンプを取得したりすると、IDE によりそのデータが(アプリのネットワーク アクティビティとともに)個別のエントリとして現在のセッションに追加されます。記録内容を簡単に切り替えてデータを比較できます。現在のセッションへのデータの追加を停止するには、 をクリックします。

システム トレース

CPU プロファイラで、新しい [System Trace] の設定を選択すると、端末のシステム CPU やスレッド アクティビティを検査できます。このトレースの設定は systrace をベースとし、ぎこちない UI など、システムレベルの問題を調査する場合に役立ちます。

この新しいトレースの設定を使用している場合は、Trace クラスでコードをインストルメント化することでプロファイラのタイムラインで重要なコード ルーティンを簡単にマークできます。

メモリ プロファイラでの JNI 参照の検査

Android 8.0(API レベル 26)以上を搭載する端末にアプリをデプロイする場合、メモリ プロファイラを使用してアプリの JNI コードのメモリ割り当てを検査できるようになりました。

アプリを実行している状態で、検査対象のタイムライン部分を選択し、下記のように、クラスリストの上のプルダウン メニューで JNI ヒープを選択します。これで、通常のようにヒープ内のオブジェクトを検査できます。[Allocation Call Stack] タブでオブジェクトをダブルクリックすると、コード内のどこで JNI 参照の割り当てと解除が行われるかを確認できます。

メモリヒープ ダンプファイルのインポートと検査

メモリ プロファイラで作成した .hprof メモリヒープ ダンプファイルをインポートして検査できるようになりました。

.hprof ファイルをインポートするには、プロファイラの [Sessions] パネルで [Start new profiler session] をクリックし、[Load from file] を選択します。他のヒープダンプと同じように、メモリ プロファイラでこのファイルのデータを検査できます。

アプリ起動時の 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 プロファイラで CPU アクティビティを記録した後、そのデータを .trace ファイルとしてエクスポートして、他のデベロッパーと共有したり後で検査したりできます。

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

  1. CPU タイムラインからエクスポートする記録を右クリックします。
  2. プルダウン メニューで [Export trace] を選択します。
  3. ファイルの保存先に移動し、[Save] をクリックします。

CPU トレース ファイルのインポートと検査

Debug APICPU プロファイラで作成した .trace ファイルをインポートして検査できるようになりました(現時点では、システム トレースの記録をインポートすることはできません)。

トレース ファイルをインポートするには、プロファイラの [Sessions] パネルで [Start new profiler session] をクリックし、[Load from file] を選択します。CPU プロファイラでこのデータを検査する方法は、通常とほぼ同じですが、例外がいくつかあります。

  • CPU ライムラインに CPU アクティビティは表示されません。
  • スレッド アクティビティのタイムラインに示されるのは、実際のスレッド状態(実行中、待機中、スリープ中など)ではなく、各スレッドのトレースデータが利用可能な場所のみです。

Debug API を使用した CPU アクティビティの記録

Debug API でアプリをインストルメント化することで、CPU プロファイラで CPU アクティビティの記録を開始、停止できるようになりました。端末にアプリをデプロイすると、アプリが startMethodTracing(String tracePath) を呼び出したときにプロファイラによって CPU アクティビティの記録が自動的に開始されます。アプリが stopMethodTracing() を呼び出すと、記録は停止されます。この API を使ってトリガーされた CPU アクティビティを記録している場合、CPU プロファイラには、選択した CPU 記録構成として Debug API が表示されます。

lint チェック

Android Studio 3.2 には、lint チェック用の新機能や改善された機能が数多く含まれています。

Java / Kotlin 相互運用性の lint チェック

Java コードと Kotlin コードの相互運用性を確保するため、新しい lint チェックでは、Kotlin Interop Guide に記載されているおすすめの設定が適用されます。このチェックには、null 可能性のアノテーションがあるかどうかの検索、Kotlin ハード キーワードの使用、lambda パラメータが最後に配置されているかどうかの確認などが含まれます。

このチェックを有効にするには、[File] > [Preferences] > [Editor] > [Inspections] に移動し、下記のように、[Kotlin Interoperability] で有効にするルールのチェックボックスをオンにします。チェックを実行するには、メインメニューで [Analyze] > [Inspect Code] を選択します。

コマンドライン ビルドでこのチェックを有効にするには、build.gradle ファイルに次の行を追加します。

android {
    lintOptions {
        check 'Interoperability'
    }
}

スライス用 lint チェック

スライス用の新しい lint チェックを利用すれば、スライスが正しく作成されていることを確認できます。たとえば、スライスにメイン アクションを割り当てていないと、lint チェックで警告が発行されます。

その他の新しい lint チェック

上記のスライスや Kotlin の相互運用性に対する lint チェックのほか、Android Studio 3.2 には、一般的なコード問題の判定や特定に役立つ新しい 20 個の lint チェックが実装されています。新しいチェック機能は、潜在的なユーザビリティ問題についての警告から、潜在的なセキュリティの脆弱性に関連する優先度の高いエラーまで、多岐に渡ります。

新しい Gradle ターゲット

新しい Gradle タスク lintFix を使用することで、lint チェックで推奨された安全なすべてのフィックスをソースコードに直接適用できます。適用対象の安全なフィックスを推奨する lint チェックの例として SyntheticAccessor があります。

メタデータの更新

サービス キャスト チェックなど、各種のメタデータが更新され、Android P デベロッパー プレビューで lint チェックを実行できるようになりました。

新しいバリアントで lint を実行すると警告

lint では、どのバリアントやバージョンでベースラインが記録されているかが記録されるようになったため、ベースラインを作成したバリアントとは別のバリアントで lint を実行すると、警告が発行されます。

既存の lint チェックの改善

Android Studio 3.2 では、既存の lint チェックが数多く改善されています。たとえば、リソース サイクル チェックを適用できるリソースタイプが追加されました。また、翻訳検出機能では、エディタで、その場で翻訳抜けを探せるようになりました。

問題 ID の検出可能性の向上

[Inspection Results] ウィンドウなど、多くの場所に問題 ID が表示されるようになり、build.gradlelintOptions で特定のチェックを有効、無効にするために必要な情報を特定しやすくなりました。

詳しくは、Gradle での lint オプションの設定についての説明をご覧ください。

Data Binding V2

Data Binding V2 がデフォルトで有効になりました。Data Binding V2 は V1 と互換性があります。つまり、V1 でコンパイルしたライブラリ依存関係を、Data Binding V2 を使用しているプロジェクトで使用できます。ただし、V2 でコンパイルした依存関係を、V1 を使用しているプロジェクトで使用することはできません。

D8 の desugar

Android Studio 3.1 では、ビルド時間全体を短縮するよう、試験運用版の機能として desugar ステップが D8 ツールに統合されました。Android Studio 3.2 では、D8 の desugar がデフォルトで有効になりました。

新しいコード圧縮ツール

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

android.enableR8 = true

マルチ APK 向けのデフォルト ABI の変更

それぞれ異なる ABI をターゲットとする複数の APK を作成する場合、プラグインで、mipsmips64armeabi の ABI 用の APK がデフォルトで生成されなくなりました。

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

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

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

CMake を使用してプロジェクトに C コードや C++ コードを追加すると、CMake ビルド スクリプトを編集する際に、Android Studio で次のような改善されたエディタ機能を利用できるようになりました。

  • 構文ハイライト表示とコード補完: IDE で、一般的な CMake コマンドがハイライト表示され、おすすめのコード補完が提示されるようになりました。また、Ctrl キー(MacOS では 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 の作成にかかわらず、Gradle の Android プラグインにより、minSdkVersion=21 以上に設定されているすべてのモジュールでネイティブの multidex が有効になります。

AAPT2 が Google の Maven リポジトリに移動

Android Studio 3.2 Canary 11 から、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-alpha12'
      }
  } allprojects {
      repositories {
          google() // and here
          jcenter()
  }

新しいバージョンの AAPT2 では、Windows での非 ASCII 文字の処理の改善など、多くの問題が修正されています。

オンデマンド設定の削除

Android Studio から [Configure on demand] が削除されました。

Android Studio から Gradle への --configure-on-demand 引数の受け渡しは行われなくなりました。

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] タブで行えるようになりました。

詳しくは、Android Emulator 27.3.0 Canary のリリースノートをご覧ください。