1505 lines
60 KiB
Bash
Executable File
1505 lines
60 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
AUTO=
|
|
CHANGED=
|
|
JAVA_SRC_PATH=project/java
|
|
|
|
if [ "X$1" = "X-a" ]; then
|
|
AUTO=a
|
|
fi
|
|
if [ "X$1" = "X-v" ]; then
|
|
AUTO=v
|
|
fi
|
|
if [ "X$1" = "X-u" ]; then
|
|
CHANGED=1
|
|
AUTO=a
|
|
fi
|
|
if [ "X$1" = "X-h" ]; then
|
|
echo "Usage: $0 [-a] [-v] [-u]"
|
|
echo " -a: auto-update project files without asking questions"
|
|
echo " -v: ask only for new version number"
|
|
echo " -u: update AndroidAppSettings.cfg, this may add new config options to it"
|
|
exit
|
|
fi
|
|
|
|
. ./AndroidAppSettings.cfg
|
|
|
|
var=""
|
|
|
|
echo
|
|
echo "===== libSDL on Android configuration ====="
|
|
echo
|
|
echo "If you will supply empty string as answer the previous value will be used"
|
|
|
|
if [ -z "$LibSdlVersion" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "libSDL version to use (1.2, 1.3, or 2.0) ($LibSdlVersion): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
LibSdlVersion="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ "$LibSdlVersion" = "2.0" ]; then
|
|
JAVA_SRC_PATH=project/javaSDL2
|
|
fi
|
|
|
|
if [ -z "$AppName" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Specify application name (e.x. My Application) ($AppName): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
AppName="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$AppFullName" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Specify reversed site name of application (e.x. com.mysite.myapp) ($AppFullName): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
AppFullName="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$ScreenOrientation" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Specify screen orientation: (v)ertical/(p)ortrait or (h)orizontal/(l)andscape ($ScreenOrientation): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
ScreenOrientation="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$AppDataDownloadUrl" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo "Specify path to download application data in zip archive in the form 'Description|URL|MirrorURL|...'"
|
|
echo "You may specify additional paths to additional downloads delimited by newlines (empty line to finish)"
|
|
echo "If you'll start Description with '!' symbol it will be enabled by default, other downloads should be selected by user from config menu"
|
|
echo "If the URL in in the form ':dir/file.dat:http://URL/' it will be downloaded as-is to the application dir and not unzipped"
|
|
echo "If the URL does not contain 'http://' it is treated as file from 'project/jni/application/src/AndroidData' dir -"
|
|
echo "these files are put inside .apk package by build system"
|
|
echo "Also please avoid 'https://' URLs, many Android devices do not have trust certificates and will fail to connect to SF.net over HTTPS"
|
|
echo " "
|
|
echo "`echo $AppDataDownloadUrl | tr '^' '\\n'`"
|
|
echo
|
|
AppDataDownloadUrl1=""
|
|
while true; do
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
if [ -z "$AppDataDownloadUrl1" ]; then
|
|
AppDataDownloadUrl1="$var"
|
|
else
|
|
AppDataDownloadUrl1="$AppDataDownloadUrl1^$var"
|
|
fi
|
|
else
|
|
break
|
|
fi
|
|
done
|
|
if [ -n "$AppDataDownloadUrl1" ] ; then
|
|
AppDataDownloadUrl="$AppDataDownloadUrl1"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ "$LibSdlVersion" = "1.2" ]; then
|
|
if [ -z "$CompatibilityHacks" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo "Application does not call SDL_Flip() or SDL_UpdateRects() appropriately, or draws from non-main thread -"
|
|
echo -n "enabling the compatibility mode will force screen update every halfsecond (y) or (n) ($CompatibilityHacks): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
CompatibilityHacks="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
if [ "$CompatibilityHacks" = y ]; then
|
|
SwVideoMode=y
|
|
else
|
|
if [ -z "$SwVideoMode" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo "Application uses software video buffer - you're calling SDL_SetVideoMode() without SDL_HWSURFACE and without SDL_OPENGL,"
|
|
echo -n "this will allow small speed optimization (y) or (n) ($SwVideoMode): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
SwVideoMode="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
fi
|
|
else
|
|
SwVideoMode=n
|
|
fi
|
|
|
|
if [ -z "$CompatibilityHacksStaticInit" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Application initializes SDL audio/video inside static constructors (which is bad, you won't be able to run ndk-gdb) (y)/(n) ($CompatibilityHacksStaticInit): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
CompatibilityHacksStaticInit="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$VideoDepthBpp" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo "Video color depth - 16 BPP is the fastest and supported for all modes, 24 bpp is supported only for"
|
|
echo -n "software video mode, SDL_OPENGL mode supports everything (16)/(24)/(32) ($VideoDepthBpp): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
VideoDepthBpp="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ "$SwVideoMode" = "y" ]; then
|
|
NeedDepthBuffer=n
|
|
NeedStencilBuffer=n
|
|
NeedGles2=n
|
|
else
|
|
|
|
if [ -z "$NeedDepthBuffer" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Enable OpenGL depth buffer (needed only for 3-d applications, small speed decrease) (y) or (n) ($NeedDepthBuffer): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
NeedDepthBuffer="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$NeedStencilBuffer" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Enable OpenGL stencil buffer (needed only for 3-d applications, small speed decrease) (y) or (n) ($NeedDepthBuffer): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
NeedStencilBuffer="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$NeedGles2" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo "Try to use GLES 2.x context - will revert to GLES 1.X if unsupported by device"
|
|
echo -n "you need this option only if you're developing 3-d app (y) or (n) ($NeedGles2): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
NeedGles2="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$CompatibilityHacksTouchscreenKeyboardSaveRestoreOpenGLState" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo "Touchscreen keyboard will save and restore OpenGL state before drawing itself -"
|
|
echo -n "this works reliably only on Android 4.X devices, many Andorid 2.X devices do not support glGet() (y)/(n) ($CompatibilityHacksTouchscreenKeyboardSaveRestoreOpenGLState): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
CompatibilityHacksTouchscreenKeyboardSaveRestoreOpenGLState="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
fi
|
|
|
|
if [ -z "$SdlVideoResize" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo "Application window should be resized to fit into native device screen (480x320 or 800x480) (y) or (n) ($SdlVideoResize): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
SdlVideoResize="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$SdlVideoResizeKeepAspect" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Application resizing should use 4:3 aspect ratio, creating black bars (y) or (n) ($SdlVideoResizeKeepAspect): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
SdlVideoResizeKeepAspect="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$AppUsesMouse" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Application uses mouse (y) or (n) ($AppUsesMouse): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
AppUsesMouse="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$AppNeedsTwoButtonMouse" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Application needs two-button mouse, will also enable advanced point-and-click features (y) or (n) ($AppNeedsTwoButtonMouse): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
AppNeedsTwoButtonMouse="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$ForceRelativeMouseMode" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Force relative (laptop) mouse movement mode, useful when both on-screen keyboard and mouse are needed (y) or (n) ($ForceRelativeMouseMode): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
ForceRelativeMouseMode="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$ShowMouseCursor" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Show SDL mouse cursor, for applications that do not draw cursor at all (y) or (n) ($ShowMouseCursor): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
ShowMouseCursor="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$AppNeedsArrowKeys" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo "Application needs arrow keys (y) or (n), if (y) touchscreen keyboard"
|
|
echo -n "will be used as arrow keys if phone does not have dpad/trackball ($AppNeedsArrowKeys): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
AppNeedsArrowKeys="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$AppNeedsTextInput" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Application needs text input (y) or (n), enables button for text input on screen ($AppNeedsTextInput): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
AppNeedsTextInput="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$CompatibilityHacksTextInputEmulatesHwKeyboard" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "On-screen Android soft text input emulates hardware keyboard, this will only work with Hackers Keyboard app (y)/(n) ($CompatibilityHacksTextInputEmulatesHwKeyboard): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
CompatibilityHacksTextInputEmulatesHwKeyboard="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$CompatibilityHacksPreventAudioChopping" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Hack for broken devices: prevent audio chopping, by sleeping a bit after pushing each audio chunk (y)/(n) ($CompatibilityHacksPreventAudioChopping): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
CompatibilityHacksPreventAudioChopping="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$CompatibilityHacksAppIgnoresAudioBufferSize" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Hack for broken apps: application ignores audio buffer size returned by SDL (y)/(n) ($CompatibilityHacksAppIgnoresAudioBufferSize): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
CompatibilityHacksAppIgnoresAudioBufferSize="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$CompatibilityHacksSlowCompatibleEventQueue" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo "Hack for Free Heroes 2, which redraws the screen inside SDL_PumpEvents(): slow and compatible SDL event queue -"
|
|
echo -n "do not use it with accelerometer/gyroscope, or your app may freeze at random (y)/(n) ($CompatibilityHacksSlowCompatibleEventQueue): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
CompatibilityHacksSlowCompatibleEventQueue="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$AppUsesJoystick" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Application uses joystick (y) or (n), the on-screen DPAD will be used as joystick 0 axes 0-1 ($AppUsesJoystick): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
AppUsesJoystick="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ "$AppUsesJoystick" = "y" ]; then
|
|
if [ -z "$AppUsesSecondJoystick" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Application uses second on-screen joystick, as SDL joystick 0 axes 2-3 (y)/(n) ($AppUsesSecondJoystick): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
AppUsesSecondJoystick="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
else
|
|
AppUsesSecondJoystick=n
|
|
fi
|
|
|
|
if [ -z "$AppUsesAccelerometer" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Application uses accelerometer (y) or (n), the accelerometer will be used as joystick 1 axes 0-1 ($AppUsesAccelerometer): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
AppUsesAccelerometer="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$AppUsesGyroscope" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Application uses gyroscope (y) or (n), the gyroscope will be used as joystick 1 axes 2-4 ($AppUsesGyroscope): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
AppUsesGyroscope="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$AppUsesMultitouch" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo "Application uses multitouch (y) or (n), multitouch events are passed as SDL_JOYBUTTONDOWN/SDL_JOYBALLMOTION events"
|
|
echo -n " for the joystick 0, or additionally as SDL_FINGERDOWN/UP/MOTION events in SDL 1.3 ($AppUsesMultitouch): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
AppUsesMultitouch="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$AppRecordsAudio" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo "Application records audio (it will use any available source, such a s microphone)"
|
|
echo "API is defined in file SDL_android.h: int SDL_ANDROID_OpenAudioRecording(SDL_AudioSpec *spec); void SDL_ANDROID_CloseAudioRecording(void);"
|
|
echo -n "This option will add additional permission to Android manifest (y)/(n) ($AppRecordsAudio): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
AppRecordsAudio="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$NonBlockingSwapBuffers" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo "Application implements Android-specific routines to put to background, and will not draw anything to screen"
|
|
echo "between SDL_ACTIVEEVENT lost / gained notifications - you should check for them"
|
|
echo "rigth after SDL_Flip(), if (n) then SDL_Flip() will block till app in background"
|
|
echo -n "This option is reported to be buggy, sometimes failing to restore video state (y) or (n) ($NonBlockingSwapBuffers): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
NonBlockingSwapBuffers="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$InhibitSuspend" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Do not allow device to sleep when the application is in foreground, set this for video players or apps which use accelerometer ($InhibitSuspend): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
InhibitSuspend="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$RedefinedKeys" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo "Redefine common keys to SDL keysyms"
|
|
echo "BACK hardware key is available on all devices, MENU is available on pre-ICS devices, other keys may be absent"
|
|
echo "SEARCH and CALL by default return same keycode as DPAD_CENTER - one of those keys is available on most devices"
|
|
echo "Use word NO_REMAP if you want to preserve native functionality for certain key (volume keys typically)"
|
|
echo "TOUCHSCREEN DPAD_CENTER/SEARCH VOLUMEUP VOLUMEDOWN MENU BACK CAMERA - Java keycodes"
|
|
echo "$RedefinedKeys - current SDL keycodes"
|
|
echo -n ": "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
RedefinedKeys="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$AppTouchscreenKeyboardKeysAmount" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Number of virtual keyboard keys (currently 6 is maximum) ($AppTouchscreenKeyboardKeysAmount): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
AppTouchscreenKeyboardKeysAmount="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$RedefinedKeysScreenKb" -o -z "$AUTO" ]; then
|
|
if [ -z "$RedefinedKeysScreenKb" ]; then
|
|
RedefinedKeysScreenKb="$RedefinedKeys"
|
|
CHANGED=1
|
|
fi
|
|
echo
|
|
echo "Redefine on-screen keyboard keys to SDL keysyms - 6 keyboard keys + 4 multitouch gestures (zoom in/out and rotate left/right)"
|
|
echo "$RedefinedKeysScreenKb - current SDL keycodes"
|
|
echo -n ": "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
RedefinedKeysScreenKb="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$RedefinedKeysScreenKbNames" -o -z "$AUTO" ]; then
|
|
if [ -z "$RedefinedKeysScreenKbNames" ]; then
|
|
RedefinedKeysScreenKbNames="$RedefinedKeysScreenKb"
|
|
CHANGED=1
|
|
fi
|
|
echo
|
|
echo "Names for on-screen keyboard keys, such as Fire, Jump, Run etc, separated by spaces, they are used in SDL config menu"
|
|
echo "$RedefinedKeysScreenKbNames"
|
|
echo -n ": "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
RedefinedKeysScreenKbNames="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$TouchscreenKeysTheme" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo "On-screen keys theme"
|
|
echo "0 = Ultimate Droid by Sean Stieber (green, with gamepad joystick)"
|
|
echo "1 = Simple Theme by Beholder (white, with gamepad joystick)"
|
|
echo "2 = Sun by Sirea (yellow, with round joystick)"
|
|
echo "3 = Keen by Gerstrong (multicolor, with round joystick)"
|
|
echo ""
|
|
echo -n "($TouchscreenKeysTheme): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
TouchscreenKeysTheme="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$RedefinedKeysGamepad" -o -z "$AUTO" ]; then
|
|
if [ -z "$RedefinedKeysGamepad" ]; then
|
|
RedefinedKeysGamepad="$RedefinedKeysScreenKb"
|
|
CHANGED=1
|
|
fi
|
|
echo
|
|
echo "Redefine gamepad keys to SDL keysyms, button order is:"
|
|
echo "A B X Y L1 R1 L2 R2 LThumb RThumb"
|
|
echo "$RedefinedKeysGamepad - current SDL keycodes"
|
|
echo -n ": "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
RedefinedKeysGamepad="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$StartupMenuButtonTimeout" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "How long to show startup menu button, in msec, 0 to disable startup menu ($StartupMenuButtonTimeout): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
StartupMenuButtonTimeout="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
MenuOptionsAvailable=
|
|
for FF in Menu MenuMisc MenuMouse MenuKeyboard ; do
|
|
MenuOptionsAvailable1=`grep 'extends Menu' $JAVA_SRC_PATH/Settings$FF.java | sed "s/.* class \(.*\) extends .*/Settings$FF.\1/" | tr '\n' ' '`
|
|
MenuOptionsAvailable="$MenuOptionsAvailable $MenuOptionsAvailable1"
|
|
done
|
|
if [ -z "$AUTO" ]; then
|
|
echo
|
|
echo "Menu items to hide from startup menu, available menu items:"
|
|
echo "$MenuOptionsAvailable"
|
|
echo "($HiddenMenuOptions)"
|
|
echo -n ": "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
HiddenMenuOptions="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
FirstStartMenuOptionsDefault='new SettingsMenuMisc.ShowReadme(), (AppUsesMouse \&\& \! ForceRelativeMouseMode \? new SettingsMenuMouse.DisplaySizeConfig(true) : new SettingsMenu.DummyMenu()), new SettingsMenuMisc.OptionalDownloadConfig(true), new SettingsMenuMisc.GyroscopeCalibration()'
|
|
if [ -z "$AUTO" ]; then
|
|
echo
|
|
echo "Menu items to show at startup - this is Java code snippet, leave empty for default:"
|
|
echo "$FirstStartMenuOptionsDefault"
|
|
echo "Available menu items:"
|
|
echo "$MenuOptionsAvailable"
|
|
echo "Current value: " "$FirstStartMenuOptions"
|
|
echo -n ": "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
FirstStartMenuOptions="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$MultiABI" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo "Enable multi-ABI binary, with hardware FPU support - it will also work on old devices,"
|
|
echo -n "but .apk size is 2x bigger (y) / (n) / (x86) / (all) ($MultiABI): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
MultiABI="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$AppMinimumRAM" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Minimum amount of RAM application requires, in Mb, SDL will print warning to user if it's lower ($AppMinimumRAM): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
AppMinimumRAM="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$AppVersionCode" -o "-$AUTO" != "-a" ]; then
|
|
echo
|
|
echo -n "Application version code (integer) ($AppVersionCode): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
AppVersionCode="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$AppVersionName" -o "-$AUTO" != "-a" ]; then
|
|
echo
|
|
echo -n "Application user-visible version name (string) ($AppVersionName): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
AppVersionName="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$ResetSdlConfigForThisVersion" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Reset SDL config when updating application to the new version (y) / (n) ($ResetSdlConfigForThisVersion): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
ResetSdlConfigForThisVersion="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$DeleteFilesOnUpgrade" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Delete application data files when upgrading (specify file/dir paths separated by spaces): ($DeleteFilesOnUpgrade): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
DeleteFilesOnUpgrade="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$CustomBuildScript" -o -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Application uses custom build script AndroidBuild.sh instead of Android.mk (y) or (n) ($CustomBuildScript): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
CustomBuildScript="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Aditional CFLAGS for application ($AppCflags): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
AppCflags="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$AUTO" ]; then
|
|
echo
|
|
echo "Optional shared libraries to compile - removing some of them will save space"
|
|
echo "MP3 support by libMAD is encumbered by patents and libMAD is GPL-ed"
|
|
grep 'Available' project/jni/SettingsTemplate.mk
|
|
grep 'depends on' project/jni/SettingsTemplate.mk
|
|
echo "Current: $CompiledLibraries"
|
|
echo -n ": "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
CompiledLibraries="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Additional LDFLAGS for application ($AppLdflags): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
AppLdflags="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Build only following subdirs (empty will build all dirs, ignored with custom script) ($AppSubdirsBuild): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
AppSubdirsBuild="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$AUTO" ]; then
|
|
echo
|
|
echo -n "Application command line parameters, including app name as 0-th param ($AppCmdline): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
AppCmdline="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$AUTO" ]; then
|
|
echo
|
|
echo "Here you may type readme text, which will be shown during startup. Format is:"
|
|
echo "Text in English, use \\\\n to separate lines (that's four backslashes, nice isn't it?)"
|
|
echo "de:Text in Deutsch"
|
|
echo "ru:Text in Russian, and so on"
|
|
echo
|
|
echo "Current text:"
|
|
echo
|
|
echo "`echo $ReadmeText | tr '^' '\\n'`"
|
|
echo
|
|
echo "New text (empty line to finish):"
|
|
echo
|
|
|
|
ReadmeText1=""
|
|
while true; do
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
if [ -n "$ReadmeText1" ] ; then
|
|
ReadmeText1="$ReadmeText1^$var"
|
|
else
|
|
ReadmeText1="$var"
|
|
fi
|
|
else
|
|
break
|
|
fi
|
|
done
|
|
if [ -n "$ReadmeText1" ] ; then
|
|
ReadmeText="$ReadmeText1"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$AUTO" -o -z "$AdmobPublisherId" ]; then
|
|
echo
|
|
echo -n "Your AdMob Publisher ID, (n) if you don't want advertisements ($AdmobPublisherId): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
AdmobPublisherId="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
if [ "$AdmobPublisherId" '!=' "n" ]; then
|
|
if [ -z "$AUTO" -o -z "$AdmobTestDeviceId" ]; then
|
|
echo
|
|
echo -n "Your AdMob test device ID, to receive a test ad ($AdmobTestDeviceId): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
AdmobTestDeviceId="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
if [ -z "$AUTO" -o -z "$AdmobBannerSize" ]; then
|
|
echo
|
|
echo -n "Your AdMob banner size (BANNER/IAB_BANNER/IAB_LEADERBOARD/IAB_MRECT/IAB_WIDE_SKYSCRAPER/SMART_BANNER) ($AdmobBannerSize): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
AdmobBannerSize="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$AUTO" -o -z "$MinimumScreenSize" ]; then
|
|
echo
|
|
echo "Screen size is used by Google Play to prevent an app to be installed on devices with smaller screens"
|
|
echo -n "Minimum screen size that application supports: (s)mall / (m)edium / (l)arge ($MinimumScreenSize): "
|
|
read var
|
|
if [ -n "$var" ] ; then
|
|
MinimumScreenSize="$var"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
|
|
echo
|
|
|
|
if [ -n "$CHANGED" ]; then
|
|
cat /dev/null > AndroidAppSettings.cfg
|
|
echo "# The application settings for Android libSDL port" >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Specify application name (e.x. My Application)" >> AndroidAppSettings.cfg
|
|
echo AppName=\"$AppName\" >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Specify reversed site name of application (e.x. com.mysite.myapp)" >> AndroidAppSettings.cfg
|
|
echo AppFullName=$AppFullName >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Application version code (integer)" >> AndroidAppSettings.cfg
|
|
echo AppVersionCode=$AppVersionCode >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Application user-visible version name (string)" >> AndroidAppSettings.cfg
|
|
echo AppVersionName=\"$AppVersionName\" >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Specify path to download application data in zip archive in the form 'Description|URL|MirrorURL^Description2|URL2|MirrorURL2^...'" >> AndroidAppSettings.cfg
|
|
echo "# If you'll start Description with '!' symbol it will be enabled by default, other downloads should be selected by user from startup config menu" >> AndroidAppSettings.cfg
|
|
echo "# If the URL in in the form ':dir/file.dat:http://URL/' it will be downloaded as binary BLOB to the application dir and not unzipped" >> AndroidAppSettings.cfg
|
|
echo "# If the URL does not contain 'http://' it is treated as file from 'project/jni/application/src/AndroidData' dir -" >> AndroidAppSettings.cfg
|
|
echo "# these files are put inside .apk package by build system" >> AndroidAppSettings.cfg
|
|
echo "# Also please avoid 'https://' URLs, many Android devices do not have trust certificates and will fail to connect to SF.net over HTTPS" >> AndroidAppSettings.cfg
|
|
echo AppDataDownloadUrl=\"$AppDataDownloadUrl\" >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Reset SDL config when updating application to the new version (y) / (n)" >> AndroidAppSettings.cfg
|
|
echo ResetSdlConfigForThisVersion=$ResetSdlConfigForThisVersion >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Delete application data files when upgrading (specify file/dir paths separated by spaces)" >> AndroidAppSettings.cfg
|
|
echo DeleteFilesOnUpgrade=\"$DeleteFilesOnUpgrade\" >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Here you may type readme text, which will be shown during startup. Format is:" >> AndroidAppSettings.cfg
|
|
echo "# Text in English, use \\\\\\\\\\\\\\\\n to separate lines (that's four backslashes)^de:Text in Deutsch^ru:Text in Russian^button:Button that will open some URL:http://url-to-open/" >> AndroidAppSettings.cfg
|
|
echo ReadmeText=\'$ReadmeText\' | sed 's/\\\\n/\\\\\\\\n/g' >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# libSDL version to use (1.2/1.3/2.0)" >> AndroidAppSettings.cfg
|
|
echo LibSdlVersion=$LibSdlVersion >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Specify screen orientation: (v)ertical/(p)ortrait or (h)orizontal/(l)andscape" >> AndroidAppSettings.cfg
|
|
echo ScreenOrientation=$ScreenOrientation >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Video color depth - 16 BPP is the fastest and supported for all modes, 24 bpp is supported only" >> AndroidAppSettings.cfg
|
|
echo "# with SwVideoMode=y, SDL_OPENGL mode supports everything. (16)/(24)/(32)" >> AndroidAppSettings.cfg
|
|
echo VideoDepthBpp=$VideoDepthBpp >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Enable OpenGL depth buffer (needed only for 3-d applications, small speed decrease) (y) or (n)" >> AndroidAppSettings.cfg
|
|
echo NeedDepthBuffer=$NeedDepthBuffer >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Enable OpenGL stencil buffer (needed only for 3-d applications, small speed decrease) (y) or (n)" >> AndroidAppSettings.cfg
|
|
echo NeedStencilBuffer=$NeedStencilBuffer >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Try to use GLES 2.x context - will revert to GLES 1.X if unsupported by device" >> AndroidAppSettings.cfg
|
|
echo "# you need this option only if you're developing 3-d app (y) or (n)" >> AndroidAppSettings.cfg
|
|
echo NeedGles2=$NeedGles2 >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Application uses software video buffer - you're calling SDL_SetVideoMode() without SDL_HWSURFACE and without SDL_OPENGL," >> AndroidAppSettings.cfg
|
|
echo "# this will allow small speed optimization. Enable this even when you're using SDL_HWSURFACE. (y) or (n)" >> AndroidAppSettings.cfg
|
|
echo SwVideoMode=$SwVideoMode >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Application video output will be resized to fit into native device screen (y)/(n)" >> AndroidAppSettings.cfg
|
|
echo SdlVideoResize=$SdlVideoResize >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Application resizing will keep 4:3 aspect ratio, with black bars at sides (y)/(n)" >> AndroidAppSettings.cfg
|
|
echo SdlVideoResizeKeepAspect=$SdlVideoResizeKeepAspect >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Do not allow device to sleep when the application is in foreground, set this for video players or apps which use accelerometer" >> AndroidAppSettings.cfg
|
|
echo InhibitSuspend=$InhibitSuspend >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Create Android service, so the app is less likely to be killed while in background" >> AndroidAppSettings.cfg
|
|
echo CreateService=$CreateService >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Application does not call SDL_Flip() or SDL_UpdateRects() appropriately, or draws from non-main thread -" >> AndroidAppSettings.cfg
|
|
echo "# enabling the compatibility mode will force screen update every 100 milliseconds, which is laggy and inefficient (y) or (n)" >> AndroidAppSettings.cfg
|
|
echo CompatibilityHacks=$CompatibilityHacks >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Application initializes SDL audio/video inside static constructors (which is bad, you won't be able to run ndk-gdb) (y)/(n)" >> AndroidAppSettings.cfg
|
|
echo CompatibilityHacksStaticInit=$CompatibilityHacksStaticInit >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# On-screen Android soft text input emulates hardware keyboard, this will only work with Hackers Keyboard app (y)/(n)" >> AndroidAppSettings.cfg
|
|
echo CompatibilityHacksTextInputEmulatesHwKeyboard=$CompatibilityHacksTextInputEmulatesHwKeyboard >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Hack for broken devices: prevent audio chopping, by sleeping a bit after pushing each audio chunk (y)/(n)" >> AndroidAppSettings.cfg
|
|
echo CompatibilityHacksPreventAudioChopping=$CompatibilityHacksPreventAudioChopping >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Hack for broken apps: application ignores audio buffer size returned by SDL (y)/(n)" >> AndroidAppSettings.cfg
|
|
echo CompatibilityHacksAppIgnoresAudioBufferSize=$CompatibilityHacksAppIgnoresAudioBufferSize >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Hack for VCMI: preload additional shared libraries before aplication start" >> AndroidAppSettings.cfg
|
|
echo CompatibilityHacksAdditionalPreloadedSharedLibraries=\"$CompatibilityHacksAdditionalPreloadedSharedLibraries\" >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Hack for Free Heroes 2, which redraws the screen inside SDL_PumpEvents(): slow and compatible SDL event queue -" >> AndroidAppSettings.cfg
|
|
echo "# do not use it with accelerometer/gyroscope, or your app may freeze at random (y)/(n)" >> AndroidAppSettings.cfg
|
|
echo CompatibilityHacksSlowCompatibleEventQueue=$CompatibilityHacksSlowCompatibleEventQueue >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Save and restore OpenGL state when drawing on-screen keyboard for apps that use SDL_OPENGL" >> AndroidAppSettings.cfg
|
|
echo CompatibilityHacksTouchscreenKeyboardSaveRestoreOpenGLState=$CompatibilityHacksTouchscreenKeyboardSaveRestoreOpenGLState >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Application uses SDL_UpdateRects() properly, and does not draw in any region outside those rects." >> AndroidAppSettings.cfg
|
|
echo "# This improves drawing speed, but I know only one application that does that, and it's written by me (y)/(n)" >> AndroidAppSettings.cfg
|
|
echo CompatibilityHacksProperUsageOfSDL_UpdateRects=$CompatibilityHacksProperUsageOfSDL_UpdateRects >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Application uses mouse (y) or (n), this will show mouse emulation dialog to the user" >> AndroidAppSettings.cfg
|
|
echo AppUsesMouse=$AppUsesMouse >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Application needs two-button mouse, will also enable advanced point-and-click features (y) or (n)" >> AndroidAppSettings.cfg
|
|
echo AppNeedsTwoButtonMouse=$AppNeedsTwoButtonMouse >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Right mouse button can do long-press/drag&drop action, necessary for some games (y) or (n)" >> AndroidAppSettings.cfg
|
|
echo "# If you disable it, swiping with two fingers will send mouse wheel events" >> AndroidAppSettings.cfg
|
|
echo RightMouseButtonLongPress=$RightMouseButtonLongPress >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Show SDL mouse cursor, for applications that do not draw cursor at all (y) or (n)" >> AndroidAppSettings.cfg
|
|
echo ShowMouseCursor=$ShowMouseCursor >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Generate more touch events, by default SDL generates one event per one video frame, this is useful for drawing apps (y) or (n)" >> AndroidAppSettings.cfg
|
|
echo GenerateSubframeTouchEvents=$GenerateSubframeTouchEvents >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Force relative (laptop) mouse movement mode, useful when both on-screen keyboard and mouse are needed (y) or (n)" >> AndroidAppSettings.cfg
|
|
echo ForceRelativeMouseMode=$ForceRelativeMouseMode >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Application needs arrow keys (y) or (n), will show on-screen dpad/joystick (y) or (n)" >> AndroidAppSettings.cfg
|
|
echo AppNeedsArrowKeys=$AppNeedsArrowKeys >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Application needs text input (y) or (n), enables button for text input on screen" >> AndroidAppSettings.cfg
|
|
echo AppNeedsTextInput=$AppNeedsTextInput >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Application uses joystick (y) or (n), the on-screen DPAD will be used as joystick 0 axes 0-1" >> AndroidAppSettings.cfg
|
|
echo AppUsesJoystick=$AppUsesJoystick >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Application uses second on-screen joystick, as SDL joystick 0 axes 2-3 (y)/(n)" >> AndroidAppSettings.cfg
|
|
echo AppUsesSecondJoystick=$AppUsesSecondJoystick >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Application uses third on-screen joystick, as SDL joystick 0 axes 20-21 (y)/(n)" >> AndroidAppSettings.cfg
|
|
echo AppUsesThirdJoystick=$AppUsesThirdJoystick >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Application uses accelerometer (y) or (n), the accelerometer will be used as joystick 1 axes 0-1 and 5-7" >> AndroidAppSettings.cfg
|
|
echo AppUsesAccelerometer=$AppUsesAccelerometer >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Application uses gyroscope (y) or (n), the gyroscope will be used as joystick 1 axes 2-4" >> AndroidAppSettings.cfg
|
|
echo AppUsesGyroscope=$AppUsesGyroscope >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Application uses multitouch (y) or (n), multitouch events are passed as SDL_JOYBALLMOTION events for the joystick 0" >> AndroidAppSettings.cfg
|
|
echo AppUsesMultitouch=$AppUsesMultitouch >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Application records audio (it will use any available source, such a s microphone)" >> AndroidAppSettings.cfg
|
|
echo "# API is defined in file SDL_android.h: int SDL_ANDROID_OpenAudioRecording(SDL_AudioSpec *spec); void SDL_ANDROID_CloseAudioRecording(void);" >> AndroidAppSettings.cfg
|
|
echo "# This option will add additional permission to Android manifest (y)/(n)" >> AndroidAppSettings.cfg
|
|
echo AppRecordsAudio=$AppRecordsAudio >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Application needs to access SD card. If your data files are bigger than 5 Mb, enable it. (y) / (n)" >> AndroidAppSettings.cfg
|
|
echo AccessSdCard=$AccessSdCard >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Application needs Internet access. If you disable it, you'll have to bundle all your data files inside .apk (y) / (n)" >> AndroidAppSettings.cfg
|
|
echo AccessInternet=$AccessInternet >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Immersive mode - Android will hide on-screen Home/Back keys. Looks bad if you invoke Android keyboard. (y) / (n)" >> AndroidAppSettings.cfg
|
|
echo ImmersiveMode=$ImmersiveMode >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Application implements Android-specific routines to put to background, and will not draw anything to screen" >> AndroidAppSettings.cfg
|
|
echo "# between SDL_ACTIVEEVENT lost / gained notifications - you should check for them" >> AndroidAppSettings.cfg
|
|
echo "# rigth after SDL_Flip(), if (n) then SDL_Flip() will block till app in background (y) or (n)" >> AndroidAppSettings.cfg
|
|
echo "# This option is reported to be buggy, sometimes failing to restore video state" >> AndroidAppSettings.cfg
|
|
echo NonBlockingSwapBuffers=$NonBlockingSwapBuffers >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Redefine common hardware keys to SDL keysyms" >> AndroidAppSettings.cfg
|
|
echo "# BACK hardware key is available on all devices, MENU is available on pre-ICS devices, other keys may be absent" >> AndroidAppSettings.cfg
|
|
echo "# SEARCH and CALL by default return same keycode as DPAD_CENTER - one of those keys is available on most devices" >> AndroidAppSettings.cfg
|
|
echo "# Use word NO_REMAP if you want to preserve native functionality for certain key (volume keys are 3-rd and 4-th)" >> AndroidAppSettings.cfg
|
|
echo "# Keys: TOUCHSCREEN (works only when AppUsesMouse=n), DPAD_CENTER/SEARCH, VOLUMEUP, VOLUMEDOWN, MENU, BACK, CAMERA" >> AndroidAppSettings.cfg
|
|
echo RedefinedKeys=\"$RedefinedKeys\" >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Number of virtual keyboard keys (currently 6 is maximum)" >> AndroidAppSettings.cfg
|
|
echo AppTouchscreenKeyboardKeysAmount=$AppTouchscreenKeyboardKeysAmount >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Redefine on-screen keyboard keys to SDL keysyms - 6 keyboard keys + 4 multitouch gestures (zoom in/out and rotate left/right)" >> AndroidAppSettings.cfg
|
|
echo RedefinedKeysScreenKb=\"$RedefinedKeysScreenKb\" >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Names for on-screen keyboard keys, such as Fire, Jump, Run etc, separated by spaces, they are used in SDL config menu" >> AndroidAppSettings.cfg
|
|
echo RedefinedKeysScreenKbNames=\"$RedefinedKeysScreenKbNames\" >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# On-screen keys theme" >> AndroidAppSettings.cfg
|
|
echo "# 0 = Ultimate Droid by Sean Stieber (green, with gamepad joystick)" >> AndroidAppSettings.cfg
|
|
echo "# 1 = Simple Theme by Beholder (white, with gamepad joystick)" >> AndroidAppSettings.cfg
|
|
echo "# 2 = Sun by Sirea (yellow, with round joystick)" >> AndroidAppSettings.cfg
|
|
echo "# 3 = Keen by Gerstrong (multicolor, with round joystick)" >> AndroidAppSettings.cfg
|
|
echo TouchscreenKeysTheme=$TouchscreenKeysTheme >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Redefine gamepad keys to SDL keysyms, button order is:" >> AndroidAppSettings.cfg
|
|
echo "# A B X Y L1 R1 L2 R2 LThumb RThumb" >> AndroidAppSettings.cfg
|
|
echo RedefinedKeysGamepad=\"$RedefinedKeysGamepad\" >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# How long to show startup menu button, in msec, 0 to disable startup menu" >> AndroidAppSettings.cfg
|
|
echo StartupMenuButtonTimeout=$StartupMenuButtonTimeout >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Menu items to hide from startup menu, available menu items:" >> AndroidAppSettings.cfg
|
|
echo "# $MenuOptionsAvailable" >> AndroidAppSettings.cfg
|
|
echo HiddenMenuOptions=\'$HiddenMenuOptions\' >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Menu items to show at startup - this is Java code snippet, leave empty for default" >> AndroidAppSettings.cfg
|
|
echo "# $FirstStartMenuOptionsDefault" >> AndroidAppSettings.cfg
|
|
echo "# Available menu items:" >> AndroidAppSettings.cfg
|
|
echo "# $MenuOptionsAvailable" >> AndroidAppSettings.cfg
|
|
echo FirstStartMenuOptions=\'$FirstStartMenuOptions\' >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Enable multi-ABI binary, with hardware FPU support - it will also work on old devices," >> AndroidAppSettings.cfg
|
|
echo "# but .apk size is 2x bigger (y) / (n) / (x86) / (all)" >> AndroidAppSettings.cfg
|
|
echo MultiABI=\'$MultiABI\' >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Minimum amount of RAM application requires, in Mb, SDL will print warning to user if it's lower" >> AndroidAppSettings.cfg
|
|
echo AppMinimumRAM=$AppMinimumRAM >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Optional shared libraries to compile - removing some of them will save space" >> AndroidAppSettings.cfg
|
|
echo "# MP3 support by libMAD is encumbered by patents and libMAD is GPL-ed" >> AndroidAppSettings.cfg
|
|
grep 'Available' project/jni/SettingsTemplate.mk >> AndroidAppSettings.cfg
|
|
echo CompiledLibraries=\"$CompiledLibraries\" >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Application uses custom build script AndroidBuild.sh instead of Android.mk (y) or (n)" >> AndroidAppSettings.cfg
|
|
echo CustomBuildScript=$CustomBuildScript >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Aditional CFLAGS for application" >> AndroidAppSettings.cfg
|
|
echo AppCflags=\'$AppCflags\' >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Additional LDFLAGS for application" >> AndroidAppSettings.cfg
|
|
echo AppLdflags=\'$AppLdflags\' >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# If application has headers with the same name as system headers, this option tries to fix compiler flags to make it compilable" >> AndroidAppSettings.cfg
|
|
echo AppOverlapsSystemHeaders=$AppOverlapsSystemHeaders >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Build only following subdirs (empty will build all dirs, ignored with custom script)" >> AndroidAppSettings.cfg
|
|
echo AppSubdirsBuild=\'$AppSubdirsBuild\' >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Exclude these files from build" >> AndroidAppSettings.cfg
|
|
echo AppBuildExclude=\'$AppBuildExclude\' >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Application command line parameters, including app name as 0-th param" >> AndroidAppSettings.cfg
|
|
echo AppCmdline=\'$AppCmdline\' >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Screen size is used by Google Play to prevent an app to be installed on devices with smaller screens" >> AndroidAppSettings.cfg
|
|
echo "# Minimum screen size that application supports: (s)mall / (m)edium / (l)arge" >> AndroidAppSettings.cfg
|
|
echo MinimumScreenSize=$MinimumScreenSize >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Your AdMob Publisher ID, (n) if you don't want advertisements" >> AndroidAppSettings.cfg
|
|
echo AdmobPublisherId=$AdmobPublisherId >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Your AdMob test device ID, to receive a test ad" >> AndroidAppSettings.cfg
|
|
echo AdmobTestDeviceId=$AdmobTestDeviceId >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
echo "# Your AdMob banner size (BANNER/IAB_BANNER/IAB_LEADERBOARD/IAB_MRECT/IAB_WIDE_SKYSCRAPER/SMART_BANNER)" >> AndroidAppSettings.cfg
|
|
echo AdmobBannerSize=$AdmobBannerSize >> AndroidAppSettings.cfg
|
|
echo >> AndroidAppSettings.cfg
|
|
fi
|
|
|
|
AppShortName=`echo $AppName | sed 's/ //g'`
|
|
DataPath="$AppFullName"
|
|
AppFullNameUnderscored=`echo $AppFullName | sed 's/[.]/_/g'`
|
|
AppSharedLibrariesPath=/data/data/$AppFullName/lib
|
|
ScreenOrientation1=userPortrait
|
|
HorizontalOrientation=false
|
|
|
|
UsingSdl13=false
|
|
if [ "$LibSdlVersion" = "1.3" ] ; then
|
|
UsingSdl13=true
|
|
fi
|
|
|
|
UsingSdl20=false
|
|
if [ "$LibSdlVersion" = "2.0" ] ; then
|
|
UsingSdl20=true
|
|
fi
|
|
|
|
if [ "$ScreenOrientation" = "h" -o "$ScreenOrientation" = "l" ] ; then
|
|
ScreenOrientation1=userLandscape
|
|
HorizontalOrientation=true
|
|
fi
|
|
|
|
AppDataDownloadUrl1="`echo $AppDataDownloadUrl | sed 's/[&]/%26/g'`"
|
|
|
|
if [ "$SdlVideoResize" = "y" ] ; then
|
|
SdlVideoResize=1
|
|
else
|
|
SdlVideoResize=0
|
|
fi
|
|
|
|
if [ "$SdlVideoResizeKeepAspect" = "y" ] ; then
|
|
SdlVideoResizeKeepAspect=true
|
|
else
|
|
SdlVideoResizeKeepAspect=false
|
|
fi
|
|
|
|
if [ "$InhibitSuspend" = "y" ] ; then
|
|
InhibitSuspend=true
|
|
else
|
|
InhibitSuspend=false
|
|
fi
|
|
|
|
if [ "$CreateService" = "y" ] ; then
|
|
CreateService=true
|
|
else
|
|
CreateService=false
|
|
fi
|
|
|
|
if [ "$NeedDepthBuffer" = "y" ] ; then
|
|
NeedDepthBuffer=true
|
|
else
|
|
NeedDepthBuffer=false
|
|
fi
|
|
|
|
if [ "$NeedStencilBuffer" = "y" ] ; then
|
|
NeedStencilBuffer=true
|
|
else
|
|
NeedStencilBuffer=false
|
|
fi
|
|
|
|
if [ "$NeedGles2" = "y" ] ; then
|
|
NeedGles2=true
|
|
else
|
|
NeedGles2=false
|
|
fi
|
|
|
|
if [ "$SwVideoMode" = "y" ] ; then
|
|
SwVideoMode=true
|
|
else
|
|
SwVideoMode=false
|
|
fi
|
|
|
|
if [ "$CompatibilityHacks" = "y" ] ; then
|
|
CompatibilityHacks=true
|
|
else
|
|
CompatibilityHacks=false
|
|
fi
|
|
|
|
if [ "$CompatibilityHacksStaticInit" = "y" ] ; then
|
|
CompatibilityHacksStaticInit=true
|
|
else
|
|
CompatibilityHacksStaticInit=false
|
|
fi
|
|
|
|
if [ "$CompatibilityHacksTextInputEmulatesHwKeyboard" = "y" ] ; then
|
|
CompatibilityHacksTextInputEmulatesHwKeyboard=true
|
|
else
|
|
CompatibilityHacksTextInputEmulatesHwKeyboard=false
|
|
fi
|
|
|
|
if [ "$CompatibilityHacksPreventAudioChopping" = "y" ] ; then
|
|
CompatibilityHacksPreventAudioChopping=-DSDL_AUDIO_PREVENT_CHOPPING_WITH_DELAY=1
|
|
else
|
|
CompatibilityHacksPreventAudioChopping=
|
|
fi
|
|
|
|
if [ "$CompatibilityHacksAppIgnoresAudioBufferSize" = "y" ] ; then
|
|
CompatibilityHacksAppIgnoresAudioBufferSize=-DSDL_AUDIO_APP_IGNORES_RETURNED_BUFFER_SIZE=1
|
|
else
|
|
CompatibilityHacksAppIgnoresAudioBufferSize=
|
|
fi
|
|
|
|
if [ "$CompatibilityHacksSlowCompatibleEventQueue" = "y" ]; then
|
|
CompatibilityHacksSlowCompatibleEventQueue=-DSDL_COMPATIBILITY_HACKS_SLOW_COMPATIBLE_EVENT_QUEUE=1
|
|
else
|
|
CompatibilityHacksSlowCompatibleEventQueue=
|
|
fi
|
|
|
|
if [ "$CompatibilityHacksTouchscreenKeyboardSaveRestoreOpenGLState" = "y" ]; then
|
|
CompatibilityHacksTouchscreenKeyboardSaveRestoreOpenGLState=-DSDL_TOUCHSCREEN_KEYBOARD_SAVE_RESTORE_OPENGL_STATE=1
|
|
else
|
|
CompatibilityHacksTouchscreenKeyboardSaveRestoreOpenGLState=
|
|
fi
|
|
|
|
if [ "$CompatibilityHacksProperUsageOfSDL_UpdateRects" = "y" ]; then
|
|
CompatibilityHacksProperUsageOfSDL_UpdateRects=-DSDL_COMPATIBILITY_HACKS_PROPER_USADE_OF_SDL_UPDATERECTS=1
|
|
else
|
|
CompatibilityHacksProperUsageOfSDL_UpdateRects=
|
|
fi
|
|
|
|
if [ "$AppUsesMouse" = "y" ] ; then
|
|
AppUsesMouse=true
|
|
else
|
|
AppUsesMouse=false
|
|
fi
|
|
|
|
if [ "$AppNeedsTwoButtonMouse" = "y" ] ; then
|
|
AppNeedsTwoButtonMouse=true
|
|
else
|
|
AppNeedsTwoButtonMouse=false
|
|
fi
|
|
|
|
if [ "$RightMouseButtonLongPress" = "n" ] ; then
|
|
RightMouseButtonLongPress=false
|
|
else
|
|
RightMouseButtonLongPress=true
|
|
fi
|
|
|
|
if [ "$ForceRelativeMouseMode" = "y" ] ; then
|
|
ForceRelativeMouseMode=true
|
|
else
|
|
ForceRelativeMouseMode=false
|
|
fi
|
|
|
|
if [ "$ShowMouseCursor" = "y" ] ; then
|
|
ShowMouseCursor=true
|
|
else
|
|
ShowMouseCursor=false
|
|
fi
|
|
|
|
if [ "$GenerateSubframeTouchEvents" = "y" ] ; then
|
|
GenerateSubframeTouchEvents=true
|
|
else
|
|
GenerateSubframeTouchEvents=false
|
|
fi
|
|
|
|
if [ "$AppNeedsArrowKeys" = "y" ] ; then
|
|
AppNeedsArrowKeys=true
|
|
else
|
|
AppNeedsArrowKeys=false
|
|
fi
|
|
|
|
if [ "$AppNeedsTextInput" = "y" ] ; then
|
|
AppNeedsTextInput=true
|
|
else
|
|
AppNeedsTextInput=false
|
|
fi
|
|
|
|
if [ "$AppUsesJoystick" = "y" ] ; then
|
|
AppUsesJoystick=true
|
|
else
|
|
AppUsesJoystick=false
|
|
fi
|
|
|
|
if [ "$AppUsesSecondJoystick" = "y" ] ; then
|
|
AppUsesSecondJoystick=true
|
|
else
|
|
AppUsesSecondJoystick=false
|
|
fi
|
|
|
|
if [ "$AppUsesThirdJoystick" = "y" ] ; then
|
|
AppUsesThirdJoystick=true
|
|
else
|
|
AppUsesThirdJoystick=false
|
|
fi
|
|
|
|
if [ "$AppUsesAccelerometer" = "y" ] ; then
|
|
AppUsesAccelerometer=true
|
|
else
|
|
AppUsesAccelerometer=false
|
|
fi
|
|
|
|
if [ "$AppUsesGyroscope" = "y" ] ; then
|
|
AppUsesGyroscope=true
|
|
else
|
|
AppUsesGyroscope=false
|
|
fi
|
|
|
|
if [ "$AppUsesMultitouch" = "y" ] ; then
|
|
AppUsesMultitouch=true
|
|
else
|
|
AppUsesMultitouch=false
|
|
fi
|
|
|
|
if [ "$NonBlockingSwapBuffers" = "y" ] ; then
|
|
NonBlockingSwapBuffers=true
|
|
else
|
|
NonBlockingSwapBuffers=false
|
|
fi
|
|
|
|
if [ "$ResetSdlConfigForThisVersion" = "y" ] ; then
|
|
ResetSdlConfigForThisVersion=true
|
|
else
|
|
ResetSdlConfigForThisVersion=false
|
|
fi
|
|
|
|
KEY2=0
|
|
for KEY in $RedefinedKeys; do
|
|
RedefinedKeycodes="$RedefinedKeycodes -DSDL_ANDROID_KEYCODE_$KEY2=$KEY"
|
|
KEY2=`expr $KEY2 '+' 1`
|
|
done
|
|
|
|
KEY2=0
|
|
for KEY in $RedefinedKeysScreenKb; do
|
|
RedefinedKeycodesScreenKb="$RedefinedKeycodesScreenKb -DSDL_ANDROID_SCREENKB_KEYCODE_$KEY2=$KEY"
|
|
KEY2=`expr $KEY2 '+' 1`
|
|
done
|
|
|
|
KEY2=0
|
|
for KEY in $RedefinedKeysGamepad; do
|
|
RedefinedKeycodesGamepad="$RedefinedKeycodesGamepad -DSDL_ANDROID_GAMEPAD_KEYCODE_$KEY2=$KEY"
|
|
KEY2=`expr $KEY2 '+' 1`
|
|
done
|
|
|
|
if [ "$MultiABI" = "y" ] ; then
|
|
MultiABI="armeabi armeabi-v7a"
|
|
elif [ "$MultiABI" = "n" ] ; then
|
|
MultiABI="armeabi"
|
|
else
|
|
MultiABI="$MultiABI" # Eh okay
|
|
fi
|
|
|
|
LibrariesToLoad="\\\"sdl_native_helpers\\\", \\\"sdl-$LibSdlVersion\\\""
|
|
StaticLibraries=`grep 'APP_AVAILABLE_STATIC_LIBS' project/jni/SettingsTemplate.mk | sed 's/.*=\(.*\)/\1/'`
|
|
for lib in $CompiledLibraries; do
|
|
process=true
|
|
for lib1 in $StaticLibraries; do
|
|
if [ "$lib" = "$lib1" ]; then process=false; fi
|
|
done
|
|
if $process; then
|
|
LibrariesToLoad="$LibrariesToLoad, \\\"$lib\\\""
|
|
fi
|
|
done
|
|
|
|
MainLibrariesToLoad=""
|
|
for lib in $CompatibilityHacksAdditionalPreloadedSharedLibraries; do
|
|
MainLibrariesToLoad="$MainLibrariesToLoad \\\"$lib\\\","
|
|
done
|
|
|
|
MainLibrariesToLoad="$MainLibrariesToLoad \\\"application\\\", \\\"sdl_main\\\""
|
|
|
|
|
|
if [ "$CustomBuildScript" = "n" ] ; then
|
|
CustomBuildScript=
|
|
fi
|
|
|
|
HiddenMenuOptions1=""
|
|
for F in $HiddenMenuOptions; do
|
|
HiddenMenuOptions1="$HiddenMenuOptions1 new $F(),"
|
|
done
|
|
|
|
FirstStartMenuOptions1=""
|
|
for F in $FirstStartMenuOptions; do
|
|
FirstStartMenuOptions1="$FirstStartMenuOptions1 new $F(),"
|
|
done
|
|
|
|
#if [ -z "$FirstStartMenuOptions" ]; then
|
|
# FirstStartMenuOptions="$FirstStartMenuOptionsDefault"
|
|
#fi
|
|
|
|
ReadmeText="`echo $ReadmeText | sed 's/\"/\\\\\\\\\"/g' | sed 's/[&%]//g'`"
|
|
|
|
|
|
SEDI="sed -i"
|
|
if uname -s | grep -i "darwin" > /dev/null ; then
|
|
SEDI="sed -i.killme.tmp" # MacOsX version of sed is buggy, and requires a mandatory parameter
|
|
fi
|
|
|
|
|
|
rm -rf project/src
|
|
mkdir -p project/src
|
|
cd $JAVA_SRC_PATH
|
|
for F in *.java; do
|
|
echo Patching $F
|
|
echo '// DO NOT EDIT THIS FILE - it is automatically generated, ALL YOUR CHANGES WILL BE OVERWRITTEN, edit the file under $JAVA_SRC_PATH dir' > ../src/$F
|
|
cat $F | sed "s/package .*;/package $AppFullName;/" >> ../src/$F # | sed 's@$@ // THIS FILE IS AUTO-GENERATED@' >>
|
|
done
|
|
|
|
if [ -e ../jni/application/src/java.diff ]; then patch -d ../src --no-backup-if-mismatch < ../jni/application/src/java.diff || exit 1 ; fi
|
|
if [ -e ../jni/application/src/java.patch ]; then patch -d ../src --no-backup-if-mismatch < ../jni/application/src/java.patch || exit 1 ; fi
|
|
|
|
cd ../..
|
|
|
|
# In case we use SDL2 let simlink the SDLActivity source file
|
|
if [ "$LibSdlVersion" = "2.0" ] ; then
|
|
ln -s ../jni/sdl-2.0/android-project/src/org/libsdl/app/SDLActivity.java project/src/SDLActivity.java
|
|
fi
|
|
|
|
|
|
echo Patching project/AndroidManifest.xml
|
|
cat project/AndroidManifestTemplate.xml | \
|
|
sed "s/package=.*/package=\"$AppFullName\"/" | \
|
|
sed "s/android:screenOrientation=.*/android:screenOrientation=\"$ScreenOrientation1\"/" | \
|
|
sed "s^android:versionCode=.*^android:versionCode=\"$AppVersionCode\"^" | \
|
|
sed "s^android:versionName=.*^android:versionName=\"$AppVersionName\"^" > \
|
|
project/AndroidManifest.xml
|
|
if [ "$AdmobPublisherId" = "n" -o -z "$AdmobPublisherId" ] ; then
|
|
$SEDI "/==ADMOB==/ d" project/AndroidManifest.xml
|
|
AdmobPublisherId=""
|
|
else
|
|
F=$JAVA_SRC_PATH/admob/Advertisement.java
|
|
echo Patching $F
|
|
echo '// DO NOT EDIT THIS FILE - it is automatically generated, edit file under $JAVA_SRC_PATH dir' > project/src/Advertisement.java
|
|
cat $F | sed "s/package .*;/package $AppFullName;/" >> project/src/Advertisement.java
|
|
fi
|
|
|
|
if [ "$AppRecordsAudio" = "n" -o -z "$AppRecordsAudio" ] ; then
|
|
$SEDI "/==RECORD_AUDIO==/ d" project/AndroidManifest.xml
|
|
fi
|
|
|
|
case "$MinimumScreenSize" in
|
|
n|m)
|
|
$SEDI "/==SCREEN-SIZE-SMALL==/ d" project/AndroidManifest.xml
|
|
$SEDI "/==SCREEN-SIZE-LARGE==/ d" project/AndroidManifest.xml
|
|
;;
|
|
l)
|
|
$SEDI "/==SCREEN-SIZE-SMALL==/ d" project/AndroidManifest.xml
|
|
$SEDI "/==SCREEN-SIZE-NORMAL==/ d" project/AndroidManifest.xml
|
|
;;
|
|
*)
|
|
$SEDI "/==SCREEN-SIZE-NORMAL==/ d" project/AndroidManifest.xml
|
|
$SEDI "/==SCREEN-SIZE-LARGE==/ d" project/AndroidManifest.xml
|
|
;;
|
|
esac
|
|
|
|
if [ "$AccessSdCard" = "n" ]; then
|
|
$SEDI "/==EXTERNAL_STORAGE==/ d" project/AndroidManifest.xml
|
|
fi
|
|
|
|
if [ "$AccessInternet" = "n" ]; then
|
|
$SEDI "/==INTERNET==/ d" project/AndroidManifest.xml
|
|
fi
|
|
|
|
if [ "$ImmersiveMode" = "n" ]; then
|
|
ImmersiveMode=false
|
|
else
|
|
ImmersiveMode=true
|
|
fi
|
|
|
|
echo Patching project/src/Globals.java
|
|
$SEDI "s/public static String ApplicationName = .*;/public static String ApplicationName = \"$AppShortName\";/" project/src/Globals.java
|
|
$SEDI "s/public static final boolean Using_SDL_1_3 = .*;/public static final boolean Using_SDL_1_3 = $UsingSdl13;/" project/src/Globals.java
|
|
|
|
$SEDI "s/public static final boolean Using_SDL_2_0 = .*;/public static final boolean Using_SDL_2_0 = $UsingSdl20;/" project/src/Globals.java
|
|
|
|
# Work around "Argument list too long" problem when compiling VICE
|
|
#$SEDI "s@public static String DataDownloadUrl = .*@public static String DataDownloadUrl = \"$AppDataDownloadUrl1\";@" project/src/Globals.java
|
|
$SEDI "s@public static String\[\] DataDownloadUrl = .*@public static String[] DataDownloadUrl = { ### };@" project/src/Globals.java
|
|
echo "$AppDataDownloadUrl1" | tr '^' '\n' | while read URL; do $SEDI "s@###@\"$URL\", ###@" project/src/Globals.java ; done
|
|
$SEDI "s@###@@" project/src/Globals.java
|
|
|
|
$SEDI "s/public static boolean SwVideoMode = .*;/public static boolean SwVideoMode = $SwVideoMode;/" project/src/Globals.java
|
|
$SEDI "s/public static int VideoDepthBpp = .*;/public static int VideoDepthBpp = $VideoDepthBpp;/" project/src/Globals.java
|
|
$SEDI "s/public static boolean NeedDepthBuffer = .*;/public static boolean NeedDepthBuffer = $NeedDepthBuffer;/" project/src/Globals.java
|
|
$SEDI "s/public static boolean NeedStencilBuffer = .*;/public static boolean NeedStencilBuffer = $NeedStencilBuffer;/" project/src/Globals.java
|
|
$SEDI "s/public static boolean NeedGles2 = .*;/public static boolean NeedGles2 = $NeedGles2;/" project/src/Globals.java
|
|
$SEDI "s/public static boolean CompatibilityHacksVideo = .*;/public static boolean CompatibilityHacksVideo = $CompatibilityHacks;/" project/src/Globals.java
|
|
$SEDI "s/public static boolean CompatibilityHacksStaticInit = .*;/public static boolean CompatibilityHacksStaticInit = $CompatibilityHacksStaticInit;/" project/src/Globals.java
|
|
$SEDI "s/public static boolean CompatibilityHacksTextInputEmulatesHwKeyboard = .*;/public static boolean CompatibilityHacksTextInputEmulatesHwKeyboard = $CompatibilityHacksTextInputEmulatesHwKeyboard;/" project/src/Globals.java
|
|
$SEDI "s/public static boolean HorizontalOrientation = .*;/public static boolean HorizontalOrientation = $HorizontalOrientation;/" project/src/Globals.java
|
|
$SEDI "s^public static boolean KeepAspectRatioDefaultSetting = .*^public static boolean KeepAspectRatioDefaultSetting = $SdlVideoResizeKeepAspect;^" project/src/Globals.java
|
|
$SEDI "s/public static boolean InhibitSuspend = .*;/public static boolean InhibitSuspend = $InhibitSuspend;/" project/src/Globals.java
|
|
$SEDI "s/public static boolean CreateService = .*;/public static boolean CreateService = $CreateService;/" project/src/Globals.java
|
|
$SEDI "s/public static boolean AppUsesMouse = .*;/public static boolean AppUsesMouse = $AppUsesMouse;/" project/src/Globals.java
|
|
$SEDI "s/public static boolean AppNeedsTwoButtonMouse = .*;/public static boolean AppNeedsTwoButtonMouse = $AppNeedsTwoButtonMouse;/" project/src/Globals.java
|
|
$SEDI "s/public static boolean RightMouseButtonLongPress = .*;/public static boolean RightMouseButtonLongPress = $RightMouseButtonLongPress;/" project/src/Globals.java
|
|
$SEDI "s/public static boolean ForceRelativeMouseMode = .*;/public static boolean ForceRelativeMouseMode = $ForceRelativeMouseMode;/" project/src/Globals.java
|
|
$SEDI "s/public static boolean ShowMouseCursor = .*;/public static boolean ShowMouseCursor = $ShowMouseCursor;/" project/src/Globals.java
|
|
$SEDI "s/public static boolean GenerateSubframeTouchEvents = .*;/public static boolean GenerateSubframeTouchEvents = $GenerateSubframeTouchEvents;/" project/src/Globals.java
|
|
$SEDI "s/public static boolean AppNeedsArrowKeys = .*;/public static boolean AppNeedsArrowKeys = $AppNeedsArrowKeys;/" project/src/Globals.java
|
|
$SEDI "s/public static boolean AppNeedsTextInput = .*;/public static boolean AppNeedsTextInput = $AppNeedsTextInput;/" project/src/Globals.java
|
|
$SEDI "s/public static boolean AppUsesJoystick = .*;/public static boolean AppUsesJoystick = $AppUsesJoystick;/" project/src/Globals.java
|
|
$SEDI "s/public static boolean AppUsesSecondJoystick = .*;/public static boolean AppUsesSecondJoystick = $AppUsesSecondJoystick;/" project/src/Globals.java
|
|
$SEDI "s/public static boolean AppUsesThirdJoystick = .*;/public static boolean AppUsesThirdJoystick = $AppUsesThirdJoystick;/" project/src/Globals.java
|
|
$SEDI "s/public static boolean AppUsesAccelerometer = .*;/public static boolean AppUsesAccelerometer = $AppUsesAccelerometer;/" project/src/Globals.java
|
|
$SEDI "s/public static boolean AppUsesGyroscope = .*;/public static boolean AppUsesGyroscope = $AppUsesGyroscope;/" project/src/Globals.java
|
|
$SEDI "s/public static boolean AppUsesMultitouch = .*;/public static boolean AppUsesMultitouch = $AppUsesMultitouch;/" project/src/Globals.java
|
|
$SEDI "s/public static boolean NonBlockingSwapBuffers = .*;/public static boolean NonBlockingSwapBuffers = $NonBlockingSwapBuffers;/" project/src/Globals.java
|
|
$SEDI "s/public static boolean ResetSdlConfigForThisVersion = .*;/public static boolean ResetSdlConfigForThisVersion = $ResetSdlConfigForThisVersion;/" project/src/Globals.java
|
|
$SEDI "s/public static boolean ImmersiveMode = .*;/public static boolean ImmersiveMode = $ImmersiveMode;/" project/src/Globals.java
|
|
$SEDI "s|public static String DeleteFilesOnUpgrade = .*;|public static String DeleteFilesOnUpgrade = \"$DeleteFilesOnUpgrade\";|" project/src/Globals.java
|
|
$SEDI "s/public static int AppTouchscreenKeyboardKeysAmount = .*;/public static int AppTouchscreenKeyboardKeysAmount = $AppTouchscreenKeyboardKeysAmount;/" project/src/Globals.java
|
|
$SEDI "s@public static String\\[\\] AppTouchscreenKeyboardKeysNames = .*;@public static String[] AppTouchscreenKeyboardKeysNames = \"$RedefinedKeysScreenKbNames\".split(\" \");@" project/src/Globals.java
|
|
$SEDI "s/public static int TouchscreenKeyboardTheme = .*;/public static int TouchscreenKeyboardTheme = $TouchscreenKeysTheme;/" project/src/Globals.java
|
|
$SEDI "s/public static int StartupMenuButtonTimeout = .*;/public static int StartupMenuButtonTimeout = $StartupMenuButtonTimeout;/" project/src/Globals.java
|
|
$SEDI "s/public static int AppMinimumRAM = .*;/public static int AppMinimumRAM = $AppMinimumRAM;/" project/src/Globals.java
|
|
$SEDI "s/public static SettingsMenu.Menu HiddenMenuOptions .*;/public static SettingsMenu.Menu HiddenMenuOptions [] = { $HiddenMenuOptions1 };/" project/src/Globals.java
|
|
[ -n "$FirstStartMenuOptions1" ] && $SEDI "s@public static SettingsMenu.Menu FirstStartMenuOptions .*;@public static SettingsMenu.Menu FirstStartMenuOptions [] = { $FirstStartMenuOptions1 };@" project/src/Globals.java
|
|
$SEDI "s%public static String ReadmeText = .*%public static String ReadmeText = \"$ReadmeText\";%" project/src/Globals.java
|
|
$SEDI "s%public static String CommandLine = .*%public static String CommandLine = \"$AppCmdline\";%" project/src/Globals.java
|
|
$SEDI "s%public static String AdmobPublisherId = .*%public static String AdmobPublisherId = \"$AdmobPublisherId\";%" project/src/Globals.java
|
|
$SEDI "s/public static String AdmobTestDeviceId = .*/public static String AdmobTestDeviceId = \"$AdmobTestDeviceId\";/" project/src/Globals.java
|
|
$SEDI "s/public static String AdmobBannerSize = .*/public static String AdmobBannerSize = \"$AdmobBannerSize\";/" project/src/Globals.java
|
|
$SEDI "s/public static String AppLibraries.*/public static String AppLibraries[] = { $LibrariesToLoad };/" project/src/Globals.java
|
|
$SEDI "s/public static String AppMainLibraries.*/public static String AppMainLibraries[] = { $MainLibrariesToLoad };/" project/src/Globals.java
|
|
|
|
|
|
echo Patching project/jni/Settings.mk
|
|
echo '# DO NOT EDIT THIS FILE - it is automatically generated, edit file SettingsTemplate.mk' > project/jni/Settings.mk
|
|
cat project/jni/SettingsTemplate.mk | \
|
|
sed "s/APP_MODULES := .*/APP_MODULES := application sdl-$LibSdlVersion sdl_main sdl_native_helpers jpeg png ogg flac vorbis freetype $CompiledLibraries/" | \
|
|
sed "s/APP_ABI := .*/APP_ABI := $MultiABI/" | \
|
|
sed "s/SDL_JAVA_PACKAGE_PATH := .*/SDL_JAVA_PACKAGE_PATH := $AppFullNameUnderscored/" | \
|
|
sed "s^SDL_CURDIR_PATH := .*^SDL_CURDIR_PATH := $DataPath^" | \
|
|
sed "s^SDL_VIDEO_RENDER_RESIZE := .*^SDL_VIDEO_RENDER_RESIZE := $SdlVideoResize^" | \
|
|
sed "s^COMPILED_LIBRARIES := .*^COMPILED_LIBRARIES := $CompiledLibraries^" | \
|
|
sed "s^APPLICATION_ADDITIONAL_CFLAGS :=.*^APPLICATION_ADDITIONAL_CFLAGS := $AppCflags^" | \
|
|
sed "s^APPLICATION_ADDITIONAL_LDFLAGS :=.*^APPLICATION_ADDITIONAL_LDFLAGS := $AppLdflags^" | \
|
|
sed "s^APPLICATION_OVERLAPS_SYSTEM_HEADERS :=.*^APPLICATION_OVERLAPS_SYSTEM_HEADERS := $AppOverlapsSystemHeaders^" | \
|
|
sed "s^SDL_ADDITIONAL_CFLAGS :=.*^SDL_ADDITIONAL_CFLAGS := \
|
|
$RedefinedKeycodes \
|
|
$RedefinedKeycodesScreenKb \
|
|
$RedefinedKeycodesGamepad \
|
|
$CompatibilityHacksPreventAudioChopping \
|
|
$CompatibilityHacksAppIgnoresAudioBufferSize \
|
|
$CompatibilityHacksSlowCompatibleEventQueue \
|
|
$CompatibilityHacksTouchscreenKeyboardSaveRestoreOpenGLState \
|
|
$CompatibilityHacksProperUsageOfSDL_UpdateRects^" | \
|
|
sed "s^APPLICATION_SUBDIRS_BUILD :=.*^APPLICATION_SUBDIRS_BUILD := $AppSubdirsBuild^" | \
|
|
sed "s^APPLICATION_BUILD_EXCLUDE :=.*^APPLICATION_BUILD_EXCLUDE := $AppBuildExclude^" | \
|
|
sed "s^APPLICATION_CUSTOM_BUILD_SCRIPT :=.*^APPLICATION_CUSTOM_BUILD_SCRIPT := $CustomBuildScript^" | \
|
|
sed "s^SDL_VERSION :=.*^SDL_VERSION := $LibSdlVersion^" >> \
|
|
project/jni/Settings.mk
|
|
|
|
echo Patching strings.xml
|
|
rm -rf project/res/values*
|
|
cd $JAVA_SRC_PATH/translations
|
|
for F in */strings.xml; do
|
|
mkdir -p ../../res/`dirname $F`
|
|
cat $F | \
|
|
sed "s^[<]string name=\"app_name\"[>].*^<string name=\"app_name\">$AppName</string>^" > \
|
|
../../res/$F
|
|
done
|
|
cd ../../..
|
|
|
|
echo Cleaning up dependencies
|
|
rm -rf project/libs/*/* project/gen
|
|
for OUT in obj; do
|
|
rm -rf project/$OUT/local/*/objs*/sdl_main/* project/$OUT/local/*/libsdl_main.so
|
|
rm -rf project/$OUT/local/*/libsdl-*.so
|
|
rm -rf project/$OUT/local/*/libsdl_*.so
|
|
rm -rf project/$OUT/local/*/objs*/sdl-*/src/*/android
|
|
rm -rf project/$OUT/local/*/objs*/sdl-*/src/video/SDL_video.o
|
|
rm -rf project/$OUT/local/*/objs*/sdl-*/SDL_renderer_gles.o
|
|
rm -rf project/$OUT/local/*/objs*/sdl_*
|
|
# Do not rebuild several huge libraries that do not depend on SDL version
|
|
for LIB in freetype intl jpeg png lua mad tremor xerces xml2 curl lua mikmod \
|
|
boost boost_signals boost_thread boost_filesystem boost_date_time boost_system boost_regex boost_iostreams boost_program_options \
|
|
ffmpeg swscale avcodec avdevice avresample avutil avfilter swresample avformat; do
|
|
for ARCH in armeabi armeabi-v7a; do
|
|
if [ -e "project/$OUT/local/$ARCH/objs*/$LIB" ] ; then
|
|
find project/$OUT/local/$ARCH/objs*/$LIB -name "*.o" | xargs touch -c
|
|
fi
|
|
done
|
|
done
|
|
done
|
|
rm -rf project/bin/classes
|
|
rm -rf project/bin/res
|
|
|
|
rm -rf project/res/drawable-xhdpi/ouya_icon.png project/res/drawable/app_icon.png
|
|
if which convert > /dev/null; then
|
|
mkdir -p project/res/drawable-xhdpi
|
|
convert project/res/drawable/icon.png -resize '732x412!' project/res/drawable-xhdpi/ouya_icon.png
|
|
convert project/res/drawable/icon.png -resize '96x96!' project/res/drawable/app_icon.png
|
|
else
|
|
echo "Install ImageMagick to auto-resize Ouya icon from icon.png"
|
|
fi
|
|
|
|
./copyAssets.sh || exit 1
|
|
|
|
if uname -s | grep -i "darwin" > /dev/null ; then
|
|
find project/src -name "*.killme.tmp" -delete
|
|
fi
|
|
|
|
echo Done
|