この記事は Scott Swarthout による Android Developers Blog の記事 "Android studio 4.1" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。


2020 年 10 月 12 日(日本時間 10 月 13 日)、Android Studio 4.1 の安定版がリリースされました。編集、デバッグ、最適化の一般的なユースケースに対応する一連の機能が追加されています。今回のリリースの主なテーマは、Android Jetpack ライブラリを使う際の生産性向上でした。Android Jetpack とは、デベロッパーがベスト プラクティスに従って速くコードを書けるようにするための Android ライブラリ スイートです。皆さんからのフィードバックに基づき、コード編集操作にたくさんの改善を行ったほか、よく使われる Android ライブラリを IDE に統合しています。

Android Studio 4.1 で注目すべき機能には、アプリのデータベースを照会できる新しい Database Inspector、依存性注入に Dagger または Hilt を使うプロジェクトのナビゲーションのサポート、オンデバイス機械学習のサポート向上(Android プロジェクトでの TensorFlow Lite モデルのサポートを含む)などがあります。さらに、変更の適用を更新してデプロイを高速化しました。皆さんからのフィードバックに基づき、ゲーム デベロッパーに役立つ変更も行いました。新しいネイティブ メモリ プロファイラとスタンドアロン プロファイリング ツールを導入しています。

私たちは、Android Studio の品質を向上するため、バグやパフォーマンスの問題に懸命に対応してきました。多くのデベロッパーの皆さんから、パフォーマンスと信頼性の向上に主眼を置いていることを評価する声が届いています。今回のリリース サイクルでは、2,370 個のバグを修正し、公開されていた 275 個の問題をクローズしたことをご報告します。デベロッパーの皆さんの生産性にとって鍵となるのは、高い品質です。私たちはこれからも高い品質を維持することをお約束します。


プレビュー リリースで早くからフィードバックを寄せてくださった皆さん、ありがとうございました。皆さんからのフィードバックは Android Studio 4.1 の開発にあたって反復作業や機能改善に役立ちました。最新の安定版リリースを使う準備が整い、新たな生産性機能を使ってみたい方は、Android Studio 4.1 をこちらからダウンロードしてください。


続いて、主なデベロッパー フローごとに分類された、Android Studio 4.1 のすべての新機能をご紹介します。



デザイン

マテリアル デザイン コンポーネントのアップデート

新しいプロジェクトを作成する際のダイアログに表示される Android Studio のテンプレートが、マテリアル デザイン コンポーネント(MDC)を使ったものになりました。デフォルトで、テーマとスタイルの最新ガイドに準拠しています。この変更により、推奨のマテリアル スタイル パターンや、ダークテーマなどの最新の UI 機能を簡単に使えるようになります。


プロジェクト テンプレートのマテリアル デザイン コンポーネントのアップデート


アップデートには、以下の内容が含まれています。

  • MDC: プロジェクトは、build.gradle の com.google.android.material:material を利用します。ベースとなるアプリのテーマの親が Theme.MaterialComponents.* になり、アップデートされた MDC の色と「on」属性をオーバーライドします。

  • カラーリソース: colors.xml のカラーリソースは色の名前を使います(たとえば、colorPrimary ではなく purple_500 となります)。

  • テーマリソース: テーマリソースが(styles.xml ではなく)themes.xml に格納され、Theme.<ApplicationName> 名を使います。

  • ダークテーマ: ベースとなるアプリのテーマの親が DayNight になり、res/values と res/values-night に分割されます。

  • テーマ属性: 色のハードコードを避けるため、レイアウトとスタイルのカラーリソースはテーマ属性(たとえば、?attr/colorPrimary)として参照されます。


開発

Database Inspector

新しい Database Inspector では、アプリのデータベースを簡単に調査、照会、変更できるようにしたいと考えました。この機能を使ってみるには、API レベル 26 以降を実行しているデバイスにアプリをデプロイし、メニューバーから [View] > [Tool Windows] > [Database Inspector] を選択します。アプリで Jetpack Room ライブラリを使っている場合でも、Android プラットフォーム バージョンの SQLite を直接使っている場合でも、実行中のアプリのデータベースやテーブルを簡単に調査したり、カスタムクエリを実行したりできます。


Android Studio は、アプリを調査しているときもライブ接続を維持しているので、Database Inspector を使って値を変更し、実行中のアプリで変更内容を確認することもできます。Room 永続化ライブラリを使っている場合は、コードエディタの各クエリの隣にも実行ボタンが表示されるので、@Query アノテーションで定義したクエリをすばやく実行できます。詳細はこちらをご覧ください


Database Inspector でアプリのデータベースを調査、照会、変更


Android Studio の中で直接 Android Emulator を実行

Android Studio の中で直接 Android Emulator を実行できるようになりました。この機能を使うと、画面スペースを節約したり、ホットキーでエミュレータとエディタのウィンドウ間をすばやく移動したり、1 つのアプリケーション ウィンドウの中で IDE とエミュレータのワークフローを整理したりできます。なお、スナップショットの管理や、回転やスクリーンショットなどの一般的なエミュレータ操作は Studio から行うことができますが、すべてのオプションにアクセスするには、安定版のエミュレータを実行する必要があります。この機能は、次の操作でオプトインできます。


[File] → [Settings] → [Tools] → [Emulator] → [Launch in Tool Window]


Android Studio の中で Android Emulator を実行


Dagger ナビゲーション サポート

Dagger は、Android で依存性注入を行う際によく使われるライブラリです。Android Studio は、新しいガター アクションを提供し、[Find Usages] ウィンドウのサポートを強化することで、Dagger 関連のコードを簡単に移動できるようにしています。たとえば、ある型を使うメソッドの隣にある ガターアクションをクリックすると、その型の提供元が開きます。逆に、ガター アクションをクリックすると、型が依存関係として使われている場所が開きます。Android Studio は、Jetpack Hilt ライブラリで定義された依存関係のナビゲーション操作もサポートします。詳細はこちらをご覧ください


ガター アクションで Dagger 関連のコード間を移動


TensorFlow Lite モデルの利用

Android デベロッパーは、機械学習を使って革新的で便利な体験を生み出しています。TensorFlow Lite は、モバイル機械学習モデルを記述する際によく使われるライブラリです。私たちは、こういったモデルを Android アプリに簡単にインポートできるようにしたいと考えました。Android Studio は、ビューのバインディングと同じような使いやすいクラスを生成してくれます。そのため、少量の型安全なコードでモデルを実行できます。ML モデル バインディングの現在の実装では、メタデータで拡張されたイメージ分類とスタイル変換のモデルがサポートされています。

インポートしたモデルの詳細やアプリでモデルを使う手順は、プロジェクトで .tflite モデルファイルをダブルクリックし、モデルビューアのページを開くと確認できます。詳細はこちらをご覧ください


Android Studio 4.1 で TensorFlow Lite モデルのメタデータを確認


ビルドとテスト

Android Emulator - 折りたたみ式デバイスのヒンジのサポート

Android Studio


Android エミュレータは、最近追加された 5G 携帯通信のテストに加え、折りたたみ式デバイスもサポートします。Android Emulator 30.0.26 以降では、さまざまなデザインや設定の折りたたみ式デバイスを設定できます。折りたたみ式デバイスを設定すると、エミュレータはヒンジ角度センサーのアップデートと姿勢の変化を報告するようになります。そのため、このフォーム ファクタに対してアプリがどのように応答するかをテストできます。詳しくは、ブログ投稿 Developing for Android 11 with the Android Emulatorをご覧ください。



変更の適用のアップデート

ビルドが速くなれば、デベロッパーは短時間で簡単にアプリを変更できるようになります。アプリに対する反復作業の生産性を上げるため、Android 11 以降を実行しているデバイス向けに、変更の適用機能を強化しました。


私たちは反復作業にかかる時間の短縮に本格的に取り組み、アプリをインストールすることなく変更をデバイスにデプロイして永続化する方法を開発しました。一度 Android 11 デバイスにデプロイすれば、それ以降、コードの変更の適用 [Apply Code Changes] または変更を適用してアクティビティを再起動 [Apply Changes and Restart Activity] する場合のデプロイが大幅に速くなります。さらに、変更の適用でコードの変更のサポートが強化されています。メソッドを追加した場合でも、コードの変更の適用 [Apply Code Changes] または変更を適用してアクティビティを再起動 [Apply Changes and Restart Activity] のどちらかをクリックすることで、実行中のアプリに変更をデプロイできるようになっています。


AAR から C/C++ の依存関係をエクスポート


Android Gradle プラグイン 4.0 には、AAR の依存関係の Prefab パッケージをインポートする機能が追加されています。この機能については、ネイティブ ライブラリの共有もサポートするように拡張したいと考えていました。AGP バージョン 4.1 を利用すると、Android ライブラリ プロジェクト用の AAR に格納されている外部ネイティブ ビルドからライブラリをエクスポートできます。ネイティブ ライブラリをエクスポートするには、ライブラリ プロジェクトの build.gradle ファイルの android ブロックに以下を追加します。

buildFeatures {
    prefabPublishing true
}

prefab {
    mylibrary {
      headers "src/main/cpp/mylibrary/include"
    }

    myotherlibrary {
        headers "src/main/cpp/myotherlibrary/include"
    }
}


ネイティブ クラッシュ レポートのシンボリケーション


ネイティブ コードでクラッシュや ANR が発生した場合、システムはスタック トレースを生成します。これは、クラッシュした瞬間までにプログラムがネストして呼び出した一連の関数のスナップショットです。このスナップショットは、ソースの問題を特定して修正する際に役立つ可能性がありますが、マシンのアドレスを人間が読むことができる関数名に戻すため、まずシンボリケーションを行う必要があります。


C++ などのネイティブ コードを使ってアプリやゲームを開発する場合、アプリのバージョンごとにデバッグ シンボル ファイルを Play Console にアップロードできるようになりました。Play Console は、このデバッグ シンボル ファイルを使ってアプリのスタック トレースのシンボリケーションを行い、クラッシュや ANR を解析しやすくします。App Bundle にデバッグ シンボルを含めるには、プロジェクトの build.gradle ファイルに次の行を追加します。


android.buildTypes.release.ndk.debugSymbolLevel = 'SYMBOL_TABLE'


最適化

システム トレース UI の改善

Android Studio 4.1 では、システム トレースを大幅に見直しました。システム トレースは、アプリがシステム リソースをどのくらい使っているかをリアルタイムで確認できる最適化ツールです。今回は、ボックス選択モードでトレースを簡単に選択できるようにし、新しい解析タブを追加し、アプリの UI のレンダリングに関する問題を調査できるように詳しいフレーム レンダリング データを追加しました。詳細はこちら(英語)をご覧ください


ボックス選択: [Threads] セクションで、マウスをドラッグすると、四角形の領域をボックス選択できるようになりました。右上の [Zoom to Selection] ボタンをクリックする(または M キーボード ショートカットを使う)と、ズームできます。また、隣り合っている似たようなスレッドをドラッグ&ドロップすると、複数のスレッドをまたいで選択し、同時に調査できます。


ボックス選択でトレースの選択がさらに簡単に


Summary タブ: [Analysis] パネルに新しく [Summary] タブを追加しました。このタブには、以下の内容が表示されます。


  • 発生回数、最短時間、最長時間など、特定のイベントのすべての発生に関する統計の集計

  • 選択したイベントの統計のトレース

  • スレッドの状態分布データ

  • 選択したトレース イベントの最長実行時間


[Summary] タブに集計した統計を表示


データの表示: [Display] セクションに SurfaceFlingerVSYNC の新しいタイムラインが追加されました。アプリの UI のレンダリング問題を調査する際に役立ちます。


スタンドアロン プロファイラ

Android Studio のメイン ウィンドウとは別のウィンドウで Android Studio のプロファイラにアクセスできるようになりました。この機能は、Unity や Visual Studio など、別のツールで構築した Android ゲームを最適化する場合に便利です。

スタンドアロン プロファイラを実行するには、以下の操作を行います。


  1. システムで Android Studio のプロファイラが起動していないことを確認します。

  2. インストール ディレクトリの中にある bin ディレクトリに移動します。

  • Windows/Linux: <studio-installation-folder>\bin
  • macOS: <studio-installation-folder>/Contents/bin

  • OS に応じて、profiler.exe または profiler.sh を実行します。

  • スタンドアロン プロファイラから Android Emulator や接続されているデバイスに接続できるようになります。

  • スタンドアロン Android Studio プロファイラでアプリを最適化

    Native Memory Profiler



    ゲーム デベロッパーや C++ を使っているデベロッパーにとって重要なのは、ネイティブ メモリの使用量をトラッキングし、アプリのメモリ消費を最適化する方法を理解することです。Android Studio の Memory Profiler に、Native Memory Profiler が含まれるようになりました。Android 10 以降を実行する実機にデプロイしたアプリが対象になります。Native Memory Profiler は、特定の時間帯におけるネイティブ コードのオブジェクトの割り当てや割り当て解除をトラッキングし、合計割り当て量やシステムヒープの残量についての情報を提供します。


    Memory Profiler ウィンドウの上部にある [Record native allocations] をクリックすると、記録を開始します。


    Native Memory Profiler でネイティブ メモリの割り当てを確認



    Android Studio 4.1 に含まれる主な機能拡張と新機能


    デザイン


    • マテリアル デザイン コンポーネントのアップデート


    開発


    • Database Inspector
    • Android Studio の中で直接 Android Emulator を実行
    • Dagger ナビゲーション サポート
    • TensorFlow Lite モデルの利用


    ビルドとテスト


    • Android Emulator - 折りたたみ式デバイスのヒンジのサポート
    • 変更の適用のアップデート
    • AAR から C/C++ の依存関係をエクスポート
    • ネイティブ クラッシュ レポートのシンボリケーション


    最適化


    • システム トレース UI の改善
    • スタンドアロン プロファイラ
    • Native Memory Profiler


    本資料は、Unity Technologies やその関連会社による提供または提携ではありません。“Unity” は、米国およびその他の場所における Unity Technologies またはその関連会社の商標または登録商標です。