Android Studio 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] タブで行うことができます。

詳細については、スナップショットをご覧ください。

エミュレータの新機能と変更点については、エミュレータ リリースノートをご覧ください。