The complete guide to running PhoneGap on Ubuntu


PhoneGap is a great technology that’s a lot of fun to use, but getting started with it can be daunting. Here I outline the entire process, beginning to end, of getting a basic PhoneGap setup running on Ubuntu, complete with an Android emulator.

Installation

1. Install Git

sudo apt-get install git

2. Install NodeJS

sudo apt-get install node

While that’s all you need to do to install node, there is a small detail that you need to take care of. When ubuntu installs the package, it names the NodeJS executable nodejs. The problem is that many applications, including PhoneGap, expect the executable to be named node. To fix this inconsistency, simply create a symlink named node that points to nodejs as follows.

sudo ln -s /usr/bin/nodejs /usr/bin/node 

3. Install PhoneGap

npm install -g phonegap

4. Install Ant

sudo apt-get install ant

5. Get the Android SDK

You can find it here. Extract the package to /usr/local/android-sdk-linux.

6. Get Java (JRE & JDK)

sudo apt-get install openjdk-7-jre
sudo apt-get install openjdk-7-jdk

7. Update your PATH

Open .profile for editing using the following command.

gedit ~/.profile

Append the following lines to the end of the file. Do not put these inside any of the IF blocks.

export ANDROID_HOME="/usr/local/android-sdk-linux/tools"
export ANDROID_PLATFORM_TOOLS="/usr/local/android-sdk-linux/platform-tools"
export PATH="$PATH:$ANDROID_HOME:$ANDROID_PLATFORM_TOOLS"

Save the file, log out, and log back in to apply the changes.

8. Install the necessary Android packages

Execute android from the shell. This is a good first test to make sure you’ve done everything right up to here. If you get an error, rerun through the above steps and make sure that you’ve installed all the requirements and added your environment variables correctly.

If you haven’t made any mistakes, you’ll see that executing android opens up a kind of package manager that you can use to install different Android components. By default, a certain number of these will be pre-selected for installation. Leave them as-is, and in addition tick the box next to the entry named “API 4.4.2 (API 19)”. Once you’ve done that, download and install everything.

9. Update C/C++

Install the following packages

sudo apt-get install lib32stdc++6
sudo apt-get install lib32z1

Apparently this is only needed on 64-bit systems, but I can’t confirm that because I haven’t tried this on 32-bit Ubuntu.

Executing a sample project

If you’ve gotten this far, good job! You now should have everything you need in place to emulate an Android device with Cordova/PhoneGap. If you want to test your installation, try creating and emulating a demo project. Here’s how you can do that.

1. Create the project

Go to the directory where you do all your development work and execute the following command

cordova create

This will create the equivalent a “hello world” project in your dev directory.

2. Create an emulation device

Execute the following.

android avd

This will open the Android Virtual Device Manager, which allows you to manage the virtual devices on which your apps will be emulated. By default, no virtual devices are created. To create one, click “Add” and fill in a name and the specifications for the device.

A couple tips if this is your first time configuring a virtual device. If you’re running on Intel, you’ll get better performance if you select the “Intel Atom (x86)” architecture for your virtual device. Another thing that you’ll want to consider is ticking the “Snapshot” checkbox down at the bottom of the dialog. The emulator takes ages to start up and runs extremely slowly–enabling snapshots will save the emulator’s state when you’re done with it so that you don’t have to start it up from scratch every time you use it.

3. Run the test app.

Navigate to your test app directory and run the following.

cordova emulate android

If you’ve followed all the steps up until now correctly, with a little luck the emulator will launch and after 5 minutes or so of startup time you’ll see the cordova sample app onscreen. Have fun developing!