Faster Android Emulator Alternative – Using VirtualBox

Bobby Chan


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

  1. 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
  2. Install Virtualbox using recommended settings. Eh, it’s simple enough, as there’s nothing to configure.

Step 2: Download the Android OS ISO

  1. 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

  1. Open up “Oracle VM VirtualBox“.
  2. Create a new virtual host by clicking “New. A dialog pops up, click next.
  3. 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.
  4. In the next screen, give your virtual machine 512MB of RAM.
  5. In the virtual hard disk screen, make sure  ”Boot Hard Disk” is checked and that  ”Create new hard disk” is selected. Hit next.
  6. A new dialog will pop-up. When it prompts you for the hard disk storage type choose “Fixed-size storage“. Hit next.
  7. 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.
  8. Click finish again, and the virtual machine will be created.

Step 4: Adjusting Settings

  1. Select the virtual machine you just created and change the settings.
  2. 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…”
  3. 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.
  4. 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.
  5. The next thing to set up is the network. Go to  Network (obviously). Change the Attached To setting from NAT to Bridged Adapter.
     
  6. 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.
  7. Click OK to save the settings.

Step 5: Running the Emulator

  1. Select your virtual device and click Start. Ignore the VirtualBox dialogs and just click OK.
  2. 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.
  3. The emulator will now load up. You should see the following screens.
     
  4. 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“.
  5. Click anywhere on the screen and you’ll get a VirtualBox dialog prompting you to capture the mouse pointer. Click “Capture“.
  6.  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.
  7. (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

  1. Press Alt + F1 to bring up the console in the emulator (IE. VirtualBox window). (Alt + F7 To bring back the Android GUI)
  2. Type “netcfg“, hit enter. Copy down the emulator’s IP address.
  3. Assuming that you have ADB already installed and set up, open up the command prompt. Type in “adb connect <emulator’s IP address>“.
  4. 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.
  5. 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.)
  6. 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.
    1. File→New→Project…→Android→Android Project
    2. Give your test Android app a name. It could be something like “AndroidTestProject”
    3. Leave the “Contents” section as-is. Under the “Build Target” section, check off the version of your Android emulator.
    4. 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.”
    5. Click “Finish”
  7. Go to Run→Run configurations…
  8. On the left-hand side, double click “Android Application“, and then under it, click “New_configuration
  9. Click on the “Target” tab. In the “Deployment Target Selection Mode” section, choose “Manual“.
  10. Click “Apply” and close the window.
  11. Now run and compile the project.
  12. 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.
  13. 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:

  1. Start up the emulator normally. (Open VirtualBox, start the virtual device, then choose Live CD – VESA Mode.)
  2. Get the emulator’s IP address (Alt+F1, then type in netcfg).
  3. 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.
  4. Run & compile your project in Eclipse and choose the Android Emulator device.
  5. 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

58 comments on “Faster Android Emulator Alternative – Using VirtualBox

  1. bogdan on said:

    Very interesting. I will try this idea!

  2. Varunjampani on said:

    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.

  3. Joseph Lu on said:

    Great idea, I will try it.  you know the emulator in SDK is toooooooooo slow.
    Thank You!

  4. Joseph Lu on said:

    Great idea, I will try it.  you know the emulator in SDK is toooooooooo slow.
    Thank You!

  5. Peter Frazier on said:

    any idea on how to add sd card? 

    • Bobby Chan on said:

      There’s a tutorial here on saving data to a virtual disk: http://code.google.com/p/android-x86/wiki/VirtualBoxHowTo

  6. 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?

    • Bobby Chan on said:

      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.

  7. Luiz R. Rodrigues on said:

    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?

  8. cvoronin on said:

    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 :(

  9. tiny gipxy on said:

    tks very much

  10. George on said:

    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

  11. George on said:

    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

  12. saurabh on said:

    very very usefull

  13. Deepakchougule111 on said:

    Very Awesome Blog but how about Menu Button?? If  some app uses menu then wht?? how to handle it

  14. Deepthi Aravind on said:

    Very useful !! Thank you 

  15. manish bansal on said:

    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.

  16. Avillas on said:

    Tnx so much!

  17. Eric Pabst on said:

    Very cool!

  18. Deepikamandapalli on said:

    nice….

  19. Adithya on said:

    What is emulator IP adress

  20. Gus Trik on said:

    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?

  21. Gus Trik on said:

    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?

  22. Jhonnatan Cebidanes on said:

    Very nice! Perfect! Faster test app.
    Tks!

  23. guest on said:

    Hi, any way to change the resolution of the emulator? or get it to run in portrait instead of landscape?

  24. Grega Tratnik on said:

    This is great thanks a lot! :) it is very fast instead of android sdk emulator

  25. Ronaldo9 on said:

    Thanks a lot this works perfectly

  26. zameer on said:

    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,

  27. Liamci on said:

    works great ! much more faster than the emulator . thanks for the tutorial 

  28. Pingback: Mono for Android & Android on VirtualBox « Memory extender

  29. Nishant Bajracharya on said:

    works great and works much more faster than the emulator … thanx for the tutorail….. THANX

  30. I tried to use other Android OS ISO but there is no eth0 to connect to.

  31. Shikshya Bhattachan on said:

    any idea how to make it work with Mac OS X?  It says ”  vt-x/amd-v has been enabled but not operational..”

    • Bobby Chan on said:

      You’ll need to enable hardware virtualization in your BIOS. Not exactly sure if, or how you can do that on Mac OS X.

  32. Lester Ingber on said:

    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?).

  33. Jayson Tamayo on said:

    How do I emulate a 320×480 device using the Virtual Box? My application should be run a 320×480 device. Help me please. 

    • Bobby Chan on said:

      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.

      • Jayson Tamayo on said:

        I can’t find a mode for a 320×480 device. :(

        • Mehdï Armachï on said:

          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.

  34. SabbatoR on said:

    Really great ! Thanks :)

  35. Emile Jobity on said:

    Thanks alot very informative:-) help me out. GOD BLESS u.

  36. RishiKant on said:

    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

  37. RishiKant on said:

    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

  38. helena on said:

    Excellent article/tutorial!!!!
    Step 5 was problematic: Try do download all available downloads until it works (This applies to the network fix too).

  39. 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.

  40. Shylah Barnes on said:

    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! :)

  41. Tung Mai Le on said:

    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

  42. Ion Farima on said:

    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! ;)

  43. Fantastic, thanks for this tutorial!

  44. Chris De David on said:

    Thank you, Worked like a charm! :-)

  45. Simon on said:

    Great!!!

  46. Qaiser Mahmood on said:

    AlhamduLILLAH worked perfect with android-x86-2.2-r2-eeepc

    thanks.