I wanted to make note of a couple of quick tips for Android development around emulators.

The standard Android emulator can be painfully slow. Genymotion makes a drop-in replacement that’s blazingly fast. I’ve used it for years, and highly recommend it for any serious developer.

Genymotion achieves this by running an x86 version of Android in Virtualbox. This has a couple of implications.

Services on localhost

Virtualbox has several networking modes used to expose a guest virtual machine (in this case, an emulated Android device). Genymotion sets up two, a NAT service to connect to the outside world, and a “host-only” (HO) device. The HO device allows connecting to the host machine.

The connection happens through a virtual interface named “vboxnet0”. To connect to a service on the host machine, you need to use the IP address of this interface. I find this generally ends up as 192.168.56.1. To check, you can use any tool that lists the information for your network interfaces. For example, on Linux or OSX, you can use ifconfig. You should see something like this:

$ ifconfig

vboxnet0: flags=8943 mtu 1500

    ether 0a:00:27:00:00:00 

    inet 192.168.56.1 netmask 0xffffff00 broadcast 192.168.56.255

The number after “inet” is the IP address you need.

Google Play Services

Many apps depend on Google Play (GP) services. Genymotion doesn’t ship with GP. Fortunately, you can install a bundle containing GP yourself.

This is really easy to do. Many write-ups will tell you to install both an ARM-x86 translator, and an ARM version of GP. That’s no longer necessary. http://opengapps.org/ hosts both ARM and x86 versions. To get GP loaded, follow these steps:

  • Go to http://opengapps.org/
  • Select “x86” under Platform.
  • Select the Android release that corresponds to your virtual device Android version.
  • Pick a variant. (I’ve installed “stock”, but anything down to “nano” should do.)
  • Download the zip package.
  • Run Genymotion and bring up a device. (These latter steps must be done for each device.)
  • Drag and drop the zip package to the virtual device. (Note this may only work for versions 2.7.2 and later of Genymotion.)

You should see the following dialog pop up:

Hit “OK”. Wait for the file to finish “flashing”. Ideally you would reboot your device using adb, but this hasn’t worked for me. I’ve had no problems after “powering off” the device with the (virtual) power button. It won’t fully shutdown, so you’ll still have to kill the virtual device.

Couchbase Mobile Training

Now that you’re set up with a better emulator environment, take a look at the Couchbase Mobile Training for a step-by-step look at everything you need to develop with NoSQL for mobile.

Postscript

Check out more resources on our developer portal and follow us on Twitter @CouchbaseDev.

You can post questions on our forums. And we actively participate on Stack Overflow.

You can follow me personally at @HodGreeley

Posted by Hod Greeley, Developer Advocate, Couchbase

Hod Greeley is a Developer Advocate for Couchbase, living in Silicon Valley. He has over two decades of experience as a software engineer and engineering manager. He has worked in a variety of software fields, including computational physics and chemistry, computer and network security, finance, and mobile. Prior to joining Couchbase in 2016, Hod led developer relations for mobile at Samsung. Hod holds a Ph.D. in chemical physics from Columbia University.

Leave a reply