subsurface/packaging/android
Jan Mulder cdee2fde64 Android build: add explanation for huge hack
This had to be embedded in the build process (or better, solved for
real).

Using Cmake, Clang, NDK 18b, Qt 5.12 beta 4, some Subsurface code does
not compile. At this point in time, its fully unclear to me why we see the
error as it is.

Thing fail deep down in Qt and NDK headers on #include <cmath>. Error like
"::signbit is not in the global namespace". The most logic reason is an
improper order in which include paths are constructed in the build process.
Any attempt to find the real reason failed. Even very similar command lines
from a qmake build that succeed fail with a cmake style build.

The very very dirty hack is commenting out some lines in NDK 18b:

"./android-ndk-r18b/sources/cxx-stl/llvm-libc++/include/cmath

Comment lines 313-325, and all build, links and runs with no errors
related to this known at this point.

Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2018-12-30 11:20:34 -08:00
..
patches Patch libusb for android custom open function 2015-08-20 22:52:21 -07:00
.gitignore Import subsurface-android build script 2015-03-09 12:53:01 -07:00
android-build-wrapper.sh Android: cleanup build wrapper script 2018-12-30 11:20:34 -08:00
build.sh Android build: always use -fPIC 2018-12-30 11:20:34 -08:00
qt-installer-noninteractive.qs Android: cleanup build wrapper script 2018-12-30 11:20:34 -08:00
README android: Correct README 2016-06-23 16:32:24 -07:00
variables.sh Android build: set newer versions and parameterize ANDROID_PLATFORM 2018-12-30 11:20:34 -08:00
warning-ndk18b.txt Android build: add explanation for huge hack 2018-12-30 11:20:34 -08:00

Tool repo to crosscompile subsurface to android-arm
---------------------------------------------------

Dependencies:

1. android_sdk, android_ndk and Qt for android. See step 0.
2. cmake
3. ant
4. Java JDK
5. working adb is recommended
6. dependencies of libdivecomputer and subsurface -
   visit http://subsurface.hohndel.org/documentation/building/

Steps to install:

Step 0.
Grab..
Android ndk from: http://developer.android.com/tools/sdk/ndk/index.html
Android sdk from: http://developer.android.com/sdk/index.html#download
And QT for android from: http://qt-project.org/downloads

Step 1.
Extract and install these into known directories.
Have a look in the top of build.sh for where the cross build tool expects
them. By default thats is: ../../../android-ndk-r9d ../../../android-sdk-linux
and ../../../Qt/5.5 (or Qt/5.6)

Step 2.
Run bash build.sh in the terminal. By default it builds for arm but you
can pass x86 as first arg to build.sh to have it build for x86. Nice when
debugging in a fast emulator.
The script will download and build the whole dependency chain.

After this, subsurface will be built for android.

The output folder is subsurface-build-arm/android_build and your newly
created apk shows up as:
subsurface-build-arm/android_build/bin/QtApp-debug.apk

Where the x86 apk shows up when built for x86 is left as a exercise for the
reader.