Android: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
 
(45 intermediate revisions by 6 users not shown)
Line 1: Line 1:
= Android =
#redirect [[Mobile/Fennec/Android]]
 
Central location for information about the Android port of Gecko.
 
== Current Status ==
 
* NSPR builds
* JS builds and shell runs
 
== Getting Source Code ==
 
Currently, the source lives in a user hg repo:
 
http://hg.mozilla.org/users/vladimir_mozilla.com/mozilla-droid
 
== Building ==
 
=== Prerequisites ===
 
* Standard [https://developer.mozilla.org/En/Linux_Build_Prerequisites Linux build environment], at least as far as tools like gnu make, gcc, and autoconf2.13 go
* [http://developer.android.com/sdk/ndk/1.6_r1/index.html Android 1.6 NDK]
 
The NDK is the only Android-specific prereq for building, though you will probably want the [http://developer.android.com/sdk/index Android SDK] for an emulator and tools such as 'adb'.  Either 2.0 or 1.6 will do.
 
=== Building ===
 
==== Full Build ====
 
Normal build, with the following mozconfig:
 
ac_add_options --enable-application=browser
ac_add_options --disable-ogg
ac_add_options --disable-wave
ac_add_options --with-arm-kuser
# Global options
ac_add_options --enable-debug
ac_add_options --disable-optimize
# mobile options
ac_add_options --disable-installer
ac_add_options --disable-crashreporter
ac_add_options --disable-printing
ac_add_options --disable-javaxpcom
# android options
ac_add_options --target=arm-android-eabi
ac_add_options --with-android-ndk=/home/vladimir/proj/android/android-ndk-1.6_r1
ac_add_options --with-endian=little
ac_add_options --enable-tree-freetype
# other options
ac_add_options --disable-necko-wifi
ac_add_options --disable-plugins
# to fix
ac_add_options --disable-crypto
# ssltunnel can't build if we disable crypto
ac_add_options --disable-tests
 
==== JS/NSPR only ====
 
In the commands below, replace these with the appropriate paths:
 
$NDK is the NDK location
$moz is the mozilla-droid repo checkout
$out is some base destination directory
 
First, regenerate configure in the js dir (the nspr configure is checked in):
% cd $moz/js/src && autoconf2.13
 
Then create a nspr directory, configure nspr, and build it:
 
% cd $out
% mkdir nspr
% cd nspr
% $moz/nsprpub/configure \
    --target=arm-android-eabi \
    --with-android-ndk=$NDK
% make -s
 
Then do the same for JS, telling it where to find the NSPR you just built:
 
% cd $out
% mkdir js
% cd js
% $moz/js/src/configure \
    --target=arm-android-eabi \
    --with-android-ndk=$NDK \
    --with-nspr-cflags=-I$out/nspr/dist/include/nspr \
    --with-nspr-libs='-L$out/nspr/dist/lib -lnspr4 -lplc4 -lplds4' \
    --enable-threadsafe \
    --with-endian=little \
    --with-arm-kuser
% make -s
 
== Running ==
 
You'll need to copy the NSPR libraries and the js shell to the emulator or your device.  Whether you're running on a physical device or an emulator, /data/local should be writable by the user.
 
% cd $out/nspr/dist/lib
% for f in *.so ; do adb push $f /data/local ; done
% cd $out/js/shell
% adb push js /data/local
 
Then, connect to a shell on the device, and run js (adb shell prompts prefixed with "android"):
 
% adb shell
android% cd /data/local
android% LD_LIBRARY_PATH= ./js
js> 1+1
2

Latest revision as of 16:50, 4 May 2010