Android Emulator is too slow on Windows Hypervisor Platform - android

I have to work with Android Studio alongside with Docker for Windows, and as I understand, the best (only?) option for doing this on Windows at the moment is using Windows Hypervisor Platform. The problem is that the Android emulator on this thing is so slow that it's almost unusable. Starting Chrome takes several seconds, opening a simple website takes half a minute. I am new to Android development, so I may be missing something, but I tried everything I could google:
Virtualization is enabled in BIOS, and of course Windows Hypervisor Platform is enabled as well
I tried all kinds of images - API Level 28 & 26, x86 (even x86_64), with or without Google Play.
I tried increasing the image's RAM and Heap size (4096MB and 1024MB respectively).
Selecting Hardware acceleration in the image options.
Nothing of that helped or even gave me any noticeable improvement. Am I doing something wrong? It seems like Android Emulator is unusable on Windows Hypervisor Platform.
My PC specs: RAM 16GB, Intel i7 2.6 GHz

Related

With sufficient specs and Intel® VT enabled, Android Emulator and Genymotion both lag when they're running

When I first started using the emulator than came with Android Studio, it was running very sluggish even with HAXM enabled. I decided to play around with the RAM allowance along with switching between the Software and Hardware option but no dice. I decided later to install Genymotion due to the good reviews and it runs as slow as it does with the other emulator. I've also checked to see if Intel VT was enabled and it was. I also don't run any major applications during the emulation.
I've tried a number of methods and I've yet to find and fix this problem of the poor performance of these emulators.
The processor I'm using is a quad core i5-6300HQ with 8 gigs of ram and a GTX960M graphics card. Windows, Genymotion, and Android Studio (with its SDKs) are all installed onto an SSD.
Is there a method of fixing this that I've missed?
Thanks.
The Resolution I'm using is 1440x2560.

AVD stays stuck on "Android is starting"

I've no issue launching a Wear VD but I can't get a normal Android to start...
Working on Windows 7 - 64 bits, with Intel Core 2 Duo E8200 (so no 64 bits emulation) and 6Gb RAM.
When I try to launch a virtual device with avd,
If I try with Intel Atom (x86), I get stuck on the Android screen :
Using Google APIs Intel Atom (x86), it stays stuck on the final loading screen :
Android is starting
Starting apps.
Here are the settings :
I've tried to :
lower the emulated RAM under 768 Mb as advised (stuck earlier (at Optimizing app N of 74))
maximise emulated RAM (2048 Mb)
but that doesn't fix the problem...
Any ideas?
Okay its not the previous HAXM errors of 2015 as it was escalated with Intel and they fixed it asof summer 2015:
https://software.intel.com/en-us/forums/android-applications-on-intel-architecture/topic/536330
But that was a different set of CPUs than the on you listed
Probably since you have Windows 7 64-bit the feature may be disabled in your BIOS. The way to enable it in BIOS will be different due to the OEM of the laptop or desktop computer but usually can be found at the OEM's website as its a common asked question.

How to Boost up the emulator

I am using Android Studio in AMD processor system and the emulator is running very slowly. In the emulator i have allocated RAM size to 1 GB and system image to armeabi-v7a of API-level 23 but still the emulator comes after delay of 10 minutes.please help me in it
Well I suggest you to use Genymotion for Android Studio. Blazing fast! Just needs one time installation. No more AVD pain.
Features
System Requirements
Microsoft Windows 7, 8/8.1, 10 (32/64 bit) 64 bit CPU, with VT-x or
AMD-V capability, enabled in BIOS settings Recent and dedicated GPU
400 MB disk space 2GB RAM
You can use Genymotion which runs very smoothly. Also, you can update your Android Studio to latest version, update your gradle version to latest version. Remove all your old emulators and create new emulator which is fast compare to other old emulators.
As far as I know, all emulators like Xamarin Android Player, Genymotion, Nox, BlueStacks, ... using x86-based system images because they are about 10 times faster than ARM-based system images.
if it's not necessary to use ARM-based system image you can use another emulator like Genymotion or Xamarin Android Player or Nox (I prefer to use Nox) but if you need an ARM-based emulator try enabling Snapshot or Use of host GPU when creating a new Virtual Device to get faster operation.

i5, 6GB RAM and Android 3.0-3.2 emulator still unsuable (cannot start any app)?

I do not know what to do. I purchased a new laptop, hp pavillion i5 6GB RAM, started Android 3.2 emulator and it is still as slow as unusable!!!
It's not that it is slow, it's that I cannot do anything.
I set 1GB of RAM, disabled camera on emulator and run it. When I click on Applications, they first load for 30s and then I am not able to start any app, not mine, not default ones. All I can do is return to desktop and open Applications menu.
I see people complain that the emulator is slow and I am not even able to make it run. What is worse, my laptop eats games like a sandwich, but it chokes with Android emulator 3.2. The same is with Android 3.0 emulator!
Can anyone help me set up the emulator so that I can run it on my machine?
PS. if you want, I will record a video and post it to visually see what I am talking about.
I do not know what to do. I purchased a new laptop, hp pavillion i5 6GB RAM, started Android 3.2 emulator and it is still as slow as unusable!!!
The Android emulator uses a single core. If you had gone with a Core i7 with Turbo Boost, that would have helped. Your Core i5 is not an especially powerful CPU on a per-core basis.
The Android 3.x emulators also do all graphics purely in software (no hardware graphics acceleration) and convert ARM instructions to x86 on the fly.
Can anyone help me set up the emulator so that I can run it on my machine?
Start by using the Android 4.0 emulator, with the latest Android development tools. This uses your desktop's GPU for graphics rendering, and it helps performance a bit.
If that proves insufficient, you can start switching to x86 emulator images if you are not doing NDK development (where you will tend to want to test on ARM). At the moment, the only official x86 image is for 2.3.3, but there is an unofficial one for 4.0.3 built from the AOSP that runs exceptionally fast (at least on Linux, haven't tried it on Windows).
My only suggestion to you would be to change the "ADB Connection Timeout (ms)" in Eclipse under Window->Preferences->Android->DDMS. I am using a HP Pavillion 486 laptop, and was really struggling with the emulators. I changed the default timeout value from 5000 ms (5 sec) to 60000 ms (1 minute). This didn't solve all of my problems, but it did help in the startup of both the emulator and my applications.

Making the Android emulator run faster

The Android emulator is a bit sluggish. For some devices, like the Motorola Droid and the Nexus One, the app runs faster in the actual device than the emulator. This is a problem when testing games and visual effects.
How do you make the emulator run as fast as possible? I've been toying with its parameters but haven't found a configuration that shows a noticeable improvement yet.
Official web page
~50% faster
Windows:
Install "Intel x86 Emulator Accelerator (HAXM)" => SDK-Manager/Extras
Install "Intel x86 Atom System Images" => SDK-Manager/Android 2.3.3
Go to the Android SDK root folder and navigate to extras\intel\Hardware_Accelerated_Execution_Manager. Execute file IntelHaxm.exe to install. (in Android Studio you can navigate to: Settings -> Android SDK -> SDK Tools -> Intel x86 Emulator Accelerator (HAXM installer))
Create AVD with "Intel atom x86" CPU/ABI
Run emulator and check in console that HAXM running (open a Command Prompt window and execute the command: sc query intelhaxm)
Also don't forget install this one
P.S. during AVD creation add emulation memory: Hardware/New/Device ram size/set up value 512 or more
Linux:
Install KVM: open GOOGLE, write "kvm installation "
Create AVD with "Intel atom x86" CPU/ABI
Run from command line: emulator -avd avd_name -qemu -m 512 -enable-kvm
Or run from Eclipse: Run/Run Configurations/Tab "Target" - > check Intel x86 AVD and in "Additional Emulator Command Line Options" window add: -qemu -m 512 -enable-kvm (click Run)
P.S. For Fedora, for Ubuntu
OS-X:
In Android SDK Manager, install Intel x86 Atom System Image
In Android SDK Manager, install Intel x86 Emulator Accelerator (HAXM)
In finder, go to the install location of the Intel Emulator Accelerator and install IntelHAXM (open the dmg and run the installation). You can find the location by placing your mouse over the Emulator Accelerator entry in the SDK Manager.
Create or update an AVD and specify Intel Atom x86 as the CPU.
P.S: Check this tool, very convenient even trial
UPDATE: Now that an Intel x86 image is available, the best answer is by zest above.
As CommonsWare has correctly pointed out, the emulator is slow because it emulates an ARM CPU, which requires translation to Intel opcodes. This virtualization chews up CPU.
To make the emulator faster, you have to give it more CPU. Start with a fast CPU or upgrade if you can.
Then, give the emulator more of the CPU you have:
Disable Hyperthreading - Since the emulator doesn't appear to utilize more than one core, hyperthreading actually reduces the amount of overall CPU time the emulator will get. Disabling HT will slow down apps that take advantage of multiple CPUs. Hyperthreading must be disabled in your BIOS.
Make the emulator run on a CPU other than CPU 0 - This has a much smaller impact than turning off HT, but it helps some. On Windows, you can specify which CPU a process will run on. Many apps will chew up CPU 0, and by default the emulator runs on CPU 0. I change the emulator to run on the last one. Note that on OS X you cannot set affinity (see: https://superuser.com/questions/149312/how-to-set-processor-affinity-on-a-mac).
I'm seeing somewhere around a 50% improvement with these two changes in place.
To set processor affinity on Windows 7:
Open Task Manager
Click View All Processes (to run as administrator, otherwise you can't set processor affinity)
Right click on emulator.exe and choose Set Affinity...
On the Set Affinity dialog, select just the last CPU
Note: When you change affinity in this way, it's only changed for the lifetime of the process. Next start, you have to do it again.
I would like to suggest giving Genymotion a spin. It runs in Oracle's VirtualBox, and will legitimately hit 60 fps on a moderate system.
Here's a screencap from one of my workshops, running on a low-end 2012 model MacBook Air:
If you can't read the text, it's a Nexus 7 emulator running at 56.6 fps. The additional (big!) bonus is that Google Play and Google Play Services come packaged with the virtual machines.
(The source of the demoed animation can be found here.)
Enable GPU Hardware Acceleration (in addition to Intel's HAXM), if you are using API 15 v3 or newer and SDK Tools v17+. Graphics acceleration for the emulator takes advantage of your development computer's graphics hardware, specifically its graphics processing unit (GPU), to make screen drawing faster. This gives a noticeable boost in speed.
To enable graphics acceleration enabled by default on your emulator: when creating the AVD, in the Hardware section, click New, select GPU emulation and set the value to Yes.
To enable acceleration only at runtime: use the -gpu flag while starting the emulator like this:
emulator -avd <avd_name> -gpu on
Source: Google's Using the Emulator tutorial.
Edit Although using the Intel images gets some performance gains, the performance gained by using Genymotion is much greater. See Paul Lammertsma's answer.
Previous Answer
With ADT rev 17 the emulator supports running x86 system images in virtualization mode on Windows and Mac OS X. This has a noticeable impact on performance.
ADT rev 17 notes:
http://android-developers.blogspot.jp/2012/03/updated-sdk-tools-and-adt-revision-17.html
Configuring Virtual Machine Acceleration:
http://developer.android.com/guide/developing/devices/emulator.html#accel-vm
I recently switched from a core 2 # 2.5 with 3gb of ram to an i7 # 1.73 with 8gb ram (both systems ran Ubuntu 10.10) and the emulator runs at least twice as fast now. Throwing more hardware at it certainly does help.
Just wanted to say that after I installed the Intel HAXM accelerator and use the Intel Atom image the emulator seems to run 50 times faster. The difference is amazing, check it out!
http://www.developer.com/ws/android/development-tools/haxm-speeds-up-the-android-emulator.html
I noticed that the emulator defaults to only Core 0, where most Windows applications will default to "any" core. Also, if you put it on another core (like the last core), it may make the emulator go crazy. If you can, you can try putting your heavy-CPU usage applications on the other CPU cores for a boost in speed.
Hardware-wise, get the fastest CPU you can get that works for single-core applications. More than 2 cores might not experience a huge difference in terms of emulator performance.
Eclipse + the Android emulator together eat up a ton of RAM. I would recommend 3 gigs of RAM at least because I used a system with 2 gigs of RAM, and it slowed down because the system ran out of RAM and started to use the page file.
I feel that the best CPUs for it will probably have a high clock (only use clock as a measure for CPUs in the same series btw), handle non-SIMD operations well, and have a turbo boost mechanism. There aren't many Java-based benchmarks, but overall look for application benchmarks like compression and office. Don't look at gaming or media since those are affected greatly by SIMD. If you find a Java one, even better.
On this year google I/O (2011), Google demonstrated a faster emulator. The problem is not so much on the byte code between ARM and x86 but the software rendering performed by QEMU. They bypass the rendering of QEMU and send the rendering directly to an X server I believe. They showed a car game with really good performace and fps.
I wonder when that will be available for developers...
Google recently announced a new emulator for Android. It's a much faster and better than the old one. You can find more info about it here.
choose a low resolution emulator (eg: Nexus S) if you don't have a good graphic card (like me)
I think it is because clr virtual machine uses cpu directly without code opcode translation.
It may be optimization for clr application or may be windows mobile/window phone 7 started on INTEL proccessor.
Android platform based on linux and theoretically you can start android on virtual machine in i686 environment. In this case virtual machines such as vmware could execute some opcodes direcly. But this option will be allowed only if you write on the Java. Because the Java interpret their byte-code or precompile it before execution.
see:
http://www.taranfx.com/how-to-run-google-android-in-virtualbox-vmware-on-netbooks
Thank you #zest! Worked like a charm. Some things of note: Need to apply Intel's hotfix for the HAXM to deal with kernel panic issue: http://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager
Also, note, if you have more than one abi, you need to uninstall one due to a bug in the latest version of the Android API (r19): https://code.google.com/p/android/issues/detail?id=66740 (remove armeabi-v7a in this case, since you want the x86 abi). Other than the 45-minutes it took me to resolve these, it was an very rewarding exercise in terms of the increased performance of the emulator.
You could also try the Visual Studio Android Emulator, which can also be installed as a standalone emulator (you don't need Visual Studio). Please note, that it can be installed only on Windows Pro or higher systems.
Use Genymotion instead of emulator. Genymotion has better performance
https://www.genymotion.com
Enabling this option worked for me.
AVD Manager -> Select device and click Edit-> Enable the option 'Use Host GPU'
I've been using the Intel(86) CPU/ABI. I created another emulator using the ARM(armeabi-v7a) and i found quite an improvement with the speed. I'm using platform 4.1.2 API level 16
Update your current Android Studio to Android Studio 2.0 And also update system images.
Android Studio 2.0 emulator runs ~3x faster than Android’s previous emulator, and with ADB enhancements you can now push apps and data 10x faster to the emulator than to a physical device. Like a physical device, the official Android emulator also includes Google Play Services built-in, so you can test out more API functionality. Finally, the new emulator has rich new features to manage calls, battery, network, GPS, and more.
Well question is from 2011 and I am answering in 2022 the best answer in my experience is to start emulator from command in that way the emulator starts a dedicated process and not a sub process of android studio. If the process is independent then it will be able to use the GPU properly and can utilize all resources unlike starting emulator from device manager.
You can create AVD from device manager and start is from the avd folder below is the way to start the emulator independently.
How to open emulator command line

Categories

Resources