Open main menu

Compiling ScummVM/Android

< Compiling ScummVM
Revision as of 08:00, 29 March 2020 by Peterkohaut (talk | contribs) (Update for new toolchain)

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

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