doc: Add building-android-binary document
This commit is contained in:
parent
86dd1519b4
commit
2b4bd57c7f
|
@ -39,3 +39,4 @@ doc/nghttpx-howto.rst
|
||||||
doc/h2load-howto.rst
|
doc/h2load-howto.rst
|
||||||
doc/tutorial-hpack.rst
|
doc/tutorial-hpack.rst
|
||||||
doc/python-apiref.rst
|
doc/python-apiref.rst
|
||||||
|
doc/building-android-binary.rst
|
||||||
|
|
|
@ -517,6 +517,7 @@ AC_CONFIG_FILES([
|
||||||
doc/nghttpx-howto.rst
|
doc/nghttpx-howto.rst
|
||||||
doc/h2load-howto.rst
|
doc/h2load-howto.rst
|
||||||
doc/python-apiref.rst
|
doc/python-apiref.rst
|
||||||
|
doc/building-android-binary.rst
|
||||||
doc/nghttp2.h.rst
|
doc/nghttp2.h.rst
|
||||||
doc/nghttp2ver.h.rst
|
doc/nghttp2ver.h.rst
|
||||||
])
|
])
|
||||||
|
|
|
@ -38,6 +38,7 @@ EXTRA_DIST = \
|
||||||
sources/nghttpx-howto.rst \
|
sources/nghttpx-howto.rst \
|
||||||
sources/h2load-howto.rst \
|
sources/h2load-howto.rst \
|
||||||
sources/python-apiref.rst \
|
sources/python-apiref.rst \
|
||||||
|
sources/building-android-binary.rst \
|
||||||
_themes/sphinx_rtd_theme/footer.html \
|
_themes/sphinx_rtd_theme/footer.html \
|
||||||
_themes/sphinx_rtd_theme/theme.conf \
|
_themes/sphinx_rtd_theme/theme.conf \
|
||||||
_themes/sphinx_rtd_theme/layout_old.html \
|
_themes/sphinx_rtd_theme/layout_old.html \
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
.. include:: @top_srcdir@/doc/sources/building-android-binary.rst
|
|
@ -0,0 +1,120 @@
|
||||||
|
Building Android binary
|
||||||
|
=======================
|
||||||
|
|
||||||
|
In this article, we briefly describe how to build Android binary using
|
||||||
|
`Android NDK <http://developer.android.com/tools/sdk/ndk/index.html>`_
|
||||||
|
cross-compiler on Debian Linux.
|
||||||
|
|
||||||
|
We offer ``android-config`` and ``android-make`` scripts to make the
|
||||||
|
build easier. To make these script work, NDK toolchain must be
|
||||||
|
installed in the following way. First, let us introduce
|
||||||
|
``ANDROID_HOME`` environment variable. We need to install toolchain
|
||||||
|
under ``$ANDROID_HOME/toolchain``. An user can freely choose the path
|
||||||
|
for ``ANDROID_HOME``. For example, to install toolchain under
|
||||||
|
``$ANDROID_HOME/toolchain``, do this in the the directory where NDK is
|
||||||
|
unpacked::
|
||||||
|
|
||||||
|
$ build/tools/make-standalone-toolchain.sh \
|
||||||
|
--install-dir=$ANDROID_HOME/toolchain \
|
||||||
|
--toolchain=arm-linux-androideabi-4.8 \
|
||||||
|
--llvm-version=3.4
|
||||||
|
|
||||||
|
The additional flag ``--system=linux-x86_64`` may be required if you
|
||||||
|
are using x86_64 system.
|
||||||
|
|
||||||
|
The platform level is not important here because we don't use Android
|
||||||
|
specific C/C++ API.
|
||||||
|
|
||||||
|
The dependent libraries, such as OpenSSL and libevent should be built
|
||||||
|
with the toolchain and installed under ``$ANDROID_HOME/usr/local``.
|
||||||
|
We recommend to build these libraries as static library to make the
|
||||||
|
deployment easier. libxml2 support is currently disabled.
|
||||||
|
|
||||||
|
We use zlib which comes with Android NDK, so we don't have to build it
|
||||||
|
by ourselves.
|
||||||
|
|
||||||
|
If SPDY support is required for nghttpx and h2load, build and install
|
||||||
|
spdylay as well.
|
||||||
|
|
||||||
|
Before running ``android-config`` and ``android-make``,
|
||||||
|
``ANDROID_HOME`` environment variable must be set to point to the
|
||||||
|
correct path. Also add ``$ANDROID_HOME/toolchain/bin`` to ``PATH``::
|
||||||
|
|
||||||
|
$ export PATH=$PATH:$ANDROID_HOME/toolchain/bin
|
||||||
|
|
||||||
|
To configure OpenSSL, use the following script::
|
||||||
|
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ -z "$ANDROID_HOME" ]; then
|
||||||
|
echo 'No $ANDROID_HOME specified.'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
PREFIX=$ANDROID_HOME/usr/local
|
||||||
|
TOOLCHAIN=$ANDROID_HOME/toolchain
|
||||||
|
PATH=$TOOLCHAIN/bin:$PATH
|
||||||
|
|
||||||
|
export CROSS_COMPILE=$TOOLCHAIN/bin/arm-linux-androideabi-
|
||||||
|
./Configure --prefix=$PREFIX android
|
||||||
|
|
||||||
|
And run ``make install`` to build and install.
|
||||||
|
|
||||||
|
To configure libevent, use the following script::
|
||||||
|
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ -z "$ANDROID_HOME" ]; then
|
||||||
|
echo 'No $ANDROID_HOME specified.'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
PREFIX=$ANDROID_HOME/usr/local
|
||||||
|
TOOLCHAIN=$ANDROID_HOME/toolchain
|
||||||
|
PATH=$TOOLCHAIN/bin:$PATH
|
||||||
|
|
||||||
|
./configure \
|
||||||
|
--host=arm-linux-androideabi \
|
||||||
|
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
|
||||||
|
--prefix=$PREFIX \
|
||||||
|
--disable-shared \
|
||||||
|
--enable-static \
|
||||||
|
CPPFLAGS=-I$PREFIX/include \
|
||||||
|
LDFLAGS=-L$PREFIX/lib
|
||||||
|
|
||||||
|
And run ``make install`` to build and install.
|
||||||
|
|
||||||
|
To configure spdylay, use the following script::
|
||||||
|
|
||||||
|
if [ -z "$ANDROID_HOME" ]; then
|
||||||
|
echo 'No $ANDROID_HOME specified.'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
PREFIX=$ANDROID_HOME/usr/local
|
||||||
|
TOOLCHAIN=$ANDROID_HOME/toolchain
|
||||||
|
PATH=$TOOLCHAIN/bin:$PATH
|
||||||
|
|
||||||
|
./configure \
|
||||||
|
--disable-shared \
|
||||||
|
--host=arm-linux-androideabi \
|
||||||
|
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
|
||||||
|
--prefix=$PREFIX \
|
||||||
|
--without-libxml2 \
|
||||||
|
--disable-src \
|
||||||
|
--disable-examples \
|
||||||
|
CPPFLAGS="-I$PREFIX/include" \
|
||||||
|
PKG_CONFIG_LIBDIR="$PREFIX/lib/pkgconfig" \
|
||||||
|
LDFLAGS="-L$PREFIX/lib"
|
||||||
|
|
||||||
|
And run ``make install`` to build and install. After spdylay
|
||||||
|
installation, edit $ANDROID_HOME/usr/local/lib/pkgconfig/libspdylay.pc
|
||||||
|
and remove the following line::
|
||||||
|
|
||||||
|
Requires.private: zlib
|
||||||
|
|
||||||
|
After prerequisite libraries are prepared, run ``android-config`` and
|
||||||
|
then ``android-make`` to compile nghttp2 source files.
|
||||||
|
|
||||||
|
If all went well, application binaries, such as nghttpx, are created
|
||||||
|
under src directory. Strip debugging information from the binary
|
||||||
|
using the following command::
|
||||||
|
|
||||||
|
$ arm-linux-androideabi-strip src/nghttpx
|
|
@ -17,6 +17,7 @@ Contents:
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
|
||||||
package_README
|
package_README
|
||||||
|
building-android-binary
|
||||||
tutorial-client
|
tutorial-client
|
||||||
tutorial-server
|
tutorial-server
|
||||||
tutorial-hpack
|
tutorial-hpack
|
||||||
|
|
Loading…
Reference in New Issue