Updated ChangeAppSettings.sh - new option to change only version code

This commit is contained in:
pelya
2010-11-02 13:02:34 +02:00
parent 9e2d61c75b
commit 30eaeb4705
3 changed files with 68 additions and 14 deletions

View File

@@ -4,7 +4,10 @@ CHANGE_APP_SETTINGS_VERSION=12
AUTO=
if [ "X$1" = "X-a" ]; then
AUTO=1
AUTO=a
fi
if [ "X$1" = "X-v" ]; then
AUTO=v
fi
. ./AndroidAppSettings.cfg
@@ -15,34 +18,41 @@ fi
var=""
if [ -z "$AUTO" ]; then
echo -n "\n===== libSDL on Android configuration =====\n\nIf you will supply empty string as answer the previous value will be used\n"
if [ -z "$LibSdlVersion" -o -z "$AUTO" ]; then
echo -n "\nlibSDL version to use (1.2 or 1.3) ($LibSdlVersion): "
read var
if [ -n "$var" ] ; then
LibSdlVersion="$var"
fi
fi
if [ -z "$AppName" -o -z "$AUTO" ]; then
echo -n "\nSpecify application name (e.x. My Application) ($AppName): "
read var
if [ -n "$var" ] ; then
AppName="$var"
fi
fi
if [ -z "$AppFullName" -o -z "$AUTO" ]; then
echo -n "\nSpecify reversed site name of application (e.x. com.mysite.myapp) ($AppFullName): "
read var
if [ -n "$var" ] ; then
AppFullName="$var"
fi
fi
if [ -z "$ScreenOrientation" -o -z "$AUTO" ]; then
echo -n "\nSpecify screen orientation: (v)ertical or (h)orizontal ($ScreenOrientation): "
read var
if [ -n "$var" ] ; then
ScreenOrientation="$var"
fi
fi
if [ -z "$AppDataDownloadUrl" -o -z "$AUTO" ]; then
echo -n "\nSpecify path to download application data in zip archive in the form 'Description|URL|MirrorURL|...'"
echo -n "\nYou may specify additional paths to optional game content delimited by newlines (empty line to finish)"
echo -n "\nIf the URL in in the form ':dir/file.dat:http://URL/' it will be downloaded as-is to game dir and not unzipped"
@@ -65,56 +75,73 @@ done
if [ -n "$AppDataDownloadUrl1" ] ; then
AppDataDownloadUrl="$AppDataDownloadUrl1"
fi
fi
if [ -z "$SdlVideoResize" -o -z "$AUTO" ]; then
echo -n "\nApplication 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"
fi
fi
if [ -z "$SdlVideoResizeKeepAspect" -o -z "$AUTO" ]; then
echo -n "\nApplication resizing should use 4:3 aspect ratio, creating black bars (y) or (n) ($SdlVideoResizeKeepAspect): "
read var
if [ -n "$var" ] ; then
SdlVideoResizeKeepAspect="$var"
SdlVideoResizeKeepAspect="$var"
fi
fi
if [ -z "$NeedDepthBuffer" -o -z "$AUTO" ]; then
echo -n "\nEnable OpenGL depth buffer (needed only for 3-d applications, small speed decrease) (y) or (n) ($NeedDepthBuffer): "
read var
if [ -n "$var" ] ; then
NeedDepthBuffer="$var"
fi
fi
if [ -z "$AppUsesMouse" -o -z "$AUTO" ]; then
echo -n "\nApplication uses mouse, disables touchscreen keyboard currently (y) or (n) ($AppUsesMouse): "
read var
if [ -n "$var" ] ; then
AppUsesMouse="$var"
fi
fi
if [ -z "$AppNeedsArrowKeys" -o -z "$AUTO" ]; then
echo -n "\nApplication needs arrow keys (y) or (n), if (y) the accelerometer or touchscreen keyboard\nwill be used as arrow keys if phone does not have dpad/trackball ($AppNeedsArrowKeys): "
read var
if [ -n "$var" ] ; then
AppNeedsArrowKeys="$var"
fi
fi
if [ -z "$AppUsesJoystick" -o -z "$AUTO" ]; then
echo -n "\nApplication uses joystick (y) or (n), the accelerometer (2-axis) or orientation sensor (3-axis)\nwill be used as joystick 0, also on-screen DPAD will be used as joystick -\nmake sure you can navigate all app menus with joystick or mouse ($AppUsesJoystick): "
read var
if [ -n "$var" ] ; then
AppUsesJoystick="$var"
fi
fi
if [ -z "$AppHandlesJoystickSensitivity" -o -z "$AUTO" ]; then
echo -n "\nApplication will handle joystick center and sensitivity itself, \nSDL will send raw accelerometer data and won't show 'Accelerometer sensitivity' dialog (y) or (n) ($AppHandlesJoystickSensitivity): "
read var
if [ -n "$var" ] ; then
AppHandlesJoystickSensitivity="$var"
fi
fi
if [ -z "$AppUsesMultitouch" -o -z "$AUTO" ]; then
echo -n "\nApplication uses multitouch (y) or (n), multitouch events are passed as 4-axis joysticks 1-5, with pressure and size,\nor additionally as SDL_FINGERDOWN/UP/MOTION events in SDL 1.3, with SDL pressure = Android pressure * Andorid touchspot size ($AppUsesMultitouch): "
read var
if [ -n "$var" ] ; then
AppUsesMultitouch="$var"
fi
fi
if [ -z "$NonBlockingSwapBuffers" -o -z "$AUTO" ]; then
echo -n "\nApplication implements Android-specific routines to put to background, and will not draw anything to screen\n"
echo -n "between SDL_ACTIVEEVENT->SDL_APPACTIVE lost / gained notifications - you should check for them\n"
echo -n "rigth after SDL_Flip(), if (n) then SDL_Flip() will block till app in background (y) or (n) ($NonBlockingSwapBuffers): "
@@ -122,14 +149,17 @@ read var
if [ -n "$var" ] ; then
NonBlockingSwapBuffers="$var"
fi
fi
if [ -z "$InhibitSuspend" -o -z "$AUTO" ]; then
echo -n "\nPrevent device from going to sleep while application is running (y) or (n) - this setting is\napplied automatically if you're using accelerometer, but may be useful for video players etc ($InhibitSuspend): "
read var
if [ -n "$var" ] ; then
InhibitSuspend="$var"
InhibitSuspend="$var"
fi
fi
if [ -z "$RedefinedKeys" -o -z "$AUTO" ]; then
echo -n "\nRedefine common keys to SDL keysyms: TOUCHSCREEN SEARCH/CALL/DPAD_CENTER VOLUMEUP VOLUMEDOWN MENU BACK CAMERA ENTER DEL"
echo -n "\nMENU and BACK hardware keys and TOUCHSCREEN virtual 'key' are available on all devices, other keys may be absent"
echo -n "\nThe same key values are used if touchscreen keyboard is enabled, except for MENU and BACK\n($RedefinedKeys)\n: "
@@ -137,49 +167,65 @@ read var
if [ -n "$var" ] ; then
RedefinedKeys="$var"
fi
fi
if [ -z "$AppTouchscreenKeyboardKeysAmount" -o -z "$AUTO" ]; then
echo -n "\nNumber of virtual keyboard keys (currently 7 is maximum) ($AppTouchscreenKeyboardKeysAmount): "
read var
if [ -n "$var" ] ; then
AppTouchscreenKeyboardKeysAmount="$var"
fi
fi
if [ -z "$AppTouchscreenKeyboardKeysAmountAutoFire" -o -z "$AUTO" ]; then
echo -n "\nNumber of virtual keyboard keys that support autofire (currently 2 is maximum) ($AppTouchscreenKeyboardKeysAmountAutoFire): "
read var
if [ -n "$var" ] ; then
AppTouchscreenKeyboardKeysAmountAutoFire="$var"
fi
fi
if [ -z "$MultiABI" -o -z "$AUTO" ]; then
echo -n "\nEnable multi-ABI binary, with hardware FPU support - \nit will also work on old devices, but .apk size is 2x bigger (y) or (n) ($MultiABI): "
read var
if [ -n "$var" ] ; then
MultiABI="$var"
fi
fi
if [ -z "$AppVersionCode" -o "-$AUTO" != "-a" ]; then
echo -n "\nApplication version code (integer) ($AppVersionCode): "
read var
if [ -n "$var" ] ; then
AppVersionCode="$var"
fi
fi
if [ -z "$AppVersionName" -o "-$AUTO" != "-a" ]; then
echo -n "\nApplication user-visible version name (string) ($AppVersionName): "
read var
if [ -n "$var" ] ; then
AppVersionName="$var"
fi
fi
if [ -z "$CustomBuildScript" -o -z "$AUTO" ]; then
echo -n "\nApplication uses custom build script AndroidBuild.sh instead of Android.mk (y) or (n) ($CustomBuildScript): "
read var
if [ -n "$var" ] ; then
CustomBuildScript="$var"
fi
fi
if [ -z "$AUTO" ]; then
echo -n "\nAditional CFLAGS for application ($AppCflags): "
read var
if [ -n "$var" ] ; then
AppCflags="$var"
fi
fi
if [ -z "$AUTO" ]; then
echo -n "\nOptional shared libraries to compile - removing some of them will save space\nMP3 support by libMAD is encumbered by patents and libMAD is GPL-ed\n"
grep 'Available' project/jni/SettingsTemplate.mk
grep 'depends on' project/jni/SettingsTemplate.mk
@@ -188,26 +234,34 @@ read var
if [ -n "$var" ] ; then
CompiledLibraries="$var"
fi
fi
if [ -z "$AUTO" ]; then
echo -n "\nAditional LDFLAGS for application ($AppLdflags): "
read var
if [ -n "$var" ] ; then
AppLdflags="$var"
fi
fi
if [ -z "$AUTO" ]; then
echo -n "\nBuild only following subdirs (empty will build all dirs, ignored with custom script) ($AppSubdirsBuild): "
read var
if [ -n "$var" ] ; then
AppSubdirsBuild="$var"
fi
fi
if [ -z "$AppUseCrystaXToolchain" -o -z "$AUTO" ]; then
echo -n "\nApplication requires C++ RTTI and exceptions - you will need CrystaX toolchain installed at\n"
echo -n `which ndk-build | sed 's@/[^/]*/ndk-build@/android-ndk-r4-crystax@'` "(y) or (n) ($AppUseCrystaXToolchain): "
read var
if [ -n "$var" ] ; then
AppUseCrystaXToolchain="$var"
fi
fi
if [ -z "$ReadmeText" -o -z "$AUTO" ]; then
echo -n "\nHere you may type some short readme text that will be shown when app data is downloaded."
echo -n "\nCurrent text:\n"
echo -n "`echo $ReadmeText | tr '^' '\\n'`"
@@ -225,8 +279,7 @@ done
if [ -n "$ReadmeText1" ] ; then
ReadmeText="$ReadmeText1"
fi
fi # AUTO
fi
echo

View File

@@ -21,7 +21,7 @@ for APP1 in project/jni/application/*/AndroidAppSettings.cfg; do
ln -s $APP project/jni/application/src
echo
echo ===== Settings for $APP =====
./ChangeAppSettings.sh
./ChangeAppSettings.sh -v
rm -f $APP.apk
done

View File

@@ -105,13 +105,14 @@ then
(the second one should be relative link without slashes)
Then launch script ChangeAppSettings.sh - it will ask few questions and modify some Java code.
You may take AndroidAppSettings.cfg file from some other application to get some sane defaults.
You may take AndroidAppSettings.cfg file from some other application to get some sane defaults,
you may launch ChangeAppSettings.sh with -a or -v parameter to skip questions altogether or to ask only version code.
The C++ files shall have .cpp extension to be compiled, rename them if necessary.
Also you can replace icon image at project/res/drawable/icon.png and image project/res/drawable/publisherlogo.png.
Then you can launch build.sh.
The NDK has RTTI and exceptions disabled for C++ code, if you need them you may download modified NDK from
http://www.crystax.net/android/ndk-r4.php
http://www.crystax.net/android/ndk-r4.php - note however that you cannot throw exceptions across shared library boundary.
Unzip it, and put in your PATH instead of original NDK - do not rename the target dir, my makefiles will
check if there's "crystax" string in path to gcc toolchain, and will disable STLPort because CrystaX's
NDK already contains STL library.
@@ -136,7 +137,7 @@ you may wish to check your code in Android 1.6 emulator from time to time to cat
char * p = 0x13; // Non-4 byte aligned pointer
int i = (int *) p; // We have garbage inside i now
memcpy( &i, p, sizof(int) ); // The correct way to dereference a non-aligned pointer
memcpy( &i, p, sizeof(int) ); // The correct way to dereference a non-aligned pointer
This compiler flags will catch most obvious errors, you may add them to AppCflags var in settings:
-Werror=strict-aliasing -Werror=cast-align -Werror=pointer-arith -Werror=address
@@ -155,7 +156,7 @@ though ./configure scripts tend to have stupid bugs in various places, avoid usi
5. Watch how ./configure configures, if it fails fix launchConfigure.sh, rinse and repeat.
6. Launch make, and pray. If you're lucky it will create application binary (lbreakout2-2.6.1/client/lbreakout2)
7. Move the application binary to dir project/libs/armeabi, rename it to libapplication.so (overwrite old file)
8. Run command "arm-eabi-strip --strip-debug libapplication.so", you can find arm-eabi-strip under your NDK dir.
8. Run command "arm-eabi-strip -g libapplication.so", you can find arm-eabi-strip under your NDK dir.
9. Run "ant debug" or "ant release" from project dir, install to device & enjoy.
Android Application lifecycle support