android: Update the README for the build via NDK

This commit is contained in:
Tobias Brunner 2023-02-20 14:11:29 +01:00
parent af93db93e6
commit cbd69ec732

View File

@ -1,14 +1,29 @@
To build this within the NDK the following things have to be done: To build this within the NDK the following things have to be done:
- By default the strongSwan sources of the current Git tree are used. They have - By default, the strongSwan sources of the current Git tree are used. They
to be prepared first (see HACKING for a list of required tools): have to be prepared first (see HACKING for a list of required tools):
./autogen.sh && ./configure && make && make distclean ./autogen.sh && ./configure && make && make distclean
It is also possible to use the sources from a different directory (e.g. an It's also possible to use the sources from a different directory (e.g. an
extracted tarball) by setting strongswan_DIR in app/src/main/jni/Android.mk. extracted tarball) by setting strongswan_DIR in app/src/main/jni/Android.mk.
- The OpenSSL or BoringSSL sources are expected in app/src/main/jni/openssl. - The libstrongswan library depends on an Android module called libcrypto_static
Since the sources need to be changed to be built on Android (and especially that provides OpenSSL's libcrypto and header files. To simplify this, the
in the NDK) we provide a modified mirror of the official Android repositories build.sh script in the openssl directory can be used to statically build
on git.strongswan.org. libcrypto for all ABIs. The results are placed in app/src/main/jni/openssl.
The script expects the path to the Android NDK in ANDROID_NDK_ROOT, which is
something like /path/to/android-ndk-<ver> for standalone NDKs, and something
like /path/to/android-sdk/ndk/<ver> for side-by-side NDKs. The path to the
OpenSSL sources is expected in OPENSSL_SRC (work with OpenSSL 1.1.1 or 3).
For instance, it may be invoked like this:
ANDROID_NDK_ROOT=~/android-ndk-<ver> \
OPENSSL_SRC=~/openssl-<ver> \
src/frontends/android/openssl/build.sh
By default, the script uses Docker to compile the library. However, if the
necessary build dependencies (jq, make, perl) are installed on the host, this
can be disabled by defining the NO_DOCKER. The dependency on jq may be
avoided by passing a space-separated list of target ABIs via ABIS variable.