web-dev-qa-db-ja.com

Androidエミュレータをより高速にする

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

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

239
hpique

公式ウェブページ

50%早くなりました

Windows:

  • 「Intel x86エミュレータアクセラレータ(HAXM)」=> SDK-Manager/Extrasをインストールしてください。
  • "Intel x86 Atom System Images" => SDKマネージャ/ Android 2.3.3をインストールしてください。
  • Android SDKのルートフォルダに移動し、extras\intel\Hardware_Accelerated_Execution_Managerに移動します。ファイルIntelHaxm.exeを実行してインストールします。 (Android Studioでは、設定 - > Android SDK - > SDKツール - > Intel x86 Emulator Accelerator(HAXMインストーラ)に移動できます)。

  • "Intel atom x86" CPU/ABIでAVDを作成する

  • エミュレータを実行し、コンソールでHAXMが実行されていることを確認します(コマンドプロンプトウィンドウを開き、次のコマンドを実行します)sc query intelhaxm

enter image description here

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

enter image description here

P.S AVD作成中にエミュレーションメモリを追加する:ハードウェア/新規/デバイス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(「実行」をクリック)

enter image description here

P.S Fedoraの場合buntuの場合

OS-X:

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

P.S:このツールをチェックしてください、とても便利です 体験版

222
zest

更新:Intel x86イメージが利用可能になったので、最良の答えは上記のzestによるものです。

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ではアフィニティを設定できないことに注意してください( https://superuser.com/questions/149312/how-to-set-processor-affinity-on-a-mac を参照)。

これら2つの変更を加えて、どこかで50%の改善が見られます。

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

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

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

enter image description here

34
mcohen75

Genymotion スピンをかけることをお勧めします。これはOracleのVirtualBoxで動作し、適度なシステムでは合法的に60 fpsに達するでしょう。

これは私のワークショップの1つで、2012年のローエンドモデルのMacBook Airで実行したスクリーンキャップです。

Nexus 7 emulator running at 56.6 fps

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

(デモアニメーションのソース ここで見つけることができます 。)

16
Paul Lammertsma

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

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

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

emulator -avd <avd_name> -gpu on

出典: Googleのエミュレータの使い方のチュートリアル

11
John Lehmann

編集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

9
ThomasW

私は最近、3 GBのRAMを搭載した2.5コアのコアから8 GBのRAMを搭載したi7 @ 1.73に切り替えました(どちらのシステムもUbuntu 10.10を実行していました)。それにもっと多くのハードウェアを投げることは確かに役に立ちます。

7
TripleG

Intel HAXMアクセラレータをインストールしてIntel Atomイメージを使用した後は、エミュレータの実行速度が50倍速くなったようです。違いは素晴らしいです、それをチェックしてください!

http://www.developer.com/ws/Android/development-tools/haxm-speeds-up-the-Android-emulator.html

6
sonicboom

私は、エミュレータのデフォルトはCore 0のみで、ほとんどのWindowsアプリケーションはデフォルトで "any"コアになっていることに気付きました。また、(最後のコアのように)別のコアに置くと、エミュレータがおかしくなる可能性があります。可能であれば、CPU使用率の高いアプリケーションを他のCPUコアに配置して速度を上げることができます。

ハードウェア的には、シングルコアアプリケーションで動作する最速のCPUを入手してください。 2コアを超えるコアでは、エミュレータのパフォーマンスに関して大きな違いはありません。

Eclipse + Androidエミュレータは一緒に大量のRAMを消費します。少なくとも2ギガバイトのRAMを搭載したシステムを使用したため、3ギグのRAMを使用することをお勧めします。また、システムがRAMを使い果たし、ページファイルを使用し始めたため遅くなりました。

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

4
Joe P

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

それがいつ開発者に利用できるようになるのでしょうか。

3
Cesar

Googleは最近、Android用の新しいエミュレータを発表しました。それは昔のものよりずっと速くて良いです。あなたはそれについてのより多くの情報を見つけることができます こちら

3
Koc

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

1
horcle_buzz

これは、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
assad

エミュレータに代わるものとしてAndroVM仮想マシンがあります。これはエミュレータよりはるかに高速で動作し、OpenGLアクセラレーションをサポートします。

http://androvm.org/

逸話的に、私はそれが実際のAndroidデバイスより速く走ると感じます。

0
Joel Malone

エミュレータの代わりにGenymotionを使用してください。 Genymotionはより良いパフォーマンスを持っています https://www.genymotion.com

0

私はIntel(86)CPU/ABIを使っています。私はARM(armeabi-v7a)を使用して別のエミュレータを作成しました、そして私はスピードに関してかなりの改善を見つけました。プラットフォーム4.1.2 APIレベル16を使用しています。

0

スタンドアローンエミュレータとしてインストールすることもできる Visual Studio Android Emulator を試すこともできます(Visual Studioは必要ありません)。 Windows Pro以降のシステムにのみインストールできます。

0
David Dostal

これがお役に立てば幸いです。

Goto to your BIOS settings. Enable your Virtualization technology in your settings..

それは私の問題を解決しました...

0

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

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

0
Umer

あなたが良いグラフィックカードを持っていないのであれば、低解像度のエミュレータ(例:Nexus S)を選んでください(私のように)

0
Dan Alboteanu