Android build: Difference between revisions
Sandstranger (talk | contribs) |
Sandstranger (talk | contribs) No edit summary |
||
(19 intermediate revisions by 2 users not shown) | |||
Line 3: | Line 3: | ||
Before you start building OpenMW on Android you have to do few steps of preparation: | Before you start building OpenMW on Android you have to do few steps of preparation: | ||
# Download [https://www.crystax.net/ Crystax NDK] | # Download [https://www.crystax.net/ Crystax NDK] | ||
Openmw building without errors only on crystax ndk 10.1.0 version. | |||
# Download [https://github.com/taka-no-me/android-cmake Cmake for Android] (it will be used for OpenMW and its dependencies compilation) | # Download [https://github.com/taka-no-me/android-cmake Cmake for Android] (it will be used for OpenMW and its dependencies compilation) | ||
# Download [http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html java ] | # Download [http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html java ] | ||
Line 15: | Line 15: | ||
#* [https://github.com/MyGUI/mygui mygui] | #* [https://github.com/MyGUI/mygui mygui] | ||
#* zlib integrated in android | #* zlib integrated in android | ||
Prebuilt openmw dependencies for armv7 arch | |||
https://drive.google.com/file/d/0B5mOME9qjLFuckRrSWd6ZTMtZGM/view?usp=sharing | |||
Prebuilt openmw dependencies for armv8 arch | |||
https://drive.google.com/file/d/0B5mOME9qjLFuVkpRc2FWb3h1SW8/view?usp=sharing | |||
=== Compilation of OpenMW dependencies === | === Compilation of OpenMW dependencies === | ||
Line 20: | Line 26: | ||
Then you should add PATH for crystax ndk and google sdk. | Then you should add PATH for crystax ndk and google sdk. | ||
==== Building | ==== Building OSG ==== | ||
Next you must build | Next you must build OSG from source. I build osg with this tutorials . | ||
http://www. | |||
http://www.openscenegraph.org/index.php/documentation/platform-specifics/android/43-building-openscenegraph-for-android-3-0-2 | |||
http://www.openscenegraph.org/index.php/documentation/platform-specifics/android/178-building-openscenegraph-for-android-3-4 | |||
You must build osg with osgdb_dds osgdb_bmp, osgdb_tga ,osgdb_gif ,osgdb_jpeg, osgdb_png plugins and GLES1 profile ! | |||
/ | |||
==== Building MyGUI ==== | ==== Building MyGUI ==== | ||
Then you must build mygui | Then you must build mygui with 1 rendering system | ||
==== Building Bullet ==== | ==== Building Bullet ==== | ||
Line 78: | Line 58: | ||
./configure \ | ./configure \ | ||
--prefix=$(pwd)/android/$CPU \ | --prefix=$(pwd)/android/$CPU \ | ||
--enable | --enable-static \ | ||
--disable-doc \ | --disable-doc \ | ||
--disable-ffmpeg \ | --disable-ffmpeg \ | ||
Line 102: | Line 81: | ||
=== Building OpenMW === | === Building OpenMW === | ||
Then I started to build OpenMW. | |||
I copied all libraries in one folder . For example AndroidDependencies, and build openmw like this | |||
For example | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
cmake /home/sandstranger/Android/openmw -DCMAKE_TOOLCHAIN_FILE=/home/sandstranger/Android/android-cmake-master/android.toolchain.cmake -DANDROID_TOOLCHAIN_NAME=aarch64-linux-android-4.9 -DANDROID_NATIVE_API_LEVEL=android-21 -DANDROID_NDK=/home/sandstranger/Android/crystax-ndk-10.1.0/ -DANDROID_ABI=arm64-v8a -DOPENMW_DEPENDENCIES_DIR=/home/sandstranger/Android/AndroidDependenciesARMV8 -DOSG_PLUGINS_DIR=/home/sandstranger/Android/AndroidDependenciesARMV8/lib/osgPlugins-3.5.1 -DBUILD_BSATOOL=OFF -DBUILD_ESMTOOL=OFF -DBUILD_LAUNCHER=OFF -DBUILD_MWINIIMPORTER=OFF -DBUILD_ESSIMPORTER=OFF -DBUILD_OPENCS=OFF -DBUILD_WIZARD=OFF -DBUILD_MYGUI_PLUGIN=OFF -DMYGUI_STATIC=ON -DBOOST_STATIC=ON | |||
</syntaxhighlight> | </syntaxhighlight> | ||
-O2 or -Os optimal optimizations flags for building . Without this flags fps will be very low | |||
After builing openmw library, you must copy all the libraries to libs folder in the java project folder | |||
For example : /eclipse-project/app/src/main/jniLibs/armeabi-v7a | |||
Then you must import this [https://github.com/OpenMW/eclipse-project java project] in android-studio , which included with the android sdk. | |||
Also you need to import the configuration files from desktop openmw version. | |||
=== Building Gotchas === | |||
<pre> | |||
CMake Error at /home/bcurtis/workspace/OpenMW/android/android-cmake/android.toolchain.cmake:429 (math): | |||
math cannot parse the expression: "+0": syntax error, unexpected exp_PLUS, | |||
expecting exp_OPENPARENT or exp_NUMBER (1) | |||
Call Stack (most recent call first): | |||
/home/bcurtis/workspace/OpenMW/android/build/CMakeFiles/3.2.2/CMakeSystem.cmake:6 (include) | |||
CMakeLists.txt:1 (project) | |||
</pre> | |||
Don't panic, this can be worked around with the removal (or comment '#') of the non-critical line in the file android-cmake/android.toolchain.cmake on line 429. | |||
# | |||
Latest revision as of 11:12, 30 December 2015
Android build OpenMW
Preparation of building environment
Before you start building OpenMW on Android you have to do few steps of preparation:
- Download Crystax NDK
Openmw building without errors only on crystax ndk 10.1.0 version.
- Download Cmake for Android (it will be used for OpenMW and its dependencies compilation)
- Download java
- Download all OpenMW dependencies, ie:
Prebuilt openmw dependencies for armv7 arch https://drive.google.com/file/d/0B5mOME9qjLFuckRrSWd6ZTMtZGM/view?usp=sharing
Prebuilt openmw dependencies for armv8 arch https://drive.google.com/file/d/0B5mOME9qjLFuVkpRc2FWb3h1SW8/view?usp=sharing
Compilation of OpenMW dependencies
Then you should add PATH for crystax ndk and google sdk.
Building OSG
Next you must build OSG from source. I build osg with this tutorials .
You must build osg with osgdb_dds osgdb_bmp, osgdb_tga ,osgdb_gif ,osgdb_jpeg, osgdb_png plugins and GLES1 profile !
Building MyGUI
Then you must build mygui with 1 rendering system
Building Bullet
Then you should build bullet2. You can use cmake android toolchain for it
Building OpenAL
Then you must build openal . http://repo.or.cz/w/openal-soft/android.git
Building Qt (optional)
Note: Qt is only used by the launcher and OpenMW-CS, and can be skipped. To build Qt 4.8 for android: http://necessitas.kde.org/ I used this tutorial for building: https://community.kde.org/Necessitas/CompileQtFramework
Building FFmpeg
Then you must build ffmpeg . Important! You must use ffmpeg 1.26: http://www.roman10.net/how-to-build-ffmpeg-with-ndk-r9/
my script for build
./configure \
--prefix=$(pwd)/android/$CPU \
--enable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--cross-prefix=/home/sylar/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=arm \
--enable-asm \
--enable-cross-compile \
--sysroot=/home/sylar/android-ndk-r9d/platforms/android-19/arch-arm \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS"
Building SDL2
Then you must build SDL2: https://www.libsdl.org/hg.php I used SDL2 mercurial latest source.
Building OpenMW
Then I started to build OpenMW. I copied all libraries in one folder . For example AndroidDependencies, and build openmw like this
cmake /home/sandstranger/Android/openmw -DCMAKE_TOOLCHAIN_FILE=/home/sandstranger/Android/android-cmake-master/android.toolchain.cmake -DANDROID_TOOLCHAIN_NAME=aarch64-linux-android-4.9 -DANDROID_NATIVE_API_LEVEL=android-21 -DANDROID_NDK=/home/sandstranger/Android/crystax-ndk-10.1.0/ -DANDROID_ABI=arm64-v8a -DOPENMW_DEPENDENCIES_DIR=/home/sandstranger/Android/AndroidDependenciesARMV8 -DOSG_PLUGINS_DIR=/home/sandstranger/Android/AndroidDependenciesARMV8/lib/osgPlugins-3.5.1 -DBUILD_BSATOOL=OFF -DBUILD_ESMTOOL=OFF -DBUILD_LAUNCHER=OFF -DBUILD_MWINIIMPORTER=OFF -DBUILD_ESSIMPORTER=OFF -DBUILD_OPENCS=OFF -DBUILD_WIZARD=OFF -DBUILD_MYGUI_PLUGIN=OFF -DMYGUI_STATIC=ON -DBOOST_STATIC=ON
-O2 or -Os optimal optimizations flags for building . Without this flags fps will be very low
After builing openmw library, you must copy all the libraries to libs folder in the java project folder
For example : /eclipse-project/app/src/main/jniLibs/armeabi-v7a
Then you must import this java project in android-studio , which included with the android sdk.
Also you need to import the configuration files from desktop openmw version.
Building Gotchas
CMake Error at /home/bcurtis/workspace/OpenMW/android/android-cmake/android.toolchain.cmake:429 (math): math cannot parse the expression: "+0": syntax error, unexpected exp_PLUS, expecting exp_OPENPARENT or exp_NUMBER (1) Call Stack (most recent call first): /home/bcurtis/workspace/OpenMW/android/build/CMakeFiles/3.2.2/CMakeSystem.cmake:6 (include) CMakeLists.txt:1 (project)
Don't panic, this can be worked around with the removal (or comment '#') of the non-critical line in the file android-cmake/android.toolchain.cmake on line 429.