Faster Android Emulator Alternative – Using VirtualBox
The Android SDK Emulator can be quite slow on some systems, which makes Android app debugging especially painful for those who aren’t in possession of a physical device to test their Android apps on. Thankfully there is a solution by the guys at Android x86.
The basic premise is to host the Android OS on VirtualBox. So far Android x64 only supports up to Android 2.2 Froyo, but they are currently working on porting over Android 2.3 Gingerbread. Let’s skip the details and get started, as this is a fairly long tutorial.
Step 1: Install VirtualBox
- Go to http://www.virtualbox.org, and click the “downloads” link on the side. Download the version for your system.
Version 4.0.10 for Windows
Version 4.0.10 for OS X - Install Virtualbox using recommended settings. Eh, it’s simple enough, as there’s nothing to configure.
Step 2: Download the Android OS ISO
- Go to http://www.android-x86.org/download, and download the generic ISO that matches your targeted Android version. (At the time this post was written, that file would be android-x86-2.2-generic.iso)
Note: Click the “view” link under the file to download the ISO.
Android 2.2 Froyo - android-x86-2.2-generic.iso
Android 2.3 Gingerbread - android-x86.2.3-4th-test-110620.iso
There are more Android OS ISO versions available at http://code.google.com/p/androbox/downloads/list
Step 3: Creating the Virtual Machine
- Open up “Oracle VM VirtualBox“.
- Create a new virtual host by clicking “New“. A dialog pops up, click next.
- Name the virtual machine whatever you want, it doesn’t really matter. The operating system is going to be Linux version 2.6. If you are running a 64-bit operating system, choose the 64-bit version of Linux.
- In the next screen, give your virtual machine 512MB of RAM.
- In the virtual hard disk screen, make sure ”Boot Hard Disk” is checked and that ”Create new hard disk” is selected. Hit next.
- A new dialog will pop-up. When it prompts you for the hard disk storage type choose “Fixed-size storage“. Hit next.
- Location can be left as the default. Set the size of the virtual hard disk to 2 GB (that is more than sufficient for the emulator). Then finish the dialog, and a virtual hard disk will be created.
- Click finish again, and the virtual machine will be created.
Step 4: Adjusting Settings
- Select the virtual machine you just created and change the settings.
- Now to load the Android ISO disk file, go to “Storage“, under “IDE Storage” click “Empty“. Click the disk icon beside CD/DVD drive and “Choose a virtual CD/DVD disk file…”
- Now browse to the location of the generic ISO file you downloaded earlier, and open that file. We just mounted the ISO file to the virtual machine.
- Next, we have to change the sound device. With the settings dialog still open, go to Audio. Set the audio controller to “SoundBlaster 16“. ICH AC97 will not work.
- The next thing to set up is the network. Go to Network (obviously). Change the Attached To setting from NAT to Bridged Adapter.
- If the “name” dropdown has more than one network adapter, select the one that connects to the internet, otherwise just leave it as the default.
- Click OK to save the settings.
Step 5: Running the Emulator
- Select your virtual device and click Start. Ignore the VirtualBox dialogs and just click OK.
- Your mouse won’t work at this point in the BIOS so just use your arrow keys. Select ”Live CD – VESA Mode“. Hit the return key.
- The emulator will now load up. You should see the following screens.
- You’ll notice that the your mouse still won’t show as you hover over the VirtualBox or emulator window. To fix this, go to the “Machine” dropdown menu at the top left corner and click “Disable mouse integration“.
- Click anywhere on the screen and you’ll get a VirtualBox dialog prompting you to capture the mouse pointer. Click “Capture“.
- You can now move the mouse around, anywhere within the VirtualBox window. But what if I want to move it outside the window? Press the right control key and it will unlock the mouse. When you want the mouse back on the emulator, click anywhere on the screen and the repeat previous step.
- (If you have never used an Android device, drag the lock out to unlock it.) You will then be brought to the home screen.
Step 6: Connecting Eclipse & ADB with the Emulator
- Press Alt + F1 to bring up the console in the emulator (IE. VirtualBox window). (Alt + F7 To bring back the Android GUI)
- Type “netcfg“, hit enter. Copy down the emulator’s IP address.
- Assuming that you have ADB already installed and set up, open up the command prompt. Type in “adb connect <emulator’s IP address>“.
- If everything went well, then it should say something similar to “connected to <emulator’s IP address>:5555“.
If it is unable to connect, check your virtual machine’s network settings. Make sure it’s the correct adapter. If that doesn’t fix it refer to the following link: http://www.android-x86.org/documents/debug-howto.
If the command was not recognized, it means you haven’t set the path environment variable to your Android SDK folder location. Refer to http://www.cuteandroid.com/tips-for-android-developer-android-sdk-tools-path-setting to set it up, and when complete retry step 3. - Close the command prompt. Now to connect Eclipse with the emulator, open up Eclipse (I’m assuming the Android SDK and plugins are already installed.)
- If you don’t already have an Android project opened, create a new one that matches the version of your Android emulator’s version. Note: If you do have one opened, make sure the app’s Android version matches the emulator’s version.
- File→New→Project…→Android→Android Project
- Give your test Android app a name. It could be something like “AndroidTestProject”
- Leave the “Contents” section as-is. Under the “Build Target” section, check off the version of your Android emulator.
- In the “Properties” section, give your app a package name. An example would be “com.test.project”. Package naming is really irrelevant for this tutorial, but if you care to learn more about it, feel free to look it up on Google. As for this tutorial, just make sure it starts with “com.”
- Click “Finish”
- Go to Run→Run configurations…
- On the left-hand side, double click “Android Application“, and then under it, click “New_configuration“
- Click on the “Target” tab. In the “Deployment Target Selection Mode” section, choose “Manual“.
- Click “Apply” and close the window.
- Now run and compile the project.
- Depending on if you have any existing Android Virtual Devices, a dialog may pop-up prompting you to choose the device to install your test app to. Select your Android Emulator, and click OK.
- It will compile and your app will be installed to your emulator. If you see your app, then you’ve done it!
SUCCESS!
Testing Your App Again
After you’ve set this all up, you don’t need to do all of it over again. In order to set up the emulator after restarting the computer, you have to do the following:
- Start up the emulator normally. (Open VirtualBox, start the virtual device, then choose Live CD – VESA Mode.)
- Get the emulator’s IP address (Alt+F1, then type in netcfg).
- In the host computer, open up the command prompt and type in “adb connect <Your emulator’s IP address>“. You have to do this every time the computer restarts.
- Run & compile your project in Eclipse and choose the Android Emulator device.
- You’ve once again installed your Android app to the emulator!
Well there you go. It was one long setup, but definitely worth it if you don’t own an Android device.
Keys
Enter | Confirm |
Escape | Back/return |
Alt + F1 | Show console |
Alt + F7 | Show Android GUI |
Arrows | Moving navigation |
Right + Control | Toggle mouse capture |
Very interesting. I will try this idea!
Is it possible to use ‘monkeyrunner’ tool with this emulator?? If yes, can you please let me know how to use it. I tried using it but monkeyrunner is not able to connect to this emulator.
Great idea, I will try it. you know the emulator in SDK is toooooooooo slow.
Thank You!
Great idea, I will try it. you know the emulator in SDK is toooooooooo slow.
Thank You!
any idea on how to add sd card?
There’s a tutorial here on saving data to a virtual disk: http://code.google.com/p/android-x86/wiki/VirtualBoxHowTo
Thanks! Great tutorial – really easy to follow.
Only thing is latest version of VirtualBox has some slightly different or differently named choices.
Any way to change the resolution of the VM?
On the live CD boot screen, where you choose VESA MODE, press TAB before it boots up. On the command, add to or change the parameter vga like so
“vga = 788″ (800×600)”vga = 791″ (1024×768)
“vga = 794″ (1280×1024)
or “vga=ask” (show list of available resolutions)Then press enter.
Very nice and very fast.
Using Android Simulator in MacOS = Impossible work!
Thanks.
But I have a problem.. When try browsing for jQuery Mobile web site (Documentation and Demo) the browser close.
I’m deploy a app in PhoneGap and using jQuery Mobile to this, so have same problem… Open my app, show home page, but if try go to other page app close.
Any help?
My application uses Google API. When I try to install my application on this VM, I see an error: Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY
Google API seems not to be included in this ISO
tks very much
Hi
Thanks for the help. I get everything as you have explained in the tutorial. The only problem is, i need a emulator for the samsung galaxy tab 7. The screen size for the same is 1024 * 600 . How can i give this screen resolution for my virtual Box Emulator
Did you ever get this solved?
Hi Thanks very much. This worked for me. However my problem is i wanted the emulator for samsung Galaxy Tab 7. Can you help me on how to set it
very very usefull
Very Awesome Blog but how about Menu Button?? If some app uses menu then wht?? how to handle it
+1
Very useful !! Thank you
hi, actually i am not able to connect adb with emulator…it always says unable to connect…i have checked my emulator’s network settings..its same as you have mentioned above..i have also tried changing it to host only adapter…but still error persists..plz help.
absolutely same problem.. n cudn find an answer anywhere!!
You may need to set up a DHCP server. http://www.howtoforge.com/dhcp_server_linux_debian_sarge
Another option may be to use NAT and PCnet-Fast III as the network adapter, as described here:
http://code.google.com/p/android-x86/wiki/VirtualBoxHowTo
Let me know if that works.
Tnx so much!
Very cool!
nice….
What is emulator IP adress
I followed the described procedure, but on the next start-up of my laptop its network card did not work and it was inaccessible. I tried everything but in vain, so I uninstalled virtualbox and it started running again. I believe there was a conflict. Can anyone help me?
I followed the described procedure, but on the next start-up of my laptop its network card did not work and it was inaccessible. I tried everything but in vain, so I uninstalled virtualbox and it started running again. I believe there was a conflict. Can anyone help me?
Very nice! Perfect! Faster test app.
Tks!
Hi, any way to change the resolution of the emulator? or get it to run in portrait instead of landscape?
This is great thanks a lot! it is very fast instead of android sdk emulator
Thanks a lot this works perfectly
hi bobby!
i have installed everything properly but i’m not able to figure out how to add an sdcard to the emulator. Because when i try to download or install any app its asking for an sdcard. please tell me the solution the soonest,
works great ! much more faster than the emulator . thanks for the tutorial
Pingback: Mono for Android & Android on VirtualBox « Memory extender
works great and works much more faster than the emulator … thanx for the tutorail….. THANX
I tried to use other Android OS ISO but there is no eth0 to connect to.
any idea how to make it work with Mac OS X? It says ” vt-x/amd-v has been enabled but not operational..”
You’ll need to enable hardware virtualization in your BIOS. Not exactly sure if, or how you can do that on Mac OS X.
Hi. I tried this process on my HP dv8t/Win7 x64 with the latest VB (I use Ubuntu on this VB regularly), but I get stuck at Step 5.3-top (black screen with android logo).
I used android-x86-2.2-r2-tx2500.iso, since the android-x86-2.2-generic.iso version you mention is deprecated (probably was OK when you first wrote this?).
Hi. I couldn’t get that iso to work either. I did have success using
android-x86-2.2-r2-eeepc.iso (http://android-x86.googlecode.com/files/android-x86-2.2-r2-eeepc.iso)
Hope that helps
How do I emulate a 320×480 device using the Virtual Box? My application should be run a 320×480 device. Help me please.
In Step 5, instead of selecting VESA Mode press TAB. Change or add the parameter “vga=ask” (without quotes) and press enter.
It will boot up prompting you “Press ENTER to see video available modes…” So press enter. Then select the video resolution that you want.
I can’t find a mode for a 320×480 device.
You have to add it yourself, the way to do that is very simple.
First you have have to open the folder containing the files of the Virual Machine, then open the .vbox with notepad.
Paste this line :
after the ExtraDataItem stuff, usually it’s arround the 23rd line.
After all this, just repeat the previous process and the new resolution will appear in the list.
NB: In order for this to work, both the Emulator and VirtualBox itself should be shut down.
Good luck
Don’t pay intention to the line below, it’s just a thing that Qisqus does.
It does not work for m/ What to do?
Really great ! Thanks
Thanks alot very informative:-) help me out. GOD BLESS u.
I followed the step shown by you, everything remain fine until I reached step 5, after that only the screen showing Android written in the middle of the screen remain constant with no progress
What should I do to go further
I followed the step shown by you, everything remain fine until I reached step 5, after that only the screen (Android Loading Screen) showing Android written in the middle of the screen remain constant with no progress
What should I do to go further
Excellent article/tutorial!!!!
Step 5 was problematic: Try do download all available downloads until it works (This applies to the network fix too).
Excellent, thank you! All worked as described. Only problem – cannot login to Google account. Any attempt to setup and account results in empty screen, only offering some WiFi configuration options.
This worked perfectly! I am running Windows 7 Home Premium 64 and this worked for me and I have followed the instructions exactly, using the same software and tool versions that Bobby has mentioned in this article. Thanks so much! Bobby!
Hi Bobby, kudos for this article. I managed to connect to the Android Emulator in VB and install my apps on it, following instructions in step 6.
However, my device can’t connect to the Internet, although I use Bridged Atapter in step 4.5 above. What should I check? Tks
If you don’t want to type each time the things in the cmd you can create a text file and write in :
———————————————————————————-
@Path=%path%;(the path to your adb.exe);
@adb connect (the ip adress obtained from vBox (netcfg)
———————————————————————————-
and then save as myconnect.bat
Good luck!
Fantastic, thanks for this tutorial!
Thank you, Worked like a charm!
Great!!!
AlhamduLILLAH worked perfect with android-x86-2.2-r2-eeepc
thanks.