D2DF-SDL for ANDROID -------------------- Doom 2D Forever port for Android 4.0+ Building -------- Tools, files and libraries used for official builds: * Android Platform Tools r21 (adb) * Android Build Tools r21 (dx, aapt) * Android Platform 19 (android.jar) * OpenJDK 8 (javac, jarsigner) * Crystax NDK 10.3.2 * FPC 3.2.2 * SDL 2.0.7 * SDL_mixer 2.0.4 * libenet 1.3.17 * libminiupnpc 2.2.3 Official packages builded for following Android ABIs (fpc options): * armeabi (-CpARMV5TE -CfSOFT -CaEABI -O2) [1] * armeabi-v7a (-CpARMV7A -CfVFPV3_D16 -CaEABI -O2) [1] * arm64-v8a (-CpARMV8 -CfVFP -O2) [2] * mips (-CpMIPS32 -CfMIPS3 -O2) [1][3][not tested] * x86 (-CpPENTIUM4 -CfSSSE3 -O-) [1][4][5] * x86_64 (-CpCOREI -CfSSE42 -O-) [2][4][5][not tested] [1] 32-bit builds linked with Android Platform 14 shared libraries [2] 64-bit builds linked with Android Platform 21 shared libraries [3] FPU instruction set can be incorrect for generic builds [4] CPU instruction set can be incorrect for generic builds Build all shared libraries using NDK toolchain and put into directory ./ass/lib/armeabi-v7a/. Also you need to build FPC crosscompiler ( http://wiki.freepascal.org/Android ). If you want to pack game resources into APK, add it into directory "resources". If you want to play MIDI music, add instruments and timidity.cfg into directory "resources" (you can grab it from https://www.libsdl.org/projects/SDL_mixer/timidity/timidity.tar.gz). Generate your personal keys (only onece): ``` keytool -genkey -validity 10000 \ -dname "CN=AndroidDebug, O=Android, C=US" \ -keystore d2df.keystore \ -storepass android \ -keypass android \ -alias androiddebugkey \ -keyalg RSA \ -keysize 2048 \ -v ``` Build D2DF for android armeabi-v7a: ``` rm -rf tmp mkdir -p tmp cd ../src/game ppcrossarm -g -gl -O2 \ -Tandroid -CpARMV7A -CfVFPV3_D16 -CaEABI \ -dUSE_SDL2 -dUSE_SDLMIXER -dUSE_GLES1 -dUSE_MINIUPNPC -O2 \ -FU../../android/tmp \ -FE../../android/ass/lib/armeabi-v7a \ -Fl../../android/ass/lib/armeabi-v7a \ -olibDoom2DF.so \ Doom2DF.lpr ``` Build APK and sign it (${ANDROID_JAR} are path to android.jar): ``` rm -rf bin obj gen mkdir -p bin obj gen resources aapt package -f -m -S res -J gen -M AndroidManifest.xml -I ${ANDROID_JAR} javac -source 1.6 -target 1.6 -d obj -bootclasspath ${ANDROID_JAR} -sourcepath src `find src -name '*.java'` dx --dex --output=bin/classes.dex obj aapt package -f \ -M AndroidManifest.xml \ -S res \ -J gen \ -I ${ANDROID_JAR} \ -F bin/d2df.unsigned.apk \ -A resources bin ass jarsigner -sigalg SHA1withRSA -digestalg SHA1 \ -keystore d2df.keystore \ -storepass android \ -keypass android \ -signedjar bin/d2df.signed.apk \ bin/d2df.unsigned.apk androiddebugkey ``` Install APK on your device via adb: ``` adb install -r bin/d2df.signed.apk ```