Using Android-X86 as an Emulator in Hyper-V for Windows

Everyone knows how S-L-O-W and painful the Android emulator can be when developing. The Intel x86 system images are better, but still a bit slow, so most of us test and debug on actual devices. Still, emulators come in handy. In the past, I came across the Android x86 project and thought it would be a good option, but found the project to not be ready for prime time. With their 4.4 release earlier this month, that has changed.

It still isn’t straight forward to install, so I am going to document the steps and some of the problems I ran into.

Installation

First, download the ISO for the 4.4 or newer release Android x86 from the downloads page.

Next fire up Hyper-V Manager. I assume you have some experience creating virtual machines using Hyper-V, so I am just going to outline the setup. If you need more info, Google it or check out this quick-start.

First, we need to make sure that a Virtual Switch is setup to enable networking. If you haven’t already done it for another virtual machine, click Virtual Switch Manager on the right and create a new External Virtual Switch. Name it something like Ethernet and make sure it is linked to your Ethernet card, not your WiFi.

Virtual Switch Manager

Back in Hyper-V Manager, at the top right, click New, Virtual Machine and name it Android 4.4.

New Virtual Machine Wizard

Specify Generation 1 on the next screen, then select the startup memory. You probably want to increase it to 1024 or 2048 MB. Also, select Use Dynamic Memory.

New Virtual Machine Wizard - Memory

In Configure Networking, select the Ethernet switch we setup previously.

On the Connect Virtual Hard Disk page, you can use the defaults, but you will want to decrease the size of the disk to something like 16 GB.

New Virtual Machine Wizard - Connect Virtual Hard Disk

On the Installation Options page, select Install an operating system from a bootable CD/DVD-ROM and select the ISO you downloaded from Android-x86.

New Virtual Machine Wizard - Install Options

You can now click Next, check out the summary and click Finish to create your new virtual machine.

In Hyper-V Manager, click on your new Android virtual machine and click Connect in the lower right.

Connect to Virtual Machine

This will open the virtual machine in a powered off state. Press the Start button in the toolbar to power up and boot the machine. It will boot to the Live and Installation CD screen. Use the keyboard to scroll down and select Installation – Install Android-x86 to harddisk.

Boot to install

Select Create/Modify partitions,

Create partitions

Use the keyboard to highlight New and press Enter.

New Partition

 

Select Primary, then accept the size of the partition, then click on Bootable.

Bootable Partition

Now, highlight Write, press Enter and type in yes to create the partition. You can now Quit.

Write partition

You can now choose sda1 Linux Virtual Disk.

Choose partition

Format as ext3. confirm your selection, then wait while the partition is created. It will sit at 0% for awhile, don’t worry, it will go.

ext3

Next you will be asked if you want to install GRUB. Say yes.

Grub

 

Also say yes to making /system read-write.

system

It will now install Android on your virtual disk.

Installing

 

2014-08-19 16_24_13-Android 4.4 on XPS15 - Virtual Machine Connection

 

After a successful installation, you will be asked if you want to run Android or reboot. Don’t do either, click on the Turn Off button to shutdown the machine, then go to Media | DVD Drive and Eject the Android X86 ISO. Now press Start to boot the machine.

You will see the GRUB boot screen, then it will start booting Android and go to the initial setup. Step through as you would any Android device with a few small points.


Welcome

 

On the Just a sec progress screen, click the screen with the mouse a couple of times so that it doesn’t time out and lock the device.

2014-08-19 16_32_03-

 

Skip Wi-Fi setup. Your Ethernet card will act like cell data.

WiFi

If you have a Google account and want to use it, click Yes, otherwise No.

Google

Once you are done the setup, immediately go to Settings | Display | Sleep and set it to never. When Android x86 locks the screen, you cannot get it to wake up in Hyper-V. If anyone figures out how to do it, please post the solution in the comments.

Sleep

Debugging in Android Studio

Now for the fun stuff.

Setup the Emulator for Debugging

First, we need to enable debugging on the device. Go to Settings | About tablet and click on the Build number 7 times to enable the Developer Options.

Go back to settings and open Developer Options and turn on USB debugging. I also find it useful to enable Show Touches in the Input section so that you can see the mouse clicks.

Next, go back to settings and into Security and enable Unknown Sources.

Connect ADB

In Android, run the Terminal Emulator. The font is probably way too small to see, so go into Preferences and increase the font size.

Back in the emulator window, type netcfg and take note of the IP address of eth0.

netcfg

Now, back on Windows open a command prompt (with a path to your Android tools) and type adb connect [ipaddress] with the IP address from the device. Now when you do an adb devices, you should see your emulator listed.

C:\src>adb connect 10.224.81.122
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
connected to 10.224.81.122:5555

C:\src>adb devices
List of devices attached
10.224.81.122:5555 device

Debug Your App from Android Studio

Launch Android Studio and load your project. In the configuration dropdown in the toolbar, select Edit Configurations. In the dialog, click on your app configuration and in the Target Device section, make sure it says Show chooser dialog. Close the configuration dialog.

You can now Run or Debug your app and a Choose Device dialog will come up with your emulator listed.

Choose Device

So far, I haven’t been able to adjust the emulator resolution to portrait mode and you can’t rotate the device. From what I can tell, Hyper-V limits the available resolutions to common desktop resolutions. There is also no sound in the emulator and I haven’t been able to get it working with my WiFi card yet, but it is a great option for quick debugging and testing.

That’s all there is to it. If you have any solutions, questions or problems, post them in the comments.

  • AB2345

    If you have a reasonably recent PC keyboard, it will have a context menu key next to the right hand Ctrl key. When the Android sleeps, press that. I have an Android VM that is connected to a personal account and I have a short timeout and screen password on it.
    EDIT – Also, I use “Adaptive Rotation Lock (Free)” to force and lock orientation. Dolphin went sideways on me until I force locked it in landscape.

  • Sorry, I don’t use Xamarin in Visual Studio, nor have I ever heard of that error before. Have you tried this?

  • Andreas Daxer

    Hi Robert,

    thanks for the brilliant description! I followed it along and got everything running in Android Studio. Unfortunately, in Visual Studio (with Xamarin) it could not start and reported an error: “Deployment failed due to an error in FastDev assembly synchronization.”
    Have you any clue what can go wrong there? I can send you the stacktrace if this helps.

    Thank you very much, if you can help me, would be great.
    Best regards, Andreas