Difference between revisions of "Compiling ScummVM/Android"
(Mention required version of Platform-tools) |
Peterkohaut (talk | contribs) (Update for new toolchain) |
||
Line 5: | Line 5: | ||
= Mandatory tools = | = Mandatory tools = | ||
* | * Android SDK Manager from Android Studio or from Command line tools - https://developer.android.com/studio | ||
Use the SDK Manager to install: | Use the SDK Manager to install: | ||
* | * Platform tools | ||
* | * Build Tools 29.0.3 | ||
* | * SDK Platform API 29 | ||
* NDK 21.0.6113669 | |||
Set the <tt> | Set the <tt>ANDROID_SDK_ROOT</tt> environment variable to the root directory of the SDK, and <tt>ANDROID_NDK_ROOT</tt> to the root directory of the NDK - default installation: <tt>${ANDROID_SDK_ROOT}/ndk/21.0.6113669</tt> | ||
= Optional libraries = | = Optional libraries = | ||
Line 28: | Line 28: | ||
== Build the libraries yourself == | == Build the libraries yourself == | ||
Here's a a simple script to set up a shell for crosscompiling: | Warning: this sections is not yet updated for new Android toolchain | ||
Here's a a simple script to set up a shell for crosscompiling for <tt>arm-v7a</tt>: | |||
#!/bin/sh | #!/bin/sh | ||
Line 105: | Line 107: | ||
The Android port can be compiled with the <tt>configure</tt> script. | The Android port can be compiled with the <tt>configure</tt> script. | ||
The most basic way to accomplish this is to run: | The most basic way to accomplish this is to run: | ||
./configure --host=android -- | ./configure --host=android-arm-v7a | ||
make | make | ||
Line 118: | Line 118: | ||
If you followed the [[#Optional libraries|above description]] and have those libraries in <tt>/opt/android/3rd-android-4-armeabi</tt>, the <tt>configure</tt> command line would look like this: | If you followed the [[#Optional libraries|above description]] and have those libraries in <tt>/opt/android/3rd-android-4-armeabi</tt>, the <tt>configure</tt> command line would look like this: | ||
./configure --host=android | ./configure --host=android-arm-v7a --with-tremor-prefix=/opt/android/3rd-android-4-armeabi --with-mad-prefix=/opt/android/3rd-android-4-armeabi --with-flac-prefix=/opt/android/3rd-android-4-armeabi | ||
Supported hosts: | |||
* <tt>android-arm-v7a</tt> - for older Android devices | |||
* <tt>android-arm64-v8a</tt> - for all new Android devices | |||
* <tt>android-x86</tt> - ideal for emulator with 32bit images | |||
* <tt>android-x86_64</tt> - ideal for emulator with 64bit images | |||
= Android Studiosetup = | |||
After compiling there in the build directory (if used) there will be a new directory called <tt>android-project</tt>, this can be opened by Android Studio. C files are not yet available , but it sis possible edit Java files and debug both Java & native code (in emulator or on a real device via <tt>adb</tt> connection). | |||
To enable debugging, after opening the <tt>android-project</tt> directory change <tt>Project configuration</tt>, under tab <tt>Debugger</tt>, set field <tt>Debug type</tt> to <tt>Dual</tt> |
Revision as of 08:00, 29 March 2020
Compiling ScummVM for Android
This page describes how you build Android packages from the ScummVM source tree. For help compiling this on Windows, see the separate article, Compiling ScummVM/Android (on Windows).
Mandatory tools
- Android SDK Manager from Android Studio or from Command line tools - https://developer.android.com/studio
Use the SDK Manager to install:
- Platform tools
- Build Tools 29.0.3
- SDK Platform API 29
- NDK 21.0.6113669
Set the ANDROID_SDK_ROOT environment variable to the root directory of the SDK, and ANDROID_NDK_ROOT to the root directory of the NDK - default installation: ${ANDROID_SDK_ROOT}/ndk/21.0.6113669
Optional libraries
- Tremor (lowmem branch) to play .ogg audio files
- MAD to play .mp3 audio files
- FLAC to play lossless .flac files
Again, you have two options:
Precompiled binaries
Get this archive and extract it to e.g. /opt/android.
Build the libraries yourself
Warning: this sections is not yet updated for new Android toolchain
Here's a a simple script to set up a shell for crosscompiling for arm-v7a:
#!/bin/sh PREFIX=${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi- export CC=${PREFIX}gcc export CXX=${PREFIX}g++ export AS=${PREFIX}gcc export LD=${PREFIX}gcc export AR=${PREFIX}ar cru export RANLIB=${PREFIX}ranlib export STRIP=${PREFIX}strip export OBJCOPY=${PREFIX}objcopy export CPP=${PREFIX}cpp export MACHDEP="--sysroot=$ANDROID_NDK/platforms/android-4/arch-arm -g -mandroid -mthumb-interwork" export CFLAGS="${MACHDEP} -Os -Wall -mandroid -msoft-float -march=armv5te -mtune=xscale" export CXXFLAGS="${CFLAGS}" export CPPFLAGS="${CFLAGS}" export LDFLAGS="${MACHDEP}" echo "./configure --host=arm --prefix=/opt/android/3rd-android-4-armeabi"
Save it to a file (like android-4-eabi.sh) and run
. ./android-4-eabi.sh
in your shell. Build systems should now use the correct tools.
Tremor
Get a SVN checkout (r17852. as of this writing):
svn co http://svn.xiph.org/trunk/Tremor
configure it:
./autogen.sh --host=arm --prefix=/opt/android/3rd-android-4-armeabi --enable-low-accuracy --enable-64kHz-limit
and finally build & install it:
make make install
MAD
Get a tarball of the latest stable version here (v0.15.1b as of this writing) and extract it.
configure it:
./autogen.sh --host=arm --prefix=/opt/android/3rd-android-4-armeabi --enable-speed --enable-fpm=arm --disable-aso
and finally build & install it:
make make install
FLAC
Get a tarball of the latest stable version here (v1.2.1 as of this writing) and extract it.
configure it:
./configure --prefix=/opt/android/3rd-android-4-armeabi --disable-largefile --disable-thorough-tests --disable-doxygen-docs --disable-xmms-plugin --disable-cpplibs --disable-ogg --disable-oggtest --disable-rpath
and build & install the required parts:
make -C src/libFLAC make -C src/libFLAC install make -C include install
Compiling
The Android port can be compiled with the configure script.
The most basic way to accomplish this is to run:
./configure --host=android-arm-v7a make
The script supports various arguments, which you can use to en- or disable features, see ./configure --help.
If you want support for additional libraries, you need cross-compiled binaries. If you followed the above description and have those libraries in /opt/android/3rd-android-4-armeabi, the configure command line would look like this:
./configure --host=android-arm-v7a --with-tremor-prefix=/opt/android/3rd-android-4-armeabi --with-mad-prefix=/opt/android/3rd-android-4-armeabi --with-flac-prefix=/opt/android/3rd-android-4-armeabi
Supported hosts:
- android-arm-v7a - for older Android devices
- android-arm64-v8a - for all new Android devices
- android-x86 - ideal for emulator with 32bit images
- android-x86_64 - ideal for emulator with 64bit images
Android Studiosetup
After compiling there in the build directory (if used) there will be a new directory called android-project, this can be opened by Android Studio. C files are not yet available , but it sis possible edit Java files and debug both Java & native code (in emulator or on a real device via adb connection). To enable debugging, after opening the android-project directory change Project configuration, under tab Debugger, set field Debug type to Dual