Android
Android Studioでインスタント実行
サーチ…
備考
インスタント・ランは、アプリケーションのコードで実行されるeevry変更の完全なビルドと再インストールを必要とせずに、より高速なデバッグを可能にするrunおよびdebugコマンドの拡張動作です。
Android Studio 2.0で導入されたInstant Runは、アプリの更新間隔を大幅に短縮するRunおよびDebugコマンドの動作です。最初のビルドが完了するまでに時間がかかることがありますが、Instant Runは、新しいAPKを構築することなく、その後のアップデートをアプリにプッシュするので、変更がはるかに迅速に表示されます。
インスタント実行は、デバッグビルドバリアントをデプロイし、AndroidプラグインをGradleバージョン2.0.0以上で使用し、アプリのモジュールレベルbuild.gradleファイルでminSdkVersionを15以上に設定した場合にのみサポートされます。最高のパフォーマンスを得るには、minSdkVersionを21以上に設定します。
アプリをデプロイすると、[実行]ボタン(または[デバッグ]ボタン)に小さな黄色の雷アイコンが表示され、次回にボタンをクリックしたときにインスタント・ランが更新をプッシュする準備ができていることが示されます。新しいAPKを構築するのではなく、新しい変更をプッシュするだけでなく、場合によっては再起動する必要もなく、すぐにそのコード変更の効果を表示することができます。
Instant Runはホットスワップ、ウォームスワップ、またはコールドスワップを実行して、更新されたコードとリソースを接続されたデバイスまたはエミュレータにプッシュします。変更のタイプに基づいて実行するスワップのタイプを自動的に決定します。上のビデオは、これがどのようにしてボンネットの下で動作するかについての興味深い詳細を提供します。ただし、特定のコード変更をターゲットデバイスにプッシュする際にInstant Runがどのように動作するかの簡単な概要については、次の表を参照してください。
インスタント実行を有効または無効にする
- 設定または環境設定ダイアログを開きます:
- WindowsまたはLinuxの場合は、メインメニューから[
File
Settings
>Settings
を選択します。 - Mac OSXでは、メインメニューから
Android Studio
>Preferences
選択します。
- WindowsまたはLinuxの場合は、メインメニューから[
-
Build, Execution, Deployment
>Compiler
ナビゲートします。 - [コマンドラインオプション]の横にあるテキストフィールドに、コマンドラインオプションを入力します。
- [OK]をクリックして保存して終了します。
一番上のオプションはインスタント実行です。そのチェックボックスをオンまたはオフにします。
即時実行でのコードスワップの種類
インスタント実行では、Android Studioのコードからデバッグを高速化し、アプリケーションを実行するための3種類のコードスワップがあります。
- ホットスワップ
- ウォームスワップ
- コールドスワップ
これらのスワップのそれぞれがいつトリガされますか?
HOT SWAPは、既存のメソッドの実装が変更されたときにトリガーされます。
WARM SWAPは、既存のリソースが変更または削除されたときに起動されます(resフォルダ内のすべてのもの)
あなたのアプリのコードに構造コードが変更されたときにいつでもスワップする
- 追加、削除、または変更:
- 注釈
- インスタンスフィールド
- 静的フィールド
- 静的メソッドシグネチャ
- インスタンスメソッドのシグネチャ
- 現在のクラスが継承する親クラスを変更する
- 実装されたインターフェースのリストを変更する
- クラスの静的初期化子を変更する
- 動的リソースIDを使用するレイアウト要素の並べ替え
コードスワップが起こるとどうなりますか?
HOT SWAPの変更は、実装が変更されたメソッドへの次の呼び出しが行われるとすぐに表示されます。
WARM SWAPは現在のアクティビティを再開します
COLD SWAPはアプリ全体を再起動します(再インストールは必要ありません)
インスタント実行を使用するとサポートされていないコードが変更される
インスタントがそのトリックをやっていない、いくつかの変更があり、インスタントランが生まれる前に起こったのと同じようにあなたのアプリのための完全なビルドと再インストールが行われます。
- アプリのマニフェストを変更する
- アプリマニフェストが参照するリソースを変更する
- AndroidウィジェットのUI要素を変更する(クリーンアンド再実行が必要)