Androidエミュレーターの実行速度を上げる


251

Androidエミュレーターは少し遅いです。Motorola DroidやNexus Oneなどの一部のデバイスでは、アプリは実際のデバイスでエミュレーターよりも高速に実行されます。これは、ゲームや視覚効果をテストする際の問題です。

エミュレータを可能な限り高速に実行するにはどうすればよいですか?私はそのパラメータをいじっていますが、顕著な改善を示す構成をまだ見つけていません。


1
すべての私のアプリは、デバイス上で高速に実行

16
面白いのは、iPhoneシミュレーターが正反対です。デバイスでのアプリの実行が遅くなります。ほとんどの場合、私は遅いエミュレータを好みます。それはあなたがアプリを改善するように刺激するのでですが、時には実際のデバイスでのように動作するのを見たいだけです。
hpique

1
これは、VirtualBoxのを使用することによって、それは別名、通常はかなり高速に実行することが可能です-を参照してstackoverflow.com/a/6058689/40961
デヴィッド・D C Eフレイタス

5
iOSとWindows Mobileはシミュレーターを使用しますが、Androidはエミュレーターを使用します。シミュレータは、ホストライブラリを使用してすべてのモバイルライブラリとAPIを再実装するため、高速です。エミュレータは実際のデバイスと同じライブラリを使用するため、処理が遅くなります。Androidに関しては、Android仮想マシンを使用すると、非常に高速になります。ここでは無料のVM
huisinro

2
...その6年後、そしてHAXMとx86システムイメージ、そして十分に仕様化された開発環境を使用しても、Androidエミュレーターは糖蜜のようにまだ遅いですか?
2016

回答:


229

公式ウェブページ

約50%高速

ウィンドウズ:

  • 「Intel x86 Emulator Accelerator(HAXM)」をインストール=> SDK-Manager / Extras
  • 「Intel x86 Atomシステムイメージ」をインストール=> SDK-Manager / Android 2.3.3
  • Android SDKルートフォルダーに移動し、extras \ intel \ Hardware_Accelerated_Execution_Managerに移動します。IntelHaxm.exeファイルを実行してインストールします。(Android Studioでは、次の場所に移動できます:設定-> Android SDK-> SDKツール-> Intel x86エミュレーターアクセラレーター(HAXMインストーラー))

  • 「Intel Atom x86」CPU / ABIでAVDを作成する

  • エミュレーターを実行し、HAXM​​が実行されているコンソールをチェックインします(コマンドプロンプトウィンドウを開き、コマンドを実行します:sc query intelhaxm)

ここに画像の説明を入力してください

また、これをインストールすることを忘れないでください

ここに画像の説明を入力してください

AVD作成中のPSがエミュレーションメモリを追加:ハードウェア/新規/デバイスRAMサイズ/設定値512以上

Linux:

  • KVMをインストールします。GOOGLEを開き、「kvm installation」と書き込みます
  • 「Intel Atom x86」CPU / ABIでAVDを作成する
  • コマンドラインから実行します:emulator -avd avd_name -qemu -m 512 -enable-kvm
  • またはEclipseから実行します:実行/構成/タブ「ターゲット」-> Intel x86 AVDをチェックし、「追加のエミュレーターコマンドラインオプション」ウィンドウで次を追加します。-qemu -m 512 -enable-kvm([実行]をクリックします)

ここに画像の説明を入力してください

PS Fedoraの場合、Ubuntuの場合

OS-X:

  • Android SDK Managerで、Intel x86 Atomシステムイメージをインストールします
  • Android SDK Managerで、Intel x86 Emulator Accelerator(HAXM)をインストールします
  • ファインダーで、Intel Emulator Acceleratorのインストール場所に移動し、IntelHAXMをインストールします(dmgを開いてインストールを実行します)。SDK ManagerのEmulator Acceleratorエントリの上にマウスを置くと、場所を見つけることができます。
  • AVDを作成または更新し、Intel Atom x86をCPUとして指定します。 場所を示すIntel x86 Emulator Accelerator(HAXM)

PS:このツールをチェックしてください。試用でも非常に便利です


8
これはOSXでも機能します。/extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM.dmgSDKマネージャーからパッケージをダウンロードした後にインストールする必要があり ます。
ジャレットミラード2013

5
「ホストGPUを使用するというWindowsの手順では、超高速のエミュレーターが提供されました。(サポートされているIntelプロセッサとnVidiaグラフィックスカードを持っています。)アニメーションはバターのように滑らかですほとんどの場合、それ以外の場合は非常にぎくしゃくします)。Intel Atom(x86) CPUオプションを取得するには、AVD ManagerのEclipse再起動する必要があることに注意してください。ヒント: RAMを割り当てすぎないでください。RAMが1GBの場合、エミュレーターは(GPUを使用して)起動できませんでしたが、512MBのRAMを使用すると、スムーズに実行され、(GPUを使用して)非常に速く起動しました。
ADTC 2013

LogCatが大量のトレース警告でスパム送信されることがわかりました。それらを除外するに^(?!.*(nativeGetEnabledTags)).*$は、テキストフィルターとして使用します。これをバグの問題として報告しました。また、次回起動時にエラーが発生しないようにするには、エミュレーターデバイスを適切にシャットダウンする必要があります(電源ボタンを押してから(電源オフ)を選択します)(ARMエミュレーターを閉じるだけですが、Intelエミュレーターでは、閉じるだけで問題が発生するようです)。
ADTC 2013

できれば+100あげます。Windows 8で動作し、パフォーマンスが大幅に向上しました。
Paolo M

2
これを機能させるには、まずコントロールパネルのプログラムと機能を使用してHyper Vテクノロジを無効にする必要がありました。
マイクフリン

34

更新:Intel x86イメージが利用可能になったので、最善の答えは上記の熱意です。

CommonsWareが正しく指摘したように、エミュレータはARM CPUをエミュレートするため低速であり、これにはIntelのオペコードへの変換が必要です。この仮想化はCPUを消費します。

エミュレータを高速化するには、CPUを増やす必要があります。高速なCPUから始めるか、可能であればアップグレードしてください。

次に、エミュレータに使用しているCPUを増やします。

  1. ハイパースレッディングを無効にする -エミュレーターは複数のコアを利用していないように見えるため、ハイパースレッディングは実際にエミュレーターが取得する全体的なCPU時間の量を減らします。HTを無効にすると、複数のCPUを利用するアプリの速度が低下します。BIOSでハイパースレッディングを無効にする必要があります。
  2. エミュレーターをCPU 0以外のCPUで実行する -これは、HTをオフにするよりもはるかに小さな影響ですが、一部には役立ちます。Windowsでは、プロセスを実行するCPUを指定できます。多くのアプリはCPU 0を起動し、デフォルトではエミュレーターはCPU 0で実行されます。エミュレーターを変更して、最後のエミュレーターで実行します。OS Xではアフィニティを設定できないことに注意してください/superuser/149312/how-to-set-processor-affinity-on-a-macを参照)。

50%程度の改善が見られますこれらの2つの変更られます。

Windows 7でプロセッサアフィニティを設定するには:

  1. タスクマネージャーを開く
  2. [すべてのプロセスを表示]をクリックします(管理者として実行します。それ以外の場合は、プロセッサアフィニティを設定できません)
  3. emulator.exeを右クリックして、[アフィニティの設定...]を選択します。
  4. [アフィニティの設定]ダイアログで、最後のCPUのみを選択します

注:この方法でアフィニティを変更すると、プロセスの存続期間中のみ変更されます。次のスタート、あなたはもう一度それをしなければなりません。

ここに画像の説明を入力してください


22
ハイパースレッドを無効にすると、論理プロセッサの量が半分になったため、CPU使用率が2倍になりました。
Timothy003

1
それは魅力のように動作しますが、Ubuntu 11.10でそれを行う方法を知っていますか?
emeraldhieu 2011年

1
@ Timothy003はい、間違いなく正しいです。エミュレータが使用するCPUを2倍にしました。
mcohen75 2012年

3
タスクマネージャが表示する数は2倍になるだけです。実際にはありません。100%CPUで少なくとも4つのスレッドに相当する十分な作業を生成するのに十分なソフトウェアを実行していない場合でも、CPU使用率が高いいくつかのアプリは、実質的にコア全体を取得します。どのタスクマネージャが表示しているかを示します。
ダンはFirelightによっていじくります

3
@Dan Neelyの発言を確認するには、次のようにします。私は、100%のCPUを消費する単一のコアアプリを持っています。HTを使用すると、約25%が表示されますが、約50%は表示されませんが、実際には、同時に計算する必要があるものを計算します。したがって、違いはありません(少なくともSandy Bridgeでは)。
bartosz.r 2012

17

Genymotion試してみることを勧めします。これはOracleのVirtualBoxで実行され、中程度のシステムでは合法的に60 fpsに達します。

以下は、私のワークショップの1つからのスクリーンキャップです。ローエンドの2012年モデルのMacBook Airで実行しています。

56.6 fpsで動作するNexus 7エミュレータ

テキストが読めない場合は、56.6 fpsで動作するNexus 7エミュレーターです。追加の(大きな!)ボーナスは、Google PlayとGoogle Play Servicesが仮想マシンに同梱されていることです。

(デモされたアニメーションのソースはここにあります。)


12

GPUハードウェアアクセラレーションを有効にするAPI 15 v3以降とSDK Tools v17 +を使用している場合は、(IntelのHAXMに加えて)。エミュレータのグラフィックアクセラレーションは、開発用コンピュータのグラフィックハードウェア、特にそのグラフィック処理ユニット(GPU)を利用して、画面の描画を高速化します。これにより、速度が著しく向上します。

エミュレータでデフォルトで有効になっているグラフィックアクセラレーションを有効にするには、AVDを作成するときに、[ハードウェア]セクションで[新規]をクリックし、[GPUエミュレーション]を選択して、値を[はい]に設定します。

実行時にのみアクセラレーションを有効にするには、次のようにエミュレータを起動するときに-gpuフラグを使用します

emulator -avd <avd_name> -gpu on

出典:Googleの「エミュレータの使用」チュートリアル


10

編集 Intelイメージを使用するとパフォーマンスが向上しますが、Genymotionを使用することでパフォーマンスが大幅に向上します。Paul Lammertsmaの回答を参照してください。

前の回答

ADT rev 17では、エミュレーターはWindowsおよびMac OS Xの仮想化モードでx86システムイメージの実行をサポートしています。これはパフォーマンスに顕著な影響を与えます。

ADT rev 17ノート:http : //android-developers.blogspot.jp/2012/03/updated-sdk-tools-and-adt-revision-17.html

仮想マシンアクセラレーションの設定:http : //developer.android.com/guide/developing/devices/emulator.html#accel-vm


7

私は最近、3 GBのRAMを備えたコア2 @ 2.5から8 GBのRAMを備えたi7 @ 1.73に切り替え(両方のシステムでUbuntu 10.10を実行)、エミュレーターは現在少なくとも2倍の速度で動作しています。より多くのハードウェアを投入することは確かに役立ちます。


これは実際の解決策ではありません。エミュレーターの時間あたりのスループットが高くなる可能性がありますが、実際にはそれがより速く実行されることはありません。
2014


4

エミュレータのデフォルトはCore 0のみであり、ほとんどのWindowsアプリケーションはデフォルトで「任意の」コアになることに気づきました。また、それを別のコア(最後のコアなど)に配置すると、エミュレーターが狂ってしまう可能性があります。可能であれば、CPU使用率の高いアプリケーションを他のCPUコアに配置して、速度を向上させることができます。

ハードウェア的には、シングルコアアプリケーションで機能する最も高速なCPUを入手してください。3つ以上のコアでは、エミュレーターのパフォーマンスの点で大きな違いが発生しない場合があります。

Eclipse + Androidエミュレーターを一緒に使用すると、大量のRAMを消費します。2 GBのRAMを搭載したシステムを使用しているため、少なくとも3 GBのRAMをお勧めします。また、システムがRAMを使い果たしてページファイルを使い始めたため、速度が低下しました。

そのための最高のCPUは、おそらくクロックが高く(同じシリーズのCPUの尺度としてのみクロックを使用)、SIMD以外の操作を適切に処理し、ターボブーストメカニズムを備えていると思います。Javaベースのベンチマークはそれほど多くありませんが、圧縮やオフィスなどのアプリケーションベンチマークを全体的に探します。ゲームやメディアはSIMDの影響を大きく受けるので、見ないでください。あなたがJavaのものを見つけたら、さらに良いです。


4

今年のGoogle I / O(2011)では、Googleはより高速なエミュレータを示しました。問題はARMとx86の間のバイトコードではなく、QEMUによって実行されるソフトウェアレンダリングにあります。それらはQEMUのレンダリングをバイパスし、私が信じているXサーバーに直接レンダリングを送信します。彼らは本当に良い性能とfpsでカーゲームを見せました。

開発者がいつ利用できるようになるのか...


このエミュレータのニュースはありますか?その名前は何でしたか?
alcor 2015年

ニュースはありません。昨年ほどAndroidエミュレータの更新を追跡していません。
Cesar


1

これは、clr仮想マシンがコードオペコード変換なしで直接CPUを使用するためだと思います。これは、clrアプリケーションの最適化であるか、またはINTELプロセッサで開始されたwindows mobile / window phone 7である可能性があります。LinuxベースのAndroidプラットフォーム。理論的には、i686環境の仮想マシンでAndroidを起動できます。この場合、vmwareなどの仮想マシンはいくつかのオペコードを直接実行できます。ただし、このオプションは、Javaで記述した場合にのみ許可されます。これは、Javaがバイトコードを解釈するか、実行前にプリコンパイルするためです。参照:http : //www.taranfx.com/how-to-run-google-android-in-virtualbox-vmware-on-netbooks


1

@zestありがとうございます!魅力のように働いた。注意事項:カーネルパニック問題に対処するためにHAXMにIntelのホットフィックスを適用する必要があります:http : //software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager また、注意、複数のabiがある場合、最新バージョンのAndroid API(r19)のバグのため、1つをアンインストールする必要があります:https ://code.google.com/p/android/issues/detail ?id= 66740(x86 abiが必要なため、この場合はarmeabi-v7aを削除します)。これらの問題を解決するのに45分かかったほか、エミュレーターのパフォーマンスの向上という点で非常にやりがいのある作業でした。




1

(私のような)良いグラフィックカードがない場合は、低解像度のエミュレータ(例:Nexus S)を選択してください。


0

Intel(86)CPU / ABIを使用しています。ARM(armeabi-v7a)を使用して別のエミュレータを作成しましたが、速度がかなり改善されています。私はプラットフォーム4.1.2 APIレベル16を使用しています



0

現在のAndroid StudioをAndroid Studio 2.0に更新し、システムイメージも更新します。

Android Studio 2.0エミュレーターは、Androidの以前のエミュレーターの約3倍の速度で実行されます。ADBの機能強化により、物理デバイスよりもエミュレーターにアプリやデータを10倍速くプッシュできるようになりました。物理デバイスと同様に、公式のAndroidエミュレーターにはGoogle Play開発者サービスも組み込まれているため、より多くのAPI機能をテストできます。最後に、新しいエミュレーターには、通話、バッテリー、ネットワーク、GPSなどを管理するための豊富な新機能があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.