Difference between revisions of "Android"
Line 1: | Line 1: | ||
− | = | + | = Building and Running = |
== Building == | == Building == | ||
What you need: | What you need: | ||
Line 48: | Line 48: | ||
Now touch the Minetest icon and the lovely main menu should appear. ;-) | Now touch the Minetest icon and the lovely main menu should appear. ;-) | ||
+ | |||
+ | = Dev Notes = | ||
+ | == General notes == | ||
+ | * cURL does not work | ||
+ | * Add Bluetooth support? (probably requires use of Java) | ||
+ | == Moving away from Crystax NDK == | ||
+ | === Situation === | ||
+ | NDK seems to be unmaintained, would be good if we could move away from it. | ||
+ | * Builds with small tweaks to the code | ||
+ | * Works, but everything that goes through wchar_t is messed up | ||
+ | === Ideas === | ||
+ | * use Android's support library (verify if it does support locale stuff good enough) | ||
+ | * use uClibc | ||
+ | ==== Android's support library ==== | ||
+ | pro: | ||
+ | * Do not need to depend on more (Android-)external libraries | ||
+ | * (Probably) Tuned for usage with Android | ||
+ | contra: | ||
+ | * - | ||
+ | ==== uClibc ==== | ||
+ | pro: | ||
+ | * Completely independent from Android -> avoids upcoming problems in Android | ||
+ | * Also fixes some other problems we have with the libc | ||
+ | contra: | ||
+ | * Increases executable size (uClibc is pretty small, this does not really count) | ||
+ | * OpenGLES / Android libs may not work (verify this!) |
Revision as of 08:12, 4 March 2014
Building and Running
Building
What you need:
- Linux
- Android NDK Crystax version (with
android_native_app_glue.h
copied into<TOOLCHAIN_ROOT>/sysroot/usr/include
) - Android SDK
- Android device
- Git
- CMake
- Ant
- ADB (optional but very useful)
Irrlicht
Clone https://github.com/sfan5/irrlicht-android
.
Make sure you have arm-linux-androideabi-gcc and arm-linux-androideabi-g++ usable and run make
in source/Irrlicht
.
This will build Irrlicht as static and shared library and place it in lib/Linux
Minetest
Clone https://github.com/sfan5/minetest.git
and switch to the android_new
branch.
Configure it using CMake like this:
$ cmake . \ -DCMAKE_C_COMPILER=`which arm-linux-androideabi-gcc` \ -DCMAKE_CXX_COMPILER=`which arm-linux-androideabi-g++` \ -DCMAKE_FIND_ROOT_PATH=<sysroot of your android toolchain> \ -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY \ -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \ -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=BOTH \ -DCMAKE_SYSTEM_NAME=Linux \ -DIRRLICHT_LIBRARY=<path to libIrrlicht.a> \ -DIRRLICHT_INCLUDE_DIR=<path to include/ of Irrlicht> \ -DANDROID=1 \ -DRUN_IN_PLACE=1
Now just enter make package
.
After make is done go into the Android
directory and run <SDK_DIR>/tools/android update project --path .
.
Then copy the .so using <NDK_DIR>/ndk-build
and build the apk using ant debug
.
You will then have the resources in minetest-x.x.x.tar.gz and the apk at Android/bin/Minetest-debug.apk
.
You will only need to do the "android update project" step once.
Running
For this step you need minetest-x.x.x.tar.gz and Minetest-debug.apk from the previous step.
Put all resource files & folders (builtin, client, ...) into /sdcard/minetest
on your Android device.
Install Minetest-debug.apk
.
Now touch the Minetest icon and the lovely main menu should appear. ;-)
Dev Notes
General notes
- cURL does not work
- Add Bluetooth support? (probably requires use of Java)
Moving away from Crystax NDK
Situation
NDK seems to be unmaintained, would be good if we could move away from it.
- Builds with small tweaks to the code
- Works, but everything that goes through wchar_t is messed up
Ideas
- use Android's support library (verify if it does support locale stuff good enough)
- use uClibc
Android's support library
pro:
- Do not need to depend on more (Android-)external libraries
- (Probably) Tuned for usage with Android
contra:
- -
uClibc
pro:
- Completely independent from Android -> avoids upcoming problems in Android
- Also fixes some other problems we have with the libc
contra:
- Increases executable size (uClibc is pretty small, this does not really count)
- OpenGLES / Android libs may not work (verify this!)