From ArchWiki
Revision as of 13:03, 20 January 2012 by Giniu (Talk | contribs) (Added pointer to Tegra development kits. Moved "Android platforms" one level up.)

Jump to: navigation, search

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.

Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어

External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

Android Development on Arch

Android SDK Installation

(If you are running Arch64, you have to enable the multilib repo, to be able to to install the required dependencies using pacman.)

To install the android-sdk, simply install it from the AUR android-sdk. When using Eclipse as an IDE you need to install the ADT plugin and related packages. If you get a message about unresolvable dependencies, install Java manually and try again.

All packages are available for installation through AUR:

  1. eclipse-emfAUR
  2. eclipse-gefAUR
  3. eclipse-wtp-wstAUR
  4. eclipse-androidAUR (this is the Eclipse ADT)
  5. android-sdkAUR
  6. android-sdk-platform-toolsAUR

Enter the path to the Android SDK Location in Eclipse -> Windows -> Preferences -> Android:


Android Debug Bridge (ADB) - Connecting to a real device

To get ADB to connect to a real device or phone under Arch, you must install the udev rules to connect the device to the proper /dev/ entries. This can be done manually, or you can use the AUR package android-udev to use a common list of vendor IDs.

Each Android device has a USB vendor/product ID. An example for HTC Evo is:

vendor id: 0bb4
product id: 0c8d

Figure Out Your Device Ids

Plug in your device and execute:

# lsusb

It should come up something like this:

Bus 002 Device 006: ID 0bb4:0c8d High Tech Computer Corp.

Adding udev Rules

Use the following udev rules as a template, and replace [VENDOR ID] and [PRODUCT ID] with yours. Copy these rules into /etc/udev/rules.d/51-android.rules:

SUBSYSTEM=="usb", ATTR{idVendor}=="[VENDOR ID]", MODE="0666"
SUBSYSTEM=="usb",ATTR{idVendor}=="[VENDOR ID]",ATTR{idProduct}=="[PRODUCT ID]",SYMLINK+="android_adb"
SUBSYSTEM=="usb",ATTR{idVendor}=="[VENDOR ID]",ATTR{idProduct}=="[PRODUCT ID]",SYMLINK+="android_fastboot"

Then, to reload your new udev rules, execute:

# udevadm control --reload-rules

Does It Work?

After you have setup the udev rules, unplug your device and replug it.

After running:

$ adb devices

you should see something like:

List of devices attached 
HT07VHL00676    device

If you do not have the adb program (usually available in /opt/android-sdk/platform-tools/), it means you have not installed the platform tools.

If you are getting an empty list (your device isn't there), it may be because you have not enabled USB debugging on your device. You can do that by going to Settings => Applications => Development and enabling USB debugging.

You will have to start adb as root for the correct permissions to see the device. If adb is already running do

$ sudo adb kill-server
$ sudo adb start-server

Android platforms

Before developing android applications, you need to install at least one Android platform, which can be done either automatically or manually.

An AUR package exists to install the basic SDK platform: android-sdk-platform-toolsAUR

Automatic installation is done via the Android SDK and device manager, which is accessible by invoking (assuming that the $PATH variable contains the path to the Android SDK tools directory):


or alternatively:

Note: The default installation directory in Arch is /opt/android-sdk/

If the automatic installation errors out, then you must either run the android tool with heightened privileges or set your user account as the owner of the directory. To change the owner ID, run the following command as root:

 chown -R USER /opt/android-sdk

To change the group ID instead (recommended for multiple users), first create the group, perhaps called android, and add your user account to it:

 groupadd android
 gpasswd -a USER android

Next, change the directory permissions:

 chgrp -R android /opt/android-sdk
 chmod -R g+w /opt/android-sdk
 find /opt/android-sdk -type d -exec chmod g+s {} \;

The final command sets the setgid bit on all subdirectories so that any new files created within them will inherit the proper group ID.

For step-by-step automatic installation, see: Installing SDK Components.

For manual installation:

  1. Download the platform you want to develop on. This site provides online links to several Android SDK components.
  2. Extract the tarball to /<path_to_android-sdk>/platforms.

Now, you should see the platform of your choice installed in the Installed Packages window of the Android SDK and device manager.

Tools specific to NVIDIA Tegra platform

If you target your application at NVIDIA Tegra platform, you might also want to install tools, samples and documentation provided by NVIDIA. In NVIDIA Developer Zone for Mobile there are two packages - Tegra Android Development Pack, available from AUR as tegra-devpackAUR and Tegra Toolkit, available from AUR as tegra-toolkitAUR.

The tegra-toolkitAUR package provides tools (mostly CPU and GPU optimization related), samples and documentation, while the tegra-devpackAUR provides tools (NVIDIA Debug Manager) related to Eclipse ADT and their documentation.


See Android_Tethering

Tips & Tricks

During Debugging "Source not found"

Most probably the debugger wants to step into the Java code. As the source code of Android does not come with the Android SDK, this leads to an error. The best solution is to use step filters to not jump into the Java source code. Step filters are not activated by default. To activate them:

Window -> Preferences -> Java -> Debug -> Step Filtering

Consider to select them all. If appropriate you can add the android.* package. See the forum post for more information:

Linux distribution on the sdcard

You can install Debian like in this thread, or you can adapt it to install Arch Linux. You should replace all debootstrap stuff by:

mkdir -p /data/local/mnt/var/{cache/pacman/pkg,lib/pacman}
pacman --root /data/local/mnt --cachedir /data/local/mnt/var/cache/pacman/pkg -Sy base

Android SDK on Arch 64

When using the Android SDK and the Eclipse plugin on a 64 bit system, and the 'emulator' always crashes with a segfault, do the following: Provide a localtime file in /usr/share/zoneinfo/localtime e.g.:

 sudo cp /usr/share/zoneinfo/Europe/Berlin /usr/share/zoneinfo/localtime

Android Development using Netbeans

If you prefer using netbeans as your IDE and want to develop Android applications, download the nbandroid plugins by going to:

Tools -> Plugins -> Settings

Add the following URL:

Then go to Available Plugins and install the Android and Android Test Runner plugins for your IDE version. Once you have installed go to:

Tools -> Options -> Miscellaneous -> Android

and select the path where the SDK is installed. That's it, now you can create a new Android project and start developing using Netbeans.