Android emülatörünün daha hızlı çalışmasını sağlama


251

Android emülatörü biraz halsiz. Motorola Droid ve Nexus One gibi bazı cihazlar için, uygulama gerçek cihazda emülatörden daha hızlı çalışır. Bu, oyunları ve görsel efektleri test ederken bir sorundur.

Emülatörü nasıl olabildiğince hızlı çalıştırırsınız? Parametreleriyle oynuyorum ama henüz gözle görülür bir gelişme gösteren bir yapılandırma bulamadım.


1
tüm uygulamalarım cihazda daha hızlı çalışıyor

16
Komik çünkü iPhone simülatörü tam tersi. Uygulamalar cihazda daha yavaş çalışır. Çoğu durumda daha yavaş bir emülatör tercih ederim, çünkü uygulamanızı geliştirmeniz için sizi uyarır, ancak bazen sadece gerçek bir cihazda olduğu gibi çalıştığını görmek istersiniz.
hpique

1
VirtualBox kullanarak normalde çok daha hızlı çalışmasını sağlamak mümkündür - bkz. Stackoverflow.com/a/6058689/40961
David d C e Freitas

5
iOS ve Windows Mobile Simülatörleri, Android ise Emülatörleri kullanır. Simülatörler, ana bilgisayar kitaplıklarını kullanarak tüm mobil kitaplıkları ve API'leri yeniden uygular ve bu nedenle hızlıdır. Emülatörler, gerçek cihazlardakiyle aynı kütüphaneleri kullanır, bu nedenle daha yavaştır. Android açısından, bir Android sanal makinesi kullanıyorsanız, çok hızlı olacaktır. Biz burada ücretsiz bir vm sağlamak: leapdroid.com
huisinro

2
... ve 6 yıl sonra ne kadar çılgınca, hatta HAXM ve x86 sistem görüntüsü ve iyi belirlenmiş bir geliştirme ortamı ile bile Android emülatörü pekmez gibi yavaş mı?
aroth

Yanıtlar:


230

Resmi web sayfası

~% 50 daha hızlı

Pencereler:

  • "Intel x86 Emulator Accelerator (HAXM)" => SDK Yöneticisi / Ekstralarını yükleyin
  • "Intel x86 Atom Sistem Görüntüleri" => SDK Yöneticisi / Android 2.3.3'ü yükleyin
  • Android SDK kök klasörüne gidin ve extras \ intel \ Hardware_Accelerated_Execution_Manager öğesine gidin. Yüklemek için IntelHaxm.exe dosyasını yürütün. (Android Studio'da şuraya gidebilirsiniz: Ayarlar -> Android SDK -> SDK Araçları -> Intel x86 Emulator Hızlandırıcı (HAXM yükleyici))

  • "Intel atom x86" CPU / ABI ile AVD oluşturma

  • Öykünücüyü çalıştırın ve konsolda HAXM'in çalıştığını kontrol edin (bir Komut İstemi penceresi açın ve şu komutu yürütün: sc query intelhaxm)

resim açıklamasını buraya girin

Ayrıca bunu yüklemeyi unutma

resim açıklamasını buraya girin

AVD oluşturma sırasında PS öykünme belleği ekleyin: Donanım / Yeni / Aygıt ram boyutu / kurulum değeri 512 veya daha fazla

Linux:

  • KVM'yi yükleyin: GOOGLE'u açın, "kvm kurulumu" yazın
  • "Intel atom x86" CPU / ABI ile AVD oluşturma
  • Komut satırından çalıştır: emulator -avd avd_name -qemu -m 512 -enable-kvm
  • Ya da Eclipse: Run / Run Configurations / Tab "Target" -> Intel x86 AVD'yi kontrol edin ve "Ek Öykünücü Komut Satırı Seçenekleri" penceresinde ekleyin: -qemu -m 512 -enable-kvm (Çalıştır'ı tıklatın)

resim açıklamasını buraya girin

PS Fedora , Ubuntu için

OS-X:

  • Android SDK Yöneticisi'nde Intel x86 Atom System Image'ı yükleyin
  • Android SDK Yöneticisi'nde Intel x86 Emulator Accelerator'ı (HAXM) yükleyin
  • Bulucuda, Intel Emulator Accelerator'ın kurulum konumuna gidin ve IntelHAXM'i yükleyin (dmg'yi açın ve kurulumu çalıştırın). Farenizi SDK Yöneticisi'ndeki Emulator Accelerator girişinin üzerine getirerek konumu bulabilirsiniz.
  • Bir AVD oluşturun veya güncelleyin ve Intel Atom x86'yı CPU olarak belirtin. Intel x86 Öykünücü Hızlandırıcısı (HAXM) Konumu gösteriyor

Not: Bu aracı kontrol edin, hatta deneme sürümü çok uygun


8
Bu OSX'te de çalışır. /extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM.dmgPaketi SDK yöneticisinden indirdikten sonra yüklemeniz gerekir .
Jarett Millard

5
"Host GPU Kullan" ile Windows talimatları bana süper hızlı bir emülatör verdi! (Desteklenen bir Intel işlemcim ve bir nVidia grafik kartım var.) Animasyonlar tereyağlı pürüzsüz ( çoğu zaman ; diğer zamanlarda çok az sarsıntı)! Intel Atom (x86) CPU seçeneğini almak için AVD Manager için Eclipse'i yeniden başlatmanız gerektiğini unutmayın . İpucu: Çok fazla RAM ayırmayın. 1GB RAM ile emülatör başlatılamadı (GPU ile), ancak 512MB RAM ile sorunsuz bir şekilde çalıştı ve gerçekten hızlı bir şekilde önyüklendi (yine GPU ile).
ADTC

LogCat'in çok fazla Trace uyarısı ile spam olduğunu fark ettim. Bunları filtrelemek ^(?!.*(nativeGetEnabledTags)).*$için metin filtresi olarak kullanın . Bunu bir hata sorunu olarak bildirdim . Ayrıca, düzgün emülatör cihazı kapatmak zorunda düşünüyorum (güç düğmesini basılı tutun, ardından seçmek kapalı Güç (bir sonraki defa başlattığınızda hatalarını önlemek için) elimden sadece yakın ARM emülatör, ancak Intel emülatörü ile, sadece kapanış problem yaratıyor gibi görünüyor).
ADTC

Yapabilirsem sana +100 verirdim. Windows 8 üzerinde çalışıyor ve performanslar müthiş arttı!
Paolo M

2
Çalışması için Hyper V teknolojisini kontrol paneli altındaki program ve özellikler aracılığıyla devre dışı bırakmak zorunda kaldım.
Mike Flynn

34

GÜNCELLEME: Artık bir Intel x86 görüntüsü bulunduğuna göre, en iyi cevap yukarıdaki lezzetle.

CommonsWare'in doğru şekilde işaret ettiği gibi, emülatör yavaştır, çünkü Intel opcodes'e çeviri gerektiren bir ARM CPU'yu taklit eder. Bu sanallaştırma CPU'yu çiğner.

Emülatörü daha hızlı hale getirmek için daha fazla CPU vermelisiniz. Hızlı bir CPU ile başlayın veya mümkünse yükseltin.

Ardından, emülatöre sahip olduğunuz CPU'dan daha fazlasını verin:

  1. Hiper iş parçacığını devre dışı bırak - Emülatör birden fazla çekirdek kullanmıyor gibi göründüğünden, hiper iş parçacığı gerçekte emülatörün alacağı toplam CPU süresini azaltır. HT'yi devre dışı bırakmak, birden fazla CPU'dan yararlanan uygulamaları yavaşlatır. Hyperthreading, BIOS'unuzda devre dışı bırakılmalıdır.
  2. Emülatörün CPU 0 dışında bir CPU'da çalışmasını sağlayın - Bu, HT'yi kapatmaktan çok daha küçük bir etkiye sahiptir, ancak bazılarına yardımcı olur. Windows'ta, bir işlemin hangi CPU'da çalışacağını belirleyebilirsiniz. Birçok uygulama CPU 0'ı çiğner ve varsayılan olarak emülatör CPU 0'da çalışır. Emülatörü sonuncusunda çalışacak şekilde değiştiririm. OS X'te yakınlık ayarlayamayacağınızı unutmayın (bkz: /superuser/149312/how-to-set-processor-affinity-on-a-mac ).

Bu iki değişiklikle birlikte % 50 civarında bir iyileşme görüyorum .

Windows 7'de işlemci benzeşimini ayarlamak için:

  1. Görev Yöneticisini Aç
  2. Tüm İşlemleri Görüntüle'yi tıklayın (yönetici olarak çalıştırmak için aksi halde işlemci benzeşimini ayarlayamazsınız)
  3. Emulator.exe'ye sağ tıklayın ve Yakınlık Ayarla ... seçeneğini seçin.
  4. Yakınlığı Ayarla iletişim kutusunda, yalnızca son CPU'yu seçin

Not: Yakınlığı bu şekilde değiştirirseniz, yalnızca işlemin ömrü boyunca değişir. Bir sonraki başlangıçta, tekrar yapmalısınız.

resim açıklamasını buraya girin


22
Mantıksal işlemci miktarını yarıya indirdiğiniz için hiper iş parçacığını devre dışı bıraktığınızda CPU yüzdesi iki katına çıktı.
Timothy003

1
Cazibe gibi çalışır ama .. Ubuntu 11.10'da nasıl yapılacağını biliyor musunuz?
emeraldhieu

1
@ Timothy003 evet kesinlikle doğru. Ve emülatörün kullanacağı CPU'yu iki katına çıkardı.
mcohen75

3
Görev yöneticisinin gösterdiği sayıda yalnızca iki katına çıkabilirsiniz; gerçekte değil. % 100 CPU'da en az 4 iş parçacığına eşdeğer yeterli iş üretmek için yeterli yazılım çalıştırmıyorsanız, ağır CPU kullanımı yapan birkaç uygulama, naif varsayımınızın yarısı değil, neredeyse tüm çekirdeği etkili bir şekilde alacaktır. görev yöneticisinin görüntülediği anlamına gelir.
Dan Is Fiddling By Firelight

3
@ Ne Neely'nin ne dediğini doğrulamak için: Tek bir çekirdek uygulamam var, bu sadece% 100 cpu yakıyor. HT olduğunda, yaklaşık% 25 gösterir, yaklaşık% 50 göstermez, ancak aslında aynı zamanda hesaplaması gerekenleri hesaplar. Yani fark yok (en azından Sandy Bridge'de).
bartosz.r

17

Genymotion'a bir spin vermesini öneriyorum . Oracle'ın VirtualBox'ında çalışır ve ılımlı bir sistemde yasal olarak 60 fps'ye çarpacaktır.

İşte benim atölyelerimden birinden 2012'nin en son model MacBook Air'inde çalışan bir ekran görüntüsü:

56.6 fps hızında çalışan Nexus 7 emülatörü

Metni okuyamıyorsanız, 56.6 fps hızında çalışan bir Nexus 7 öykünücüsüdür. Ek (büyük!) Bonus, Google Play ve Google Play Hizmetlerinin sanal makinelerle birlikte gelmesidir.

(Demografik animasyonun kaynağı burada bulunabilir .)


12

API 15 v3 veya daha yenisini ve SDK Tools v17 + kullanıyorsanız GPU Donanım Hızlandırmasını etkinleştirin (Intel'in HAXM'ine ek olarak). Emülatör için grafik hızlandırma, ekran çizimini daha hızlı hale getirmek için geliştirme bilgisayarınızın grafik donanımından, özellikle de grafik işlem biriminden (GPU) yararlanır. Bu, hızda gözle görülür bir artış sağlar.

Grafik hızlandırmayı öykünücünüzde varsayılan olarak etkinleştirmek için : AVD'yi oluştururken, Donanım bölümünde Yeni'yi tıklatın, GPU öykünmesini seçin ve değeri Evet olarak ayarlayın.

Hızlandırmayı yalnızca çalışma zamanında etkinleştirmek için : öykünücüyü şu şekilde başlatırken -gpu bayrağını kullanın:

emulator -avd <avd_name> -gpu on

Kaynak: Google'ın Öykünücüyü Kullanma öğreticisi .


10

Düzenle Intel görüntülerini kullanmak bazı performans kazançları elde etmesine rağmen, Genymotion kullanılarak elde edilen performans çok daha fazladır. Bkz Paul Lammertsma cevabını .

Önceki Cevap

ADT rev 17 ile emülatör, x86 sistem görüntülerini Windows ve Mac OS X'te sanallaştırma modunda çalıştırmayı destekler. Bunun performans üzerinde belirgin bir etkisi vardır.

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

Sanal Makine Hızlandırmayı Yapılandırma: http://developer.android.com/guide/developing/devices/emulator.html#accel-vm


7

Son zamanlarda 3 gb ram ile bir çekirdek 2 @ 2.5'ten 8 gb ram ile bir i7 @ 1.73'e geçtim (her iki sistem de Ubuntu 10.10'u çalıştırdı) ve emülatör şimdi en az iki kat daha hızlı çalışıyor. Ona daha fazla donanım atmak kesinlikle yardımcı olur.


Bu gerçekten bir çözüm değil: emülatörün zaman başına daha yüksek bir verime sahip olmasını sağlayabilir, ancak aslında daha hızlı çalışmasını sağlamaz.
Daha net


4

Çoğu Windows uygulamasının varsayılan olarak "herhangi bir" çekirdeğe olacağı emülatörün varsayılan olarak yalnızca Core 0 olduğunu fark ettim. Ayrıca, başka bir çekirdeğe (son çekirdek gibi) koyarsanız, emülatörün çıldırmasına neden olabilir. Mümkünse, hız artışı için ağır CPU kullanım uygulamalarınızı diğer CPU çekirdeklerine koymayı deneyebilirsiniz.

Donanım açısından, tek çekirdekli uygulamalar için çalışan en hızlı CPU'yu alın. 2'den fazla çekirdek, emülatör performansı açısından büyük bir fark yaşamayabilir.

Eclipse + Android emülatörü birlikte bir ton RAM tüketir. En az 3 gig RAM öneriyorum çünkü 2 gig RAM içeren bir sistem kullandım ve sistem RAM bitti ve sayfa dosyasını kullanmaya başladığı için yavaşladı.

Bunun için en iyi CPU'ların muhtemelen yüksek bir saate sahip olacağını (sadece aynı seri btw'deki CPU'lar için bir ölçü olarak saat kullanacağını), SIMD olmayan işlemleri iyi idare edeceğini ve bir turbo takviye mekanizmasına sahip olacağını hissediyorum. Java tabanlı çok sayıda karşılaştırma ölçütü yoktur, ancak genel olarak sıkıştırma ve ofis gibi uygulama karşılaştırma ölçütlerini arar. Oyunlara veya medyaya bakmayın, çünkü bunlar SIMD'den büyük ölçüde etkilenir. Bir Java bulursanız, daha da iyi.


4

Bu yıl google I / O (2011), Google daha hızlı bir emülatör gösterdi. Sorun, ARM ve x86 arasındaki bayt kodunda çok fazla değil, QEMU tarafından gerçekleştirilen yazılım oluşturmadır. QEMU'nun oluşturulmasını atlıyorlar ve oluşturmayı doğrudan inandığım bir X sunucusuna gönderiyorlar. Gerçekten iyi bir performans ve fps ile bir araba oyunu gösterdiler.

Bunun geliştiriciler için ne zaman hazır olacağını merak ediyorum ...


Bu emülatörden haber var mı? Adı neydi?
alcor

Hiç haberim yok. Geçen yıl için Android emülatör güncellemelerini takip etmedim.
Cesar

3

Google kısa süre önce Android için yeni bir emülatör duyurdu. Eskisinden çok daha hızlı ve daha iyi. Bununla ilgili daha fazla bilgiyi burada bulabilirsiniz .


1

Ben clr sanal makine doğrudan kod opcode çeviri olmadan cpu kullanır çünkü düşünüyorum. Bu clr uygulaması için optimizasyon olabilir veya INTEL işlemcide başlatılan windows mobile / window phone 7 olabilir. Linux tabanlı Android platformu ve teorik olarak i686 ortamında sanal makinede android'i başlatabilirsiniz. Bu durumda vmware gibi sanal makineler bazı opcod'ları doğrudan çalıştırabilir. Ancak bu seçeneğe yalnızca Java'da yazarsanız izin verilecektir. Çünkü Java yürütmeden önce bayt kodlarını yorumlar veya önceden derler. bkz. http://www.taranfx.com/how-to-run-google-android-in-virtualbox-vmware-on-netbooks


1

Teşekkürler @zest! Bir cazibe gibi çalıştı. Bazı şeyler: Çekirdek panik sorunuyla başa çıkmak için HAXM için Intel'in düzeltmesini uygulamanız gerekiyor: http://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager Ayrıca, not , birden fazla abi'niz varsa, Android API'nın (r19) en son sürümündeki bir hata nedeniyle birini kaldırmanız gerekir: https://code.google.com/p/android/issues/detail?id= 66740 (x86 abi'yi istediğinizden bu durumda armeabi-v7a'yı çıkarın). Bunları çözmemin 45 dakikasından başka, emülatörün artan performansı açısından çok faydalı bir egzersizdi.




1

iyi bir grafik kartınız yoksa (benim gibi) düşük çözünürlüklü bir emülatör seçin (örneğin: Nexus S)


0

Intel (86) CPU / ABI kullanıyorum. ARM (armeabi-v7a) kullanarak başka bir emülatör oluşturdum ve hızda oldukça iyileşme buldum. Platform 4.1.2 API seviye 16 kullanıyorum


0

Umarım bu sana yardımcı olmuştur.

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

Sorunumu çözdü ...


0

Mevcut Android Studio'nuzu Android Studio 2.0'a güncelleyin güncelleyin ve ayrıca sistem görüntülerini güncelleyin.

Android Studio 2.0 emülatörü, Android'in önceki emülatöründen ~ 3 kat daha hızlı çalışır ve ADB geliştirmeleri ile artık uygulamaları ve verileri emülatöre fiziksel bir cihaza göre 10 kat daha hızlı aktarabilirsiniz. Fiziksel bir cihaz gibi, resmi Android emülatörü de yerleşik Google Play Hizmetleri'ni içerir, böylece daha fazla API işlevselliğini test edebilirsiniz. Son olarak, yeni emülatör aramaları, pili, ağı, GPS'yi ve daha fazlasını yönetmek için zengin yeni özelliklere sahiptir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.