|
|
(44 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 ==
| |
| | |
| * Full tree builds
| |
| ** NO NSS support (needs NSS build system hacking)
| |
| * JS builds and shell runs
| |
| * xpcshell builds and 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
| |