Saturday, February 18, 2017

Genymotion and ARM Binary Translation, Early 2017 Linux Edition

Using Linux there isn't a lot of choices for fancy Android emulators. AFAIK the only real contenders are Genymotion and the SDK Android Simulator. Personally I've never achieved great performance out of the Simulator so that leaves Genymotion. And that's where I'll start.

Genymotion is an Android emulator which uses VirtualBox s it's core. It seems to be mainly aimed at developers with a pay to use model. However they do offer a free for personal use build. This is the version I will be using for this post.

One of the main issues with Genymotion is it's emulation is based on x86 CPU only, meaning there is no ARM CPU compatibility out of the box. This also means most apps in the Play Store will not work. And speaking of the Play Store is the next issue, the suite of Google apps are not installed by default. This means no Play Store. But don't fret, you can add both ARM binary translation and all your favorite Google apps to a Genymotion Android virtual device.

I'm not really going to go into detail about how to install software. I'll tell you want you need and where to find it but installation is on you. With that said here we go...

The first thing you'll want to do is go grab the appropriate package or installation method for your flavor of Linux. On the VirtualBox Linux download page ( found by clicking here ) are packages for several distributions. Find yours and go for it. After your download completes you'll want to install the VirtualBox package. There is no need to open the VirtualBox application or mess with anything about it. Genymotion takes care of all the configuration of the virtual device. That's it for the first step. Good job!

Now that VirtualBox is installed head over to the Genymotion website ( found by clicking here ). This is where we will download the emulator. Please note you will NEED to register for an account with Genymotion in order to download anything. You might want to do so now if you haven't already. After your account is made (don't forget to log in) you'll have to wade through some links to get to the personal edition download. Lets step through it...

In the upper right hand corner you will find the Download button. It looks like the above image.

You will want to scroll to the bottom of the page and find the Get Genymotion personal version button. Click it and you will be on your way to yet another page, this one is for the personal edition. 

You are almost there. Click the Download Genymotion personal edition button. Now you are being transported to still one more page. It is the real downlod page.

You have reached the final destination. Click the Download for Ubuntu (64bit) - 45MB button to start the download. Genymotion is not just for Ubuntu as the button suggests. I am running Fedora and it's running fine. You will need a 64bit distribution of Linux though.

You'll need to use a terminal to install Genymotion and don't forget to set the file executable. On some Linux distributions Genymotion will not start right off the bat. I had this problem on Fedora 25. I ended up going into the installed Genymotion directory and deleting two files. These files were libxcb.so.1 and libdrm.so.2. After doing so Genymotion started right up using the gnome-shell launcher. 

Once you have Genymotion installed and open you'll want to create a virtual device. Again, you have no need to mess with the VirtualBox application. Try to forget it's even installed. Take a look at the below screen grab. This is what the application's interface looks like. 


To create your first virtual device you'll want to click on the + Add button on the top menu bar. This will bring up the Virtual device creation wizard where you choose what version of Android and what device you want to emulate. Have a look below for reference.


There are a lot of choices and combinations of Android version and device models. Don't become overwhelmed, you only need worry about one of each. For Android version choose 4.3 and for Device model choose Google Nexus 7. We choose the older Android version 4.3 because it's the newest version I could get the ARM binary translation libraries to work properly with. Check out the screen grab below for Android version and device model selection pointers.


Somewhere along the creation of the virtual device you will be asked to log into your Genymotion account. Please do so, otherwise you will not be able to do much with your shinny new virtual device. After you make your selections for Android version and device model you'll want to click the Next button. This takes you to the device summary and naming your virtual device. Name it anything you want or accept the default. Have a look below for a screen grab for reference.


When you finish naming your creation click the Next button. Genymotion will download and configure your virtual device.


When Genymotion finishes downloading and creating your virtual device you'll be back at the main interface screen. You'll see your newly created virtual device listed. Have a look below for reference.


Select your virtual device (whatever you named it) and press the Start button on the top menu bar. You'll get a little pop up progress box. After it goes away your virtual device will be running. Congratulations! 

The virtual device's windows is basically what you'd see on a real Nexus 7 tablet, minus the Google apps. There is a Genymotion supplied button bar for navigation, camera control, GPS, and various other settings. Most options are grayed out as they are for paid professional users. Have a look below for reference.


From this point it's normal Android stuff. Make yourself at home as the screen says. After you're done fiddling around with your virtual device we'll install the ARM binary translation libraries. You need to do this first before installing the Google apps. AFAIK some of the Google apps are ARM binaries thus the need for the ARM binary translation. 

To install the ARM binary translation libraries you'll first need to obtain them. They are not included with Genymotion nor for download from Google. They will have to be downloaded from a 3rd party source. I searched around and found them ( Found by clicking here ). Do not unzip the file after downloading it. It is meant to be zipped. 

To install the zip file open up a file manager (such as GNOME Files) and navigate to where you downloaded the Genymotion-ARM-Translation_v1.1.zip file. Normally it's your Downloads directory in you home directory. Next drag the zip over to the Genymotion virtual device window and drop it in. A progress bar will pop up. After it finishes you'll want to shutdown your virtual device. Check out the below example video.



After your virtual device shuts down you'll want to close it via the normal means of closing a window on your desktop environment. When back on the main interface window you'll want to click on the Start button to start your virtual device again. At this time the Android virtual device will start up just like last time. Only this time your ARM binary translation libraries are installed. Now it is time to install Google apps. As with the ARM binary translation libraries you will need to obtain a compatible archive of Google apps. I used the apps-jb-20130813-signed.zip archive ( Found by clicking here ).

Much like last time you'll want to open a file manager window to drag and drop the gapps-jb-20130813-signed.zip file into the virtual device window. When you drop it a progress bar will pop up. After a bit it'll let you know it has been installed followed by some Google related errors. These errors are normal and can be dismissed. Click through the errors and shut down your virtual device. Below is a screen grab of the errors you'll get. Remember there is nothing wrong, they will persist until you shut down your virtual device.


At this point you should be back at the Genymotion main interface window. Select your virtual device from the list and click the Start button. Your virtual device will spring to life once again and the Google apps will have been installed. You will likely receive errors related to Google+, like the last error this is normal. The error will go away once the Play Store updates the Google apps to their latest versions. Speaking of the Play Store it is time to log into to your google account. This is a necessary step into order to access much of what the Google apps have to offer, including the Play Store.

As per usual Android fashion click the application drawer icon at the bottom of the virtual device. This will access the application drawer. In the application drawer click on the Play Store icon. See below for reference.


Once you open the Play Store you will be greeted by Add a Google Account. You will want to click either Existing if you have a Google Account or New if you do not. I'm going with existing. Next you'll be asked to Sign in. Use your Google account email address and input your password. Press the right arrow at the bottom, Agree to the Terms of Service, continue on through the various screens dismissing any errors you receive. If all goes well you will be logged into the Play Store. See below for reference.


At this point you are pretty much finished. As a last stop you'll want to poke around the Play Store and update the Google apps. This will rid you of any errors that pop up. From here you can install most (but not all) apps in the Play Store. As an example I installed a custom kid friendly launcher and several children's games for my daughter. Most games will not install without the ARM binary translation libraries. Luckily you have them. Below are some examples.




As stated in the beginning, this post is intended for Linux. Mac and Windows have a few easier options for Android emulators. Although more difficult to setup Genymotion is a capable and nicely featured Android emulator. I've not ran into any show stoppers thus far.