Presentation

The purpose of this project is to experiment my research for my thesis.
My topic is : [the efficient implementation of dynamic languages in constrained environments] 1.

My studies are based on the [Java] 2 and the [JSR 292] 3.
I use Dalvik, the virtual machine of [Android] 4, to support my research.

You can download SDK releases and factory images for Nexus [here] 1

Dependencies

  • AOSP [package] 1
  • (new) android runtime: ['ART 292'] 11
  • virtual machine: ['Dalvik 292'] 6
  • core API: ['Libcore 292'] 7

Usage

To use this work, you need to compile with Javac 7 and run with the portable interpreter.

/!\ WARNING /!\
ART compiles but can not run yet !

Cloning

This project contains three sub-projects ([art] 11, [dalvik] 6 and [libcore] 7).
To get the whole project (including 'art', 'dalvik' and 'libcore'),
you can download our modified AOSP package from our [website] 1 and clone each project or use the script 'aosp.py':

python aosp.py

If no argument given, this script download the last version of our work.
To know the arguments list, type the command:

python aosp.py -h

Create SDK 292

When the project is compiled, you can create an Android SDK to create/compile/install/... your applications.
To do this, initialize the project and make the SDK [(google website)] 8:

lunch sdk-eng
make [-j<NCPU>] sdk

Create factory image

The 'aosp.py' can create a factory image for a Nexus device using the compiled source:

python aosp.py -i <device> [-v <version>] [-l]

Examples:

python aosp.py -l -i . # list all factory versions availables
python aosp.py -i manta # create the factory image for 'Nexus 10' with the last version
python aosp.py -i manta -v 4.4.3.292 # create the factory image for 'Nexus 10' with the version '4.4.3.292'

How to flash a Nexus ?

Download the [Google's binaries] 9 for your device,
extract them in the root of this project and then execute them.
Initialize the project for your device. For example, to initialize with a Nexus 10 :

lunch full_manta-eng

When the project is compiled, connect your device and flash it (with root rights or with [(linux rules)] 10).

fastboot -w flashall

Or you can use our [factory images] 1.

Some useful commands to compile and use Android:

  • To initialize :
export EXPERIMENTAL_USE_JAVA7=true
export USE_CCACHE=1
source build/envsetup.sh
lunch full-eng
  • To compile :
make [-j<NCPU>] [showcommands]
mmm <directory>
  • To run :
emulator
  • To use the portable interpreter (wrote in C)
adb shell stop
adb shell setprop dalvik.vm.execution-mode int:portable
adb shell start
  • To use Dalvik (ART doesn't work yet !)
adb shell setprop persist.sys.dalvik.vm.lib libdvm.so
  • To clean :
make clobber