Membuat emulator Android berjalan lebih cepat

251

Emulator Android agak lamban. Untuk beberapa perangkat, seperti Motorola Droid dan Nexus One, aplikasi berjalan lebih cepat di perangkat yang sebenarnya daripada emulator. Ini adalah masalah saat menguji game dan efek visual.

Bagaimana Anda membuat emulator berjalan secepat mungkin? Saya telah mempermainkan parameternya tetapi belum menemukan konfigurasi yang menunjukkan peningkatan nyata.

hpique
sumber
1
semua aplikasi saya berjalan lebih cepat di perangkat
16
Ini lucu karena simulator iPhone justru sebaliknya. Aplikasi berjalan lebih lambat di perangkat. Dalam kebanyakan kasus, saya lebih suka emulator yang lebih lambat, karena itu merangsang Anda untuk meningkatkan aplikasi Anda, tetapi kadang-kadang Anda hanya ingin melihatnya berfungsi seperti halnya di perangkat nyata.
hpique
1
Dimungkinkan untuk membuatnya JAUH lebih cepat alias normal dengan menggunakan VirtualBox - lihat stackoverflow.com/a/6058689/40961
David d C e Freitas
5
iOS dan Windows Mobile menggunakan Simulator, sedangkan Android menggunakan Emulator. Simulator mengimplementasikan kembali semua pustaka seluler dan API menggunakan pustaka inang, dan karenanya cepat. Emulator menggunakan pustaka yang sama seperti pada perangkat nyata, jadi lebih lambat. Dalam hal Android, jika Anda menggunakan mesin virtual Android, itu akan sangat cepat. Kami menyediakan vm gratis di sini: leapdroid.com
huisinro
2
... dan betapa gilanya itu 6 tahun kemudian, dan bahkan dengan HAXM dan gambar sistem x86 dan lingkungan dev yang dispesifikasikan dengan baik, emulator Android masih lambat seperti molase?
Agustus

Jawaban:

229

Halaman web resmi

~ 50% lebih cepat

Windows:

  • Instal "Intel x86 Emulator Accelerator (HAXM)" => SDK-Manager / Extras
  • Instal "Gambar Sistem Intel x86 Atom" => SDK-Manager / Android 2.3.3
  • Buka folder root Android SDK dan arahkan ke ekstra \ intel \ Hardware_Accelerated_Execution_Manager. Jalankan file IntelHaxm.exe untuk menginstal. (di Android Studio Anda dapat menavigasi ke: Pengaturan -> Android SDK -> SDK Tools -> Intel x86 Emulator Accelerator (penginstal HAXM))

  • Buat AVD dengan "Intel atom x86" CPU / ABI

  • Jalankan emulator dan periksa di konsol yang dijalankan HAXM (buka jendela Prompt Perintah dan jalankan perintah: sc query intelhaxm)

masukkan deskripsi gambar di sini

Juga jangan lupa pasang yang ini

masukkan deskripsi gambar di sini

PS selama pembuatan AVD menambahkan memori emulasi: Hardware / New / Device ram size / nilai pengaturan 512 atau lebih

Linux:

  • Instal KVM: buka GOOGLE, tulis "instalasi kvm"
  • Buat AVD dengan "Intel atom x86" CPU / ABI
  • Jalankan dari baris perintah: emulator -avd avd_name -qemu -m 512 -enable-kvm
  • Atau jalankan dari Eclipse: Jalankan / Jalankan Konfigurasi / Tab "Target" -> periksa Intel x86 AVD dan di jendela "Opsi Tambahan Emulator Command Line" tambahkan: -qemu -m 512 -enable-kvm (klik Run)

masukkan deskripsi gambar di sini

PS Untuk Fedora , untuk Ubuntu

OS-X:

  • Di Android SDK Manager, instal Intel x86 Atom System Image
  • Di Android SDK Manager, instal Intel x86 Emulator Accelerator (HAXM)
  • Di finder, buka lokasi instal Intel Emulator Accelerator dan instal IntelHAXM (buka dmg dan jalankan instalasi). Anda dapat menemukan lokasi dengan meletakkan mouse Anda di atas entri Emulator Accelerator di SDK Manager.
  • Buat atau perbarui AVD dan tentukan Intel Atom x86 sebagai CPU. Intel x86 Emulator Accelerator (HAXM) menunjukkan Lokasi

PS: Periksa alat ini, bahkan percobaan yang sangat nyaman

Gennadiy Ryabkin
sumber
8
Ini berfungsi di OSX juga. Anda perlu menginstal /extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM.dmgsetelah mengunduh paket dari manajer SDK.
Jarett Millard
5
Instruksi Windows dengan "Use Host GPU" memberi saya emulator super cepat! (Saya memiliki prosesor Intel yang didukung dan kartu grafis nVidia.) Animasi ini mentega mulus ( sebagian besar waktu ; di waktu lain, sangat sedikit jerkiness)! Perhatikan bahwa Anda harus memulai ulang Eclipse untuk AVD Manager untuk mengambil opsi CPU Intel Atom (x86) . Kiat: Jangan mengalokasikan terlalu banyak RAM. Dengan RAM 1GB, emulator gagal untuk memulai (dengan GPU) tetapi dengan 512MB RAM berjalan dengan lancar dan mem-boot dengan sangat cepat (lagi dengan GPU).
ADTC
Saya menemukan bahwa LogCat mendapat spam dengan banyak peringatan Jejak. Untuk memfilternya, gunakan ^(?!.*(nativeGetEnabledTags)).*$sebagai filter teks. Saya telah melaporkan ini sebagai masalah bug . Juga, saya pikir Anda harus mematikan perangkat emulator dengan benar (tahan tombol daya, lalu pilih Matikan ) untuk menghindari kesalahan saat Anda memulainya lain kali (saya hanya bisa menutup emulator ARM, tetapi dengan emulator Intel, hanya menutup tampaknya menciptakan masalah).
ADTC
Saya akan memberi Anda +100 jika saya bisa. Bekerja pada Windows 8 dan kinerja meningkat luar biasa!
Paolo M
2
Saya harus menonaktifkan teknologi Hyper V terlebih dahulu melalui program dan fitur di bawah panel kontrol untuk membuatnya berfungsi.
Mike Flynn
34

UPDATE: Sekarang gambar Intel x86 tersedia, jawaban terbaik adalah dengan semangat di atas.

Seperti yang ditunjukkan CommonsWare dengan benar, emulator lambat karena mengemulasi CPU ARM, yang memerlukan terjemahan ke opcode Intel. Virtualisasi ini mengunyah CPU.

Untuk membuat emulator lebih cepat, Anda harus memberinya lebih banyak CPU. Mulailah dengan CPU cepat atau tingkatkan versi jika Anda bisa.

Kemudian, beri emulator lebih banyak dari CPU yang Anda miliki:

  1. Disable Hyperthreading - Karena emulator tampaknya tidak menggunakan lebih dari satu core, hyperthreading sebenarnya mengurangi jumlah waktu CPU keseluruhan yang akan didapat emulator. Menonaktifkan HT akan memperlambat aplikasi yang memanfaatkan banyak CPU. Hyperthreading harus dinonaktifkan di BIOS Anda.
  2. Jadikan emulator berjalan pada CPU selain CPU 0 - Ini memiliki dampak yang jauh lebih kecil daripada mematikan HT, tetapi ini membantu beberapa. Di Windows, Anda dapat menentukan CPU mana proses akan berjalan. Banyak aplikasi akan mengunyah CPU 0, dan secara default emulator berjalan pada CPU 0. Saya mengubah emulator untuk berjalan di yang terakhir. Perhatikan bahwa pada OS X Anda tidak dapat menetapkan afinitas (lihat: /superuser/149312/how-to-set-processor-affinity-on-a-mac ).

Saya melihat peningkatan sekitar 50% dengan dua perubahan ini.

Untuk mengatur afinitas prosesor pada Windows 7:

  1. Buka Task Manager
  2. Klik Lihat Semua Proses (untuk dijalankan sebagai administrator, jika tidak, Anda tidak dapat mengatur afinitas prosesor)
  3. Klik kanan pada emulator.exe dan pilih Set Affinity ...
  4. Pada dialog Set Affinity, pilih hanya CPU terakhir

Catatan: Ketika Anda mengubah afinitas dengan cara ini, itu hanya berubah selama masa proses. Mulai berikutnya, Anda harus melakukannya lagi.

masukkan deskripsi gambar di sini

mcohen75
sumber
22
Persentase CPU dua kali lipat ketika Anda menonaktifkan hyper-threading karena Anda mengurangi separuh jumlah prosesor logis.
Timothy003
1
Ini berfungsi seperti pesona tapi .. Apakah Anda tahu bagaimana melakukannya di Ubuntu 11.10?
emeraldhieu
1
@ Timothy003 ya benar sekali. Dan menggandakan CPU yang akan digunakan emulator.
mcohen75
3
Anda hanya melihat penggandaan dalam jumlah yang ditunjukkan pengelola tugas; tidak dalam kenyataan. Jika Anda tidak menjalankan perangkat lunak yang cukup untuk menghasilkan pekerjaan yang cukup untuk memiliki setara dengan setidaknya 4 utas pada CPU 100%, beberapa aplikasi yang melakukan penggunaan CPU berat masih akan secara efektif mendapatkan hampir seluruh inti, bukan setengah inti asumsi naif Anda. apa yang ditampilkan oleh task manager.
Dan Is Fiddling By Firelight
3
Untuk mengkonfirmasi apa yang dikatakan oleh @Dan Neely: Saya memiliki aplikasi inti tunggal, yang hanya membakar 100% cpu. Ketika saya memiliki HT itu menunjukkan sekitar 25%, tanpa itu menunjukkan sekitar 50%, tetapi sebenarnya dalam menghitung apa yang harus dihitung dalam waktu yang sama. Jadi tidak ada perbedaan (setidaknya di Sandy Bridge).
bartosz.r
17

Saya ingin menyarankan Genymotion memutar. Ini berjalan di VirtualBox Oracle, dan secara sah akan mencapai 60 fps pada sistem moderat.

Berikut screencap dari salah satu bengkel saya, yang berjalan pada model MacBook Air 2012 kelas bawah:

Emulator Nexus 7 berjalan pada 56,6 fps

Jika Anda tidak dapat membaca teks, ini adalah emulator Nexus 7 yang berjalan pada 56,6 fps. Bonus tambahan (besar!) Adalah bahwa Google Play dan Google Play Services dikemas dengan mesin virtual.

(Sumber animasi yang diperagakan dapat ditemukan di sini .)

Paul Lammertsma
sumber
12

Aktifkan Akselerasi Perangkat Keras GPU (selain HAXM Intel), jika Anda menggunakan API 15 v3 atau yang lebih baru dan SDK Tools v17 +. Akselerasi grafis untuk emulator mengambil keuntungan dari perangkat keras komputer grafis pengembangan Anda, khususnya unit pemrosesan grafis (GPU), untuk membuat gambar layar lebih cepat. Ini memberikan dorongan nyata dalam kecepatan.

Untuk mengaktifkan akselerasi grafik yang diaktifkan secara default pada emulator Anda : saat membuat AVD, di bagian Hardware, klik New, pilih emulasi GPU dan tetapkan nilainya ke Ya.

Untuk mengaktifkan akselerasi hanya saat runtime : gunakan flag -gpu saat memulai emulator seperti ini:

emulator -avd <avd_name> -gpu on

Sumber: Google Menggunakan tutorial Emulator .

John Lehmann
sumber
10

Sunting Meskipun menggunakan gambar Intel mendapatkan beberapa keuntungan kinerja, kinerja yang diperoleh dengan menggunakan Genymotion jauh lebih besar. Lihat jawaban Paul Lammertsma .

Jawaban Sebelumnya

Dengan ADT rev 17 emulator mendukung menjalankan gambar sistem x86 dalam mode virtualisasi pada Windows dan Mac OS X. Ini memiliki dampak nyata pada kinerja.

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

Mengkonfigurasi Akselerasi Mesin Virtual: http://developer.android.com/guide/developing/devices/emulator.html#accel-vm

ThomasW
sumber
7

Saya baru-baru ini beralih dari inti 2 @ 2.5 dengan ram 3gb ke i7 @ 1.73 dengan ram 8gb (kedua sistem menjalankan Ubuntu 10.10) dan emulator berjalan setidaknya dua kali lebih cepat sekarang. Melemparkan lebih banyak perangkat keras tentu membantu.

TripleG
sumber
Ini sebenarnya bukan solusi: itu dapat membuat emulator memiliki throughput yang lebih tinggi per waktu, tetapi itu tidak benar-benar membuatnya berjalan lebih cepat.
jelas
4

Saya perhatikan bahwa emulator hanya default untuk Core 0, di mana sebagian besar aplikasi Windows akan default ke inti "apa saja". Juga, jika Anda meletakkannya di inti lain (seperti inti terakhir), itu dapat membuat emulator menjadi gila. Jika Anda bisa, Anda dapat mencoba menempatkan aplikasi penggunaan CPU berat Anda di core CPU lain untuk meningkatkan kecepatan.

Dari segi perangkat keras, dapatkan CPU tercepat yang bisa Anda dapatkan yang berfungsi untuk aplikasi inti tunggal. Lebih dari 2 core mungkin tidak mengalami perbedaan besar dalam hal kinerja emulator.

Eclipse + emulator Android bersama-sama memakan satu ton RAM. Saya akan merekomendasikan 3 gigs RAM setidaknya karena saya menggunakan sistem dengan 2 gigs RAM, dan itu melambat karena sistem kehabisan RAM dan mulai menggunakan file halaman.

Saya merasa bahwa CPU terbaik untuk itu mungkin akan memiliki jam tinggi (hanya gunakan jam sebagai ukuran untuk CPU dalam seri btw yang sama), menangani operasi non-SIMD dengan baik, dan memiliki mekanisme turbo boost. Tidak banyak tolok ukur berbasis Java, tetapi secara keseluruhan mencari tolok ukur aplikasi seperti kompresi dan kantor. Jangan melihat permainan atau media karena itu sangat dipengaruhi oleh SIMD. Jika Anda menemukan yang Java, bahkan lebih baik.

Joe P.
sumber
4

Pada tahun ini google I / O (2011), Google menunjukkan emulator yang lebih cepat. Masalahnya bukan pada kode byte antara ARM dan x86 tetapi rendering perangkat lunak dilakukan oleh QEMU. Mereka melewati rendering QEMU dan mengirim rendering langsung ke server X yang saya percaya. Mereka menunjukkan permainan mobil dengan performa dan fps yang sangat bagus.

Saya ingin tahu kapan itu akan tersedia untuk pengembang ...

Cesar
sumber
Ada berita tentang emulator ini? Siapa namanya?
alcor
Saya tidak punya berita. Saya belum menindaklanjuti pembaruan emulator Android selama setahun terakhir ini.
Cesar
3

Google baru-baru ini mengumumkan emulator baru untuk Android. Ini jauh lebih cepat dan lebih baik daripada yang lama. Anda dapat menemukan info lebih lanjut di sini .

Koc
sumber
1

Saya pikir itu karena mesin virtual CLR menggunakan CPU secara langsung tanpa terjemahan kode opcode. Ini mungkin optimasi untuk aplikasi CLR atau mungkin windows mobile / window phone 7 yang dimulai pada prosesor INTEL. Platform Android berbasis linux dan secara teoritis Anda dapat memulai Android di mesin virtual di lingkungan i686. Dalam hal ini mesin virtual seperti vmware dapat menjalankan beberapa opcodes secara langsung. Tetapi opsi ini hanya akan diizinkan jika Anda menulis di Java. Karena Java menginterpretasikan byte-code mereka atau mengkompilasi sebelum eksekusi. lihat: http://www.taranfx.com/how-to-run-google-android-in-virtualbox-vmware-on-netbooks

Assad
sumber
1

Terima kasih @est! Bekerja seperti pesona. Beberapa hal yang perlu diperhatikan: Perlu menerapkan perbaikan terbaru Intel untuk HAXM untuk menangani masalah panik kernel: http://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager Juga, perhatikan , jika Anda memiliki lebih dari satu abi, Anda harus menghapus instalan satu karena bug di versi terbaru API Android (r19): https://code.google.com/p/android/issues/detail?id= 66740 (hapus armeabi-v7a dalam kasus ini, karena Anda menginginkan abi x86). Selain 45 menit yang saya butuhkan untuk menyelesaikannya, itu adalah latihan yang sangat bermanfaat dalam hal peningkatan kinerja emulator.

horcle_buzz
sumber
1

Anda juga dapat mencoba Visual Studio Android Emulator , yang juga dapat diinstal sebagai emulator mandiri (Anda tidak perlu Visual Studio). Harap dicatat, itu hanya dapat diinstal pada Windows Pro atau sistem yang lebih tinggi.

David Dostal
sumber
1

Gunakan Genymotion sebagai ganti emulator. Genymotion memiliki kinerja yang lebih baik https://www.genymotion.com

Oleg Tarashkevich
sumber
1

pilih emulator resolusi rendah (misalnya: Nexus S) jika Anda tidak memiliki kartu grafis yang baik (seperti saya)

Dan Alboteanu
sumber
0

Saya telah menggunakan Intel (86) CPU / ABI. Saya membuat emulator lain menggunakan ARM (armeabi-v7a) dan saya menemukan peningkatan dengan kecepatan. Saya menggunakan platform 4.1.2 API level 16

aneh_developer
sumber
0

Saya harap ini akan membantu Anda.

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

Itu memecahkan masalah saya ...

RajeshVijayakumar
sumber
0

Perbarui Android Studio Anda saat ini ke Android Studio 2.0 dan perbarui gambar sistem.

Emulator Android Studio 2.0 berjalan ~ 3x lebih cepat dari emulator Android sebelumnya, dan dengan peningkatan ADB sekarang Anda dapat mendorong aplikasi dan data 10x lebih cepat ke emulator daripada ke perangkat fisik. Seperti perangkat fisik, emulator Android resmi juga menyertakan layanan Google Play bawaan, sehingga Anda dapat menguji lebih banyak fungsionalitas API. Akhirnya, emulator baru memiliki banyak fitur baru untuk mengelola panggilan, baterai, jaringan, GPS, dan banyak lagi.

Umer
sumber