Skip to content

Most visited

Recently visited

navigation

アプリをビルドして実行する

Android Studio ではエミュレータや実機へデプロイするためのプロジェクト設定が、デフォルトでわずか数クリックで完了します。Instant Run 機能を利用すると、新たに APK をビルドすることなく、メソッドや既存のアプリリソースの変更内容を実行中のアプリに反映できるため、コード変更による効果をすぐに確認できます。

アプリをビルドして実行するには、[Run] をクリックします。Android Studio では Gradle を利用してアプリをビルドします。デプロイするターゲット(エミュレータか接続済みの実機)を選択すると、そのターゲットにアプリがデプロイされます。デプロイするターゲットを自動で選択するなど、デフォルトの動作をカスタマイズするには、実行構成を変更します

Android Emulator を使用してアプリを実行するには、Android Virtual Device(AVD)を準備する必要があります。AVD をまだ作成していない場合は、[Run] をクリックした後に、[Select Deployment Target] ダイアログ内の [Create New Emulator] をクリックします。[Virtual Device Configuration] ウィザードに従い、エミュレートしたい端末のタイプを指定します。詳細については、仮想端末の作成と管理をご覧ください。

Android の実機を使用する場合は、端末上で USB デバッグを有効にしておく必要があります。詳細については、ハードウェア端末上でのアプリの実行をご覧ください。

注: [Debug] をクリックすると、デバッグモードでアプリをデプロイできます。デバッグモードでアプリを実行すると、コード上でのブレークポイントの設定、実行時の変数や数式の値の確認、デバッグツールの実行が可能になります。詳細については、アプリをデバッグするをご覧ください。

異なるモジュールを選択してビルドする

プロジェクトにデフォルトのアプリ モジュールだけでなく複数のモジュールがある場合は、以下の方法で指定のモジュールをビルドできます。

Android Studio では Gradle を用いてビルドをします。新規アプリや新しい端末用のモジュールをビルドした場合は、それを実行してデバッグできます。ライブラリや Google クラウド モジュール アプリをビルドした場合は、依存関係として利用できます。

ビルドしたモジュールは以下の方法で実行します。

実行、デバッグ構成を変更する

実行やデバッグの構成で指定できるのは、実行モジュール、デプロイするパッケージ、開始するアクティビティ、ターゲット端末、エミュレータ設定、logcat オプションなどです。デフォルトの構成では、デフォルトのプロジェクト アクティビティが立ち上がり、[Select Deployment Target] ダイアログでターゲットとする端末を選択できます。このデフォルトの設定が自身のプロジェクトやモジュールに合わない場合は、実行やデバッグの構成をカスタマイズする、またはプロジェクト、デフォルト、モジュール レベルで新規に作成することが可能です。実行やデバッグの構成を編集するには、[Run] > [Edit Configurations] を選択します。詳細については、実行、デバッグ構成の作成と編集をご覧ください。

ビルド バリアントを変更する

[Run] をクリックすると、Android Studio はデフォルトでデバッグ版のアプリをビルドして実行します。これはテスト専用のバージョンです。公式リリースするアプリを準備するには、リリース版をビルドする必要があります。

Android Studio が使用するビルド バリアントを変更するには、[Build] > [Select Build Variant] を選択し、ドロップダウン メニューから他の項目を選択します。新規プロジェクトはデフォルトで、デバッグとリリースのビルド バリアントでセットアップされます。

プロダクト フレーバーを利用して、別バージョンのアプリに対してビルド バリアントを追加すると、それぞれに異なる機能や端末要件を持たせることができます。ビルド バリアントとプロダクト フレーバーの詳細については、ビルドの構成をご覧ください。

ビルド処理をモニタリングする

[Gradle Console] をクリックすると、ビルド処理の詳細を確認できます。図 1 のように、アプリをビルドをするために Gradle が実行しているタスクがコンソールに表示されます。

図 1. Android Studio の Gradle コンソール

ビルド バリアントでプロダクト フレーバーを使用している場合、Gradle はそのプロダクト フレーバーのビルドをするためのタスクも立ち上げます。利用可能なビルドタスクを確認するには、IDE ウィンドウの右側にある [Gradle] をクリックします。

ビルド処理中にエラーが発生すると、不具合内容が記載された Messages ウィンドウが表示されます。Gradle では、不具合を修正するために --stacktrace--debug といったコマンドライン オプションの使用を推奨する場合があります。ビルド処理中にコマンドライン オプションを使用する方法は以下のとおりです。

  1. [Settings] または [Preferences] ダイアログを開きます。
    • Windows、Linux の場合は、メインメニューから [File] > [Settings] を選択します。
    • Mac OSX の場合は、メインメニューから [Android Studio] > [Preferences] を選択します。
  2. [Build, Execution, Deployment] > [Compiler] を選択します。
  3. [Command-line Options] の隣にあるテキスト フィールドに、コマンドライン オプションを入力します。
  4. [OK] をクリックして保存し、終了します。

次回アプリをビルドする際に、Gradle はこれらのコマンドライン オプションを適用するようになります。

APK を作成する

[Run] をクリックすると、Android Studio はデバッグ用の APK を作成し、それをターゲット端末にデプロイします。一般公開用のリリース版アプリを作成するためには、先にアプリに署名するの内容をご確認ください。その後は署名済み APK をデバッグまたはリリース版のビルド バリアントで複数作成できます。作成した APK ファイルの場所を確認するには、図 2 に示すポップアップ画面のリンクをクリックします。

図 2. リンクをクリックし、作成した APK ファイルの場所を確認

Instant Run について

Android Studio 2.0 で導入された Instant Run は、[Run] と [Debug] コマンドで利用できます。これによりアプリのアップデート時間が大幅に削減されます。初回ビルドには時間がかかる場合もありますが、その後は新規に APK をビルドすることなく、Instant Run でアプリの更新内容をプッシュできるため、変更点をより迅速に確認することができます。

Instant Run の使用条件として、デバッグ版のビルド バリアントでデプロイしており、Gradle バージョン 2.0.0 以上に対応した Android プラグインを使用し、アプリのモジュール レベルの build.gradle ファイルで minSdkVersion を 15 以上に設定している必要があります。最良のパフォーマンスを実現するには、minSdkVersion は 21 以上にします。

アプリのデプロイ後は [Run] ボタン(または [Debug] ボタン)に黄色い雷アイコンが表示されます。これは次回このボタンを押した際に、Instant Run が更新内容をプッシュする準備ができていることを表します。Instant Run では新しく APK をビルドせず、新たな変更点だけをプッシュします。場合によっては再起動すらせずに、すぐにコード変更による影響を確認することができます。

Instant Run では、ホットスワップ、ウォーム スワップ、コールド スワップのいずれかを行い、更新されたコードやリソースを接続されている端末やエミュレータにプッシュします。スワップタイプの選択は、変更した内容に応じて自動的に決まります。上の動画では、この動作を実現するための興味深い仕組みを詳細に説明しています。以下の表は、ターゲット端末にコード変更をプッシュした際に、Instant Run がどのような動作をするかを簡単にまとめたものです。

コード変更 Instant Run の動作
  • 既存メソッドの実装コードを変更

ホットスワップで処理します。これは最速のスワップタイプで、変更した内容を一瞬で確認することができます。アプリは実行したままで、次回のメソッドの呼び出し時に新しい実装を含むスタブメソッドが使用されます。

ホットスワップの場合、実行中のアプリのオブジェクトは再初期化されません。ただし内容によっては、現在のアクティビティの再起動やアプリの再起動が必要な場合もあります。Android Studio はデフォルトで、ホットスワップを実行した後に現在のアクティビティを自動で再起動します。自動で再起動したくない場合は、アクティビティの自動再起動を無効にすることができます。

  • 既存リソースの変更や削除
ウォーム スワップで処理します。このスワップも十分に高速ですが、Instant Run で更新されたリソースをアプリにプッシュする際に、現在のアクティビティを再起動する必要があります。アクティビティの再起動時もアプリは実行し続け、一瞬画面がちらつくことはありますが問題はありません。
次のような構造的なコード変更
  • 以下の追加、削除、変更
    • アノテーション
    • インスタンス フィールド
    • 静的フィールド
    • 静的メソッドのシグネチャ
    • インスタンス メソッドのシグネチャ
  • 現在のクラスが継承する親クラスの変更
  • 実装したインターフェース リストの変更
  • クラスの静的イニシャライザの変更
  • 動的リソース ID を用いたレイアウト要素の並べ替え

コールド スワップで処理します(API レベル 21 以降)。このスワップは少し速度が落ちますが、新しい APK は不要です。Instant Run では構造的なコード変更をプッシュする際に、アプリ全体を再起動する必要があります。

API レベル 20 以前の端末の場合、Android Studio は APK 全体をデプロイします。

  • アプリのマニフェストの変更
  • アプリのマニフェストが参照するリソースの変更
  • Android ウィジェット UI 要素の変更([Clean and Rerun] が必要)

アプリのマニフェストやマニフェストが参照するリソースを変更した場合は、これらの変更点を適用するために Android Studio は自動で新たにビルドしたものをデプロイします。これは、APK が端末にインストールされる際にマニフェストによって、アプリの名称やアイコン リソース、インテントフィルタなどの情報が決定されるためです。

ビルド処理によって versionCodeversionName など、アプリのマニフェストに自動で何かしらの更新が入ると、Instant Run のパフォーマンスが最大限に発揮されなくなります。Instant Run を利用する際は、デバッグ用のビルド バリアントでアプリのマニフェストの自動更新を完全に無効にするようにしてください。

Android ウィジェット UI 要素を更新した場合は、変更を確認するために [Clean and Rerun] を実行する必要があります。Instant Run の使用時にクリーンビルドをするとかかる時間が長くなるので、ウィジェット UI の更新中は一時的に Instant Run を無効にしておくこともできます。

注: クラッシュ後にアプリを再起動する必要がある場合は、ターゲット端末から起動しないでください。アプリをターゲット端末から再起動すると、最後にコールド スワップや増分ビルドを行ってから変更したコードが適用されません。最新の変更点もすべて反映させた状態でアプリを起動するには、Android Studio から [Run] (または [Debug] ) をクリックします。

再実行する

アプリの onCreate() メソッドの変更など、イニシャライザに影響を与えるコード変更をプッシュする際は、変更点が反映されるようにアプリを再起動する必要があります。増分ビルドをしてアプリを再起動するには、[Rerun] をクリックします。

クリーンビルドをデプロイしたい場合は、メインメニューから [Run] > [Clean and Rerun] を選択するか、Shift キーを押しながら [Rerun] をクリックします。これにより実行中のアプリが停止し、フルでクリーンビルドが行われ、新しい APK がターゲット端末にデプロイされます。

アクティビティの自動再起動を無効にする

ホットスワップの実行中もアプリは動き続けますが、Android Studio は自動で現在のアクティビティを再起動します。このデフォルトの設定は以下の方法で無効にできます。

  1. [Settings] または [Preferences] ダイアログを開きます。
    • Windows、Linux の場合は、メインメニューから [File] > [Settings] を選択します。
    • Mac OSX の場合は、メインメニューから [Android Studio] > [Preferences] を選択します。
  2. [Build, Execution, Deployment] > [Instant Run] を選択します。
  3. [Restart activity on code changes] の隣のチェックボックスをオフにします。

アクティビティの自動再起動を無効にした場合は、メニューバーから [Run] > [Restart Activity] を選択すると、手動で現在のアクティビティを再起動できます。

Instant Run 用にプロジェクトを構成して最適化する

Android Studio は、Android Plugin for Gradle 2.0.0 以降を使用してビルドされたプロジェクトに対して、デフォルトで Instant Run を有効にします。

最新のプラグインで既存のプロジェクトを更新する方法は以下のとおりです。

  1. [Settings] または [Preferences] ダイアログを開きます。
  2. [Build, Execution, Deployment] > [Instant Run] を選択し、図 3 に示す [Update Project] をクリックします。

    プロジェクトの更新オプションが表示されない場合は、すでに最新の Android Plugin for Gradle になっています。

    図 3. 既存プロジェクト用に Android Plugin for Gradle を更新

Instant Run 機能を使用するには、ビルド バリアントを変更してアプリをデバッグ版にする必要もあります。

dex リソースの設定でビルド時間を短縮する

クリーンビルドをデプロイする場合、Android Studio は アプリを監視し、Instant Run でコードやリソースの変更内容をプッシュします。実行中のアプリは非常に速く更新できますが、初回ビルドには時間がかかる場合があります。ビルド処理を改善するには、DexOptions の設定を少し変更します。

maxProcessCount
同時に開始できる dex プロセスの最大値を設定します。すでに Gradle のデーモンが実行中の場合は、そのプロセスを停止してから、新たな最大処理数で初期化する必要があります。Gradle のデーモンを停止するには、ターミナル ウィンドウから以下のいずれかを実行します。
  • Windows の場合は gradlew --stop を実行します。
  • Linux、Mac OSX の場合は、./gradlew --stop を実行します。
javaMaxHeapSize
dex 操作用の最大メモリ割り当てプールサイズを指定します。この値を指定する際は、キロバイトには k、メガバイトには m、ギガバイトには g の文字をつけることができます。

以下の例では、モジュール レベルの build.gradle ファイル内で、maxProcessCount を 4 に、javaMaxHeapSize を 2g に指定しています。

android {
  ...
  dexOptions {
    maxProcessCount 4 // this is the default value
    javaMaxHeapSize "2g"
  }
}

これらの値を増加させて、ビルド所要時間が短縮されるか確認してみてください。ただし、dex プロセスにリソースを割り当て過ぎると、パフォーマンスが低下する可能性があります。

プロセス内 dex と増分 Java コンパイルを有効にする

Android Plugin for Gradle version 2.1.0 以降では、増分 Java コンパイルとプロセス内 dex などの新機能により、さらなるビルド処理の高速化を実現しています。増分 Java コンパイルはデフォルトで有効になっており、変更したソースや再コンパイルの必要があるソースだけを再コンパイルするため、開発中のコンパイル時間が短縮できます。

プロセス内 dex は、個々の外部 VM プロセスではなく、ビルドプロセス内で dex を実行します。これにより増分ビルドだけでなく、フルビルドの速度も格段に上がります。この機能を有効にするには、Gradle デーモンの最大ヒープサイズを 2048 MB 以上に設定する必要があります。そのためには、自身のプロジェクトの gradle.properties ファイル内に以下の内容を含めます。

org.gradle.jvmargs = -Xmx2048m

モジュール レベルの build.gradle ファイル内に javaMaxHeapSize の値を定義している場合、デーモンの最大ヒープサイズの値を javaMaxHeapSize + 1024 MB に設定する必要があります。たとえば、javaMaxHeapSize を 2g に設定した場合は、以下の内容をプロジェクトの gradle.properties ファイルに追加する必要があります。

org.gradle.jvmargs = -Xmx3072m

プロジェクトを Windows Defender の対象外にする

Windows システムの場合、Instant Run の使用中に Windows Defender が原因でスローダウンしてしまうことがあります。Windows Defender をご利用の場合は、自身の Android Studio プロジェクトのフォルダを Windows Defender マルウェア スキャンの対象から外してください

Crashlytics を利用してビルド時間を短縮する

Fabric Gradle プラグインのバージョンが 1.21.6 以前だと、Crashlytics によってビルド時間が長くなる可能性があります。アプリ開発時のビルド パフォーマンスを改善するには、プラグインを最新版に更新するデバッグ用のビルド バリアントに対して Crashlytics を無効にします

Instant Run の制限

Instant Run はさまざまな場面で、ビルドやデプロイ処理を高速化するよう設計されています。しかし状況によっては Instant Run を使用すると、その動作やアプリとの互換性に支障が出ることがあります。Instant Run の使用中に不具合が生じましたら、バグの報告をお願いします。

複数端末へのデプロイ

Instant Run ではさまざまな技術を駆使し、ターゲット端末の API レベルに固有のホットスワップ、ウォーム スワップ、コールド スワップを実行します。そのため、1 つのアプリを同時に複数のデバイスにデプロイすると、Android Studio は一時的に Instant Run 機能をオフにします。

アプリの Multidex

プロジェクトが以前の Multidex 設定になっている場合(build.gradlemultiDexEnabled trueminSdkVersion 20 以下を設定している場合)、Android 4.4(API レベル 20)以前の端末にデプロイすると、Android Studio は Instant Run を無効にします。

minSdkVersion が 21 以上の場合は、Instant Run は自動でアプリを Multidex 用に設定します。Instant Run はデバッグ版のアプリでのみ動作するため、リリース用のビルド バリアントをデプロイする際はアプリを Multidex 用に設定する必要が生じる場合もあります。

計測テストの実行とパフォーマンス プロファイラ

計測テストではデバッグ APK とテスト APK の両方をテスト端末の同じプロセスに読み込み、コントロール メソッドがアプリの通常のライフサイクルをオーバーライドしてテストを実施できるようにします。計測テストを実行またはデバッグしている最中、Android Studio は Instant Run に必要な追加メソッドを注入せず、Instant Run 機能がオフになります。

アプリのプロファイリング中は、Instant Run 機能を無効にしてください。Instant Run を使用しているとパフォーマンスに若干影響が生じ、ホットスワップでメソッドをオーバーライドする際にわずかに大きな影響が生じます。その結果、パフォーマンス プロファイリング ツールが提供する情報に影響が出てしまう場合があります。また、各ホットスワップで生成されたスタブメソッドにより、スタックトレースが複雑になることもあります。

サードパーティのプラグインの使用

Android Studio では Instant Run の使用時に、一時的に Java Code Coverage Library(JaCoCo)と ProGuard を無効にしています。Instant Run はデバッグビルドでのみ動作するので、これはリリースビルドには影響しません。

バイトコードの拡張を行うサードパーティのプラグインの影響で、Instant Run によるアプリの監視方法に問題が生じる場合があります。このような問題があっても Instant Run を引き続き使用したいという場合は、デバッグビルド バリアント用のサードパーティ プラグインを無効にしてください。サードパーティのプラグインとの互換性を向上するために、バグの報告もお願いします。

マルチプロセス アプリへの変更点のプッシュ

Instant Run はホットスワップやウォーム スワップを実施するために、アプリのメインプロセスのみを監視します。メソッド実装や既存リソースへの変更などのコード変更を他のアプリプロセスにプッシュすると、Instant Run はコールド スワップを実行します。

Instant Run を無効にする

Instant Run は以下の手順で無効にできます。

  1. [Settings] または [Preferences] ダイアログを開きます。
  2. [Build, Execution, Deployment] > [Instant Run] を選択します。
  3. [Enable Instant Run] の隣にあるチェックボックスをオフにします。
This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience.
(Sep 2017 survey)