Skip to content
Joshua Granick edited this page Jan 1, 2014 · 2 revisions

Compatibility

Historically, we have supported API 7 (Android 2.1) devices and greater, but recently increased the minimum requirement (based on user statistics) for API 9/10 (Android 2.3) devices.

Lime will use OpenGL ES 2 by default, which should be supported by API 9 devices.

Dependencies

A current version of the Android SDK, with "SDK platform-tools" and API 16 installed, is required. In order to enable certain features for newer Android devices, we target API 16 by default while remaining backward compatible with API 9+ devices.

You also need Android NDK r8b in order to compile. In the future, we will be making improvements that will allow smarter support for both old and new NDK versions (since paths continue to change between releases)

The Android SDK also requires the Java JDK and Apache Ant. We recommend Java 6, as we have experienced code-signing issues when trying to use a newer JDK (this is a known issue on Google's part).

You can use "lime setup" to help automate the install:

lime setup android

If you install each component manually, you should run "lime setup android" and specify "n" to each automatic install step. At the end, it will prompt to ask where you have installed each tool. For example, the Java JDK is probably located under "C:\Program Files (x86)\Java\jdk1.6.0_45" or "/usr/bin/java"

Targets

Both Android devices and the ARM device emulator are supported.

Architectures

armv5 and armv7 are currently supported. As x86 simulators for Android have only recently become standard, we may consider adding support for them in the future.

Components

Windowing is handled by custom Java classes, based also upon the "extension-api" Android library project we have created, in order to share a clean API to custom Java native extensions. This is the most complicated target because of the required relationship between Java and C++. Audio was recently changed from Android Java sound APIs to use a custom version of OpenAL (running upon OpenSL ES) to avoid long-standing issues we had with MediaPlayer and SoundPool. We are still exploring the best solution. Other dependencies include libjpeg, libpng, Freetype and cURL.

Future

We may consider adding x86 support for new Android emulators as well as x86 Intel/Android devices. Continued changes to the Java layer or audio may occur to reduce garbage collection in the JavaVM, and to further streamline and improve device audio support.

Compiling

You may use the "android" target when using "lime" commands:

lime test android

You may also use the "-emulator" flag to target the Android emulator, but do not expect great results, as the Android ARM device emulator is very slow.

lime test android -emulator
Clone this wiki locally