Note : We recommend you to put the “android-toolchain” and “player” directories in the same directory.
Download and follow the official instructions to install the Android SDK : http://developer.android.com/sdk/installing/index.html?pkg=tools
In the SDK directory, execute the “android” file, it displays a GUI. Use it to download the API 12 (or later). If you want to launch the application on a Virtual Machine, download the ARM EABI System Image.
Export the SDK directory’s path :
export SDK_ROOT=/the_sdk_directory_path
To compile the Player’s C++ code for Android, you have to compile it with the Android NDK. Download it and follow the official instructions : https://developer.android.com/tools/sdk/ndk/index.html
Export the NDK directory’s path :
export NDK_ROOT=/the_ndk_directory_path
You also have to export the ARM EABI toolchain path in the NDK directory. On Linux it should be :
export PATH=$NDK_ROOT/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin:$PATH
On MacOS it should be :
export PATH=$NDK_ROOT/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin:$PATH
In your working directory, clone the android-toolchain :
git clone https://github.com/Ghabry/easyrpg-android-libs android-toolchain
cd android-toolchain
Execute this script :
WORKSPACE=$(pwd)
# Compile easyrpg dependencies
ndk-build
cp obj/local/armeabi-v7a/*.a libs/armeabi-v7a/
## Compile icu
# Native
cd $WORKSPACE/jni
cp -r icu4c-53.1 icu4c-53.1-native
cd icu4c-53.1-native/source
chmod u+x configure
./configure --enable-static --enable-shared=no --enable-tests=no --enable-samples=no --enable-dyload=no --enable-tools --with-data-packaging=static
make
export ICU_CROSS_BUILD=$PWD
# Android
cd ../../icu4c-53.1/source
export CPPFLAGS="-I$NDK_ROOT/platforms/android-8/arch-arm/usr/include -I$NDK_ROOT/sources/cxx-stl/stlport/stlport -O3 -fno-short-wchar -DU_USING_ICU_NAMESPACE=0 -DU_GNUC_UTF16_STRING=0 -fno-short-enums -nostdlib"
export CXXFLAGS="$CPPFLAGS"
export CFLAGS="$CXXFLAGS"
export LDFLAGS="-lc -Wl,-rpath-link=$NDK_ROOT/platforms/android-8/arch-arm/usr/lib/ -L $NDK_ROOT/platforms/android-8/arch-arm/usr/lib/"
chmod u+x configure
./configure --with-cross-build=$ICU_CROSS_BUILD --enable-strict=no --enable-static --enable-shared=no --enable-tests=no --enable-samples=no --enable-dyload=no --enable-tools=no --host=arm-linux-androideabi --with-data- packaging=static
mv $NDK_ROOT/platforms/android-8/arch-arm/usr/include/util.h _util.h #To prevent a build error
make
mv _util.h $NDK_ROOT/platforms/android-8/arch-arm/usr/include/util.h #Back to the original directory
cp lib/*.a $WORKSPACE/libs/armeabi-v7a/
Return to your working directory (which should contain the android-toolchain directory)
Export the android-toolchain directory, it should be :
export EASYDEV_ANDROID=$(pwd)/android-toolchain
Export the path of the zipalign program in the Android SDK, which depends of the API installed package :
export PATH=$PATH:$SDK_ROOT/build-tools/21.1.2/
Create a keystore which will be used later :
keytool -genkey -v -keystore easyrpg.keystore -alias nightly -keyalg RSA -keysize 2048 -validity 10000
Export the path of the generated keystore.
export PATH_KEYSTORE=$(pwd)/easyrpg.keystore
And the password you gave when you generated the keystore :
export MDP=the_password
Clone the Player repository :
git clone https://github.com/EasyRPG/Player.git
cd Player
Then execute this script :
WORKSPACE=$(pwd)
#Clone of liblcf
mkdir -p lib
git clone https://github.com/EasyRPG/liblcf lib/liblcf
cd builds/android
#Download of timidity
git clone https://github.com/Ghabry/timidity_gus.git assets/timidity
You have to specify the API Target you will use to build the Player, for now we use the API 12, use “android list targets” to know the number associated with installed API. We assume this number is 1 :
android update project --path "." --target 1
NB : We’re targeting API 12 (to have gamepad support from SDL lib), but the minimum supported SDK is API 10.
Build the project :
ndk-build
ant clean
ant release
cd bin
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore $PATH_KEYSTORE -storepass $MDP SDLActivity-release-unsigned.apk nightly
zipalign 4 SDLActivity-release-unsigned.apk EasyRpgPlayerActivity.apk
Follow the official instructions by Google : http://developer.android.com/sdk/installing/installing-adt.html Don’t forget to specify the previous Android SDK directory path instead of downloading a new one.
File->Import-> Android -> “Existing Android Code Into Workspace”
Choose the builds/android directory of the Player’s directory as the project root.
Congratulations ! You can now work on the Player’s Android port ! Tu run the program, choose a Virtual Machine with armeabi-v7a CPU, or connect an android device to your computer (don’t forget to enable the USB Debugging).