本記事は Android Studio2.2 preview2 時点での記事となります。
ダウンロードはこちらのページから可能です。

はじめに

Androidアプリ向けの統合開発環境(IDE)であるAndroid Studioがメジャーアップデートされ、様々な機能が追加・改善されています。 今回はそんなAndroid Studio 2の新機能について紹介します。

Instant Run

Android Studio2.0にてInstant Runという機能が追加されました。 Instant Runは開発中の動いているアプリを再インストールすることなく、実行したまま動的に修正を反映することができる機能です。Instant Runを用いることで作業時間を短縮し、開発効率を上げることが可能です。
実機・エミュレータ共にこの機能を使うことが可能ですが、APIレベルは15以上、debugビルド時のみ利用が可能です。

1. 設定

Android Studio2で新規にプロジェクトを作成すると自動でInstant Runが有効になります。

既存のプロジェクトをInstant Runに対応させる場合は、Preferences > Build, Execution, Deployment > Instant Run内のUpdate Projectを押すことで自動で設定を行ってくれます。

Instant Runへの対応

2. 実行

通常時のAndroid StudioのRun及びDebugのアイコンは以下のようになっていると思いますが、

通常時のRunとDebug

RunもしくはDebugを実行すると以下のように雷マークが表示されると思います。

Instant Run利用可能時のRun Instant Run利用可能時のDebug

この雷マークがついている状態がInstant Runの利用が可能な状態です。
この状態で雷マークのついたボタンを押すことでInstant Runを実行することができます。

Instant Runが実行されて変更が適応された場合は以下のようにトーストで変更が適応された旨や、Activityのリスタートに関する情報が表示されます。このトーストは設定画面から非表示にすることもできます。

Instant Run実行時

3. 挙動

Instant Run実行時の挙動は以下のとおりです。これらは自動的にどのパターンで処理が行われるのかが決まります。

  • hot swap
    • 主に既存のメソッドの実装内容を書き換えた場合
    • アプリの実行状態をそのままに、変更が反映されます。
  • warm swap
    • 主に文字列リソース等のリソースが変更・削除された場合
    • 実行中のプロセスを維持したまま、現在のActivityが再起動されます。
  • cold swap
    • 主にアノテーション、フィールド、メソッドのシグネチャーが変更された場合
    • アプリケーションが再起動されます。
    • cold swapはAPIレベルが21以上である必要があります。条件を満たさない場合は通常通りapkの再インストールが行われます。
  • deploys a new build
    • 主にAndroidManifest.xmlが変更された場合
    • 通常通りapkの再インストールが行われます。

詳しく知りたい方はこちらのユーザガイドを御覧ください。

4. その他

  • Preferences > Build, Execution, Deployment > Instant Runにて、Instant Runに関する設定ができます。

    Instant Runの設定

    • Instant Runを無効にしたい場合は、Enable Instant Run to ~ のチェックを外すことで無効にできます。
    • Restart activity on code changes の項目で、Activityを毎回リスタートするか否かの設定が可能です。デフォルトではActivityがリスタートされるようになっています。
    • Instant Run実行時のトーストの表示・非表示の設定はShow toasts in ~ の欄で変更可能です。
    • Show instant Run status notificationsはチェックを入れておくことで、Android Studioの左下にInstant Runに関する通知を表示してくれます。

      Instant Run notification

  • Activity#onCreateを修正した場合のように意図的にアプリをリスタートしたい場合もあると思います。その場合はRerunボタン( Rerunボタン )を押すことでアプリが終了し、インクリメンタルビルドが行われ、アプリがリスタートします。
    • クリーンビルドも行いたい場合は、メインメニューの Run > Clean and Rerun 'app'( Clean And Rerunボタン ) 、もしくはShiftを押しながらRerunボタンを押すことでクリーンビルドが行われ新しいAPKがインストールされます。
  • Android Studio 2.1からはincremental Java compilation、in-process dexの2つの新機能によりInstant Run及び通常のビルドの高速化がなされています。
    • in-process dexを有効にするためにはGradleデーモンが使用できるメモリ量を2GB以上にしなくてはなりません。gradle.propertiesファイルにてGradleデーモンが使用できるメモリ量を最低でも2GB以上に設定します。
      org.gradle.jvmargs=-Xmx2048m

Android エミュレータ

エミュレータにも様々な改善及び新機能が追加されています。

  • 以前のバージョンよりも高速になっています。また、ADBの強化によりデータをより高速にエミュレータにプッシュすることができます。

  • apkをエミュレータ上にドラッグ&ドロップすることにより簡易インストールを行うことができます。

  • 新しいユーザーインターフェースやセンサー制御が搭載されています。

    • エミュレータ本体の右側にあるツールバーで音量調整、回転や画面のキャプチャ等の操作を行うことができます。

      エミュレータのツールバー

      さらにツールバーの一番下にある三点リーダをクリックすることにより、コントロールのウインドウを開くことができます。このコントロールでは現在の位置情報をエミュレータ側に送信、バッテリーの状態を変更、電話の仮想呼び出し、SMSの仮想送信といった検証に役立つ機能が盛り込まれています。

      エミュレータのコントロールウインドウ

  • ウィンドウのサイズ変更・拡大

    • エミュレータのウインドウの端をドラッグすることによりウインドウのサイズを変更することができます。

emulatorのリサイズ・拡大

  • マルチタッチアクションの使用
    • CtrlまたはCommand(⌘)を押している間マルチタッチモードになります。
    • 「Your virtual device is not configured for multi-touch input.」のような警告が出てしまう場合は、SDK Managerから対象のSystem Imageを更新した上で再度AVD Managerから新しいVirtual Deviceを追加してみてください。

エミュレータ マルチタッチ

Cloud Test Labサービスの統合

Cloud Test Labはクラウド上で様々なデバイス・設定でAndroidアプリのテストを行えるサービスです。テスト結果はログや動画、スクリーンショット等で確認することもできます。もしテストコードを書いていない場合でも、Cloud Test Labが自動的に基本的なテストを実行してくれます。

Android Studio 2.0からは直接テストの実行・設定を行ったり、結果を確認することができます。詳しくはこちらを御覧ください。

App Indexingのコード生成とテスト

App IndexingはGoogle検索されたWebコンテンツとアプリのコンテンツを紐付けることができる機能です。App IndexによりGoogle検索の結果からシームレスにアプリ内コンテンツに遷移させることができます。

Android Studio2.0からはApp Indexingのコードの生成やテストをAndroid Studioから行える補助機能が追加されました。詳しくはこちらを御覧ください。

GPU Debugger

Android Studio 2.0からプレビュー版のGPU debuggerが追加されています。
OpenGL ESで作られているゲームやアプリの各フレーム情報や、GLステートを確認することができます。Android端末のGPUストリームをキャプチャ・分析することによってGLレンダリングの問題を発見・診断することが可能です。詳しくはこちらを御覧ください。

Jack & Jill

Android Studio 2.1からAndroidの新しいtoolchainであるJack & Jillが追加されています。Jackはコンパイラであり、Jillはリンカに相当します。詳しくはこちらを御覧ください。
また、Android Nのサポートと共にlambdaなどといった一部のJava8の機能をGingerbreadまで遡ってサポートをしています。 Stream、関数型インターフェース等の一部の機能はN以降でのサポートになります。

Android Studio 2.2ではAnnotation Processingのサポートが追加されています。

Constraint Layout

Android Studio 2.2で新しいLayout Editorと共に新しいレイアウトとしてConstraintLayoutが追加されました。iOSでいえば、XcodeのInterface BuilderとAutoLayoutに相当するものといえば解りやすいでしょうか?

Android 2.3 (Gingerbread)以上でConstraintLayoutを使用できます。実際にはConstraint(制約)をViewに対して設定することによってレイアウトを決定します。これによってネスト構造を減らし、よりフラットなxmlを生成することができます。ただし、新しいLayout EditorはAndroid Studio 2.2以上でないと使用することはできません。

詳しくは第2回・Constraint Layout についてを御覧ください。

Layout Inspector

Android Studio 2.2でLayout Inspectorという機能が追加されました。この機能はAndroid Device Monitorに以前からあったHierarchy Viewerと似た機能で、現在の画面を解析してのViewの階層や各Viewのプロパティについて表示してくれます。 Android MonitorウインドウにあるLayout Inspectorアイコン( layoutInspector )をクリックすることで現在の画面をキャプチャして解析・結果を表示します。

layoutInspectorの結果

Firebase Plugin

FirebaseはGoogleが以前買収したアプリ開発のためのバックエンドサービスです。 Android Studio 2.2ではFirebase pluginが導入され、メニューのTools > Firebaseから開くことができるAssistantウインドウからFirebaseに関する操作を行うことができます。

AssistantウインドウからはFirebaseプロジェクトの新規作成や、Firebaseの各種サービスのアプリへの追加が可能です。

FirebasePlugin

Code Sample Browser

Android Studio 2.2ではGoogleが提供している高品質なサンプルサンプルコードを探して閲覧することができる機能が追加されました。サンプルを閲覧したいクラス等を右クリック > Find Sample Codeを選択することによってサンプル一覧が表示されます。後は閲覧したいファイルを選択することによってサンプルコードを閲覧することができます。

CodeSampleBrowser

Merged Manifest Viewer

Android Studio 2.2からAndroidManifest.xmlを開いた際にMerged Manifestというタブが追加されています。このタブで現在のbuild typeやflavor、ライブラリ等からどのようなAndroidManifest.xmlがマージ・生成されるのかを確認することができます。

画面の左側には生成されるAndroidManifest.xmlの内容、右側には選択した要素のマージに関する情報が表示されます。

Merged Manifest Viewer

Espresso Test Recorder

EspressoはGoogleが開発を行っているAndroidのUIテストフレームワークです。Android Studio 2.2ではこのEspresso向けの機能としてEspresso Test Recorderが追加されています。今までテストは自分で書く必要がありましたが、Espresso Test Recorderではアプリを操作し、この操作を元にしてテストを作成してくれます。メニューからRun > Record Espresso Testを選択することで利用が可能です。

※ Android Studio 2.2 preview2時点ではまだ利用ができませんのでご注意下さい。

APK Analyzer

Android Studio 2.2で追加されたAPK Analyzerではapkを解析し、中に含まれるファイルのサイズやGoogle Playからダウンロードする際のサイズ、定義されているメソッドの数やリファレンス数等を確認することができます。メソッドの64K問題を回避するためにも役立てることができます。

使用するにはメニューのBuilds > Analyze APK…を選択し、対象となるapkを選択することで解析が始まります。

APK Analyzer

まとめ

Android Studio2に追加された主な新機能をついて紹介しました。便利な機能がどんどん追加されていますので、開発効率を上げるためにも積極的に使用してみてはいかがでしょうか。