DEADSOFTWARE

net: add 'an' as an alias for announce
[d2df-sdl.git] / android / README
index de9cb1bab91ac03abe7e57b9357b7afb63e6385e..f766dab803dce5b455938bc994446901d3f6591d 100644 (file)
@@ -1,64 +1,71 @@
 D2DF-SDL for ANDROID
 --------------------
 
-Doom 2D Forever ported to Android 4.1+.
+Doom 2D Forever port for Android 4.0+
 
 Building
 --------
 
-Requirements:
-* Android SDK build-tools >= 19.1.0;
-* Android SDK platforms >= android-16;
-* Android NDK >= r16b;
-* Open JDK >= 8;
-* FPC >= 3.0.4;
-* SDL >= 2.0.7;
-* SDL_mixer >= 2.0;
-* libenet >= 1.3.13;
-* nanoGL.
+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
 
-D2DF uses special version of nanoGL ( https://github.com/DeaDDooMER/nanogl ) with some added functions.
 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 ).
-Put game resources into direcotor resources/ (or install it manually into external/internal storage).
 
-Generate keys:
+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
+  -dname "CN=AndroidDebug, O=Android, C=US" \
+  -keystore d2df.keystore \
+  -storepass android \
+  -keypass android \
+  -alias androiddebugkey \
+  -keyalg RSA \
+  -keysize 2048 \
+  -v
 ```
 
-Build D2DF:
+Build D2DF for android armeabi-v7a:
 ```
 rm -rf tmp
 mkdir -p tmp
 cd ../src/game
-ppcrossarm \
-        -g -gl -dUSE_SDLMIXER -dUSE_NANOGL -O3 \
-        -Tandroid \
-        -Cparmv7a \
-        -Cfvfpv3 \
-        -Fi../lib/vampimg \
-        -Fi../lib/vampimg/JpegLib \
-        -Fi../lib/vampimg/ZLib \
-        -Fu../lib/vampimg \
-        -Fu../lib/vampimg/JpegLib \
-        -Fu../lib/vampimg/ZLib \
-        -FU../../android/tmp \
-        -FE../../android/ass/lib/armeabi-v7a \
-        -Fl../../android/ass/lib/armeabi-v7a \
-        -olibDoom2DF.so \
-        Doom2DF.lpr
+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:
+Build APK and sign it (${ANDROID_JAR} are path to android.jar):
 ```
 rm -rf bin obj gen
 mkdir -p bin obj gen resources
@@ -66,19 +73,22 @@ 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
+  -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
+  -keystore d2df.keystore \
+  -storepass android \
+  -keypass android \
+  -signedjar bin/d2df.signed.apk \
+  bin/d2df.unsigned.apk androiddebugkey
 ```
 
-Where ${ANDROID_JAR} is path to android.jar file. Typically placed in ~/Android/android-sdk/platforms/android-16/android.jar.
+Install APK on your device via adb:
+```
+adb install -r bin/d2df.signed.apk
+```