forked from albertz/commandergenius
/
ChangeAppSettings.sh
executable file
·614 lines (542 loc) · 21.8 KB
/
ChangeAppSettings.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
#!/bin/sh
CHANGE_APP_SETTINGS_VERSION=17
AUTO=
if [ "X$1" = "X-a" ]; then
AUTO=a
fi
if [ "X$1" = "X-v" ]; then
AUTO=v
fi
. ./AndroidAppSettings.cfg
#if [ "$CHANGE_APP_SETTINGS_VERSION" != "$AppSettingVersion" ]; then
# AUTO=
#fi
var=""
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 additional downloads delimited by newlines (empty line to finish)"
echo -n "\nIf you'll start Description with '!' symbol it will be enabled by default,\nother downloads should be selected by user from config menu"
echo -n "\nIf 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 -n "\nIf the URL does not contain 'http://' it is treated as file from 'project/jni/application/src/AndroidData' dir -\nthese files are put inside .apk package by build system\n"
echo -n "\nAlso beware of 'https://' URLs, many Android devices do not have trust certificates and will fail to connect to SF.net over HTTPS\n"
echo -n "`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"
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"
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 [ "$LibSdlVersion" = "1.2" ]; then
if [ -z "$SwVideoMode" -o -z "$AUTO" ]; then
echo -n "\nApplication uses software video buffer - you're calling SDL_SetVideoMode() without SDL_HWSURFACE and without SDL_OPENGL,\nthis will allow small speed optimization (y) or (n) ($SwVideoMode): "
read var
if [ -n "$var" ] ; then
SwVideoMode="$var"
fi
fi
else
SwVideoMode=n
fi
if [ -z "$AppUsesMouse" -o -z "$AUTO" ]; then
echo -n "\nApplication uses mouse (y) or (n) ($AppUsesMouse): "
read var
if [ -n "$var" ] ; then
AppUsesMouse="$var"
fi
fi
if [ -z "$AppNeedsTwoButtonMouse" -o -z "$AUTO" ]; then
echo -n "\nApplication needs two-button mouse, will also enable advanced point-and-click features (y) or (n) ($AppNeedsTwoButtonMouse): "
read var
if [ -n "$var" ] ; then
AppNeedsTwoButtonMouse="$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 "$AppNeedsTextInput" -o -z "$AUTO" ]; then
echo -n "\nApplication needs text input (y) or (n), enables button for text input on screen ($AppNeedsTextInput): "
read var
if [ -n "$var" ] ; then
AppNeedsTextInput="$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): "
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"
fi
fi
if [ -z "$RedefinedKeys" -o -z "$AUTO" ]; then
echo -n "\nRedefine common keys to SDL keysyms"
echo -n "\nMENU and BACK hardware keys and TOUCHSCREEN virtual 'key' are available on all devices, other keys may be absent"
echo -n "\nSEARCH and CALL by default return same keycode as DPAD_CENTER - one of those keys is available on most devices"
echo -n "\nTOUCHSCREEN DPAD_CENTER VOLUMEUP VOLUMEDOWN MENU BACK CAMERA ENTER DEL SEARCH CALL - Java keycodes"
echo -n "\n$RedefinedKeys - current SDL keycodes"
echo -n "\n: "
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 "$RedefinedKeysScreenKb" -o -z "$AUTO" ]; then
if [ -z "$RedefinedKeysScreenKb" ]; then
RedefinedKeysScreenKb="$RedefinedKeys"
fi
echo -n "\nRedefine on-screen keyboard keys to SDL keysyms - 6 keyboard keys + 4 multitouch gestures (zoom in/out and rotate left/right)"
echo -n "\n$RedefinedKeysScreenKb - current SDL keycodes"
echo -n "\n: "
read var
if [ -n "$var" ] ; then
RedefinedKeysScreenKb="$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
echo -n "Current: $CompiledLibraries\n\n: "
read var
if [ -n "$var" ] ; then
CompiledLibraries="$var"
fi
fi
if [ -z "$AUTO" ]; then
echo -n "\nAdditional 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 "$AUTO" ]; then
echo -n "\nApplication command line parameters, including app name as 0-th param ($AppCmdline): "
read var
if [ -n "$var" ] ; then
AppCmdline="$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'`"
echo -n "\n\nNew text (empty line to finish):\n\n"
ReadmeText1=""
while true; do
read var
if [ -n "$var" ] ; then
ReadmeText1="$ReadmeText1^$var"
else
break
fi
done
if [ -n "$ReadmeText1" ] ; then
ReadmeText="$ReadmeText1"
fi
fi
echo
cat /dev/null > AndroidAppSettings.cfg
echo "# The application settings for Android libSDL port" >> AndroidAppSettings.cfg
echo AppSettingVersion=$CHANGE_APP_SETTINGS_VERSION >> AndroidAppSettings.cfg
echo LibSdlVersion=$LibSdlVersion >> AndroidAppSettings.cfg
echo AppName=\"$AppName\" >> AndroidAppSettings.cfg
echo AppFullName=$AppFullName >> AndroidAppSettings.cfg
echo ScreenOrientation=$ScreenOrientation >> AndroidAppSettings.cfg
echo InhibitSuspend=$InhibitSuspend >> AndroidAppSettings.cfg
echo AppDataDownloadUrl=\"$AppDataDownloadUrl\" >> AndroidAppSettings.cfg
echo SdlVideoResize=$SdlVideoResize >> AndroidAppSettings.cfg
echo SdlVideoResizeKeepAspect=$SdlVideoResizeKeepAspect >> AndroidAppSettings.cfg
echo NeedDepthBuffer=$NeedDepthBuffer >> AndroidAppSettings.cfg
echo SwVideoMode=$SwVideoMode >> AndroidAppSettings.cfg
echo AppUsesMouse=$AppUsesMouse >> AndroidAppSettings.cfg
echo AppNeedsTwoButtonMouse=$AppNeedsTwoButtonMouse >> AndroidAppSettings.cfg
echo AppNeedsArrowKeys=$AppNeedsArrowKeys >> AndroidAppSettings.cfg
echo AppNeedsTextInput=$AppNeedsTextInput >> AndroidAppSettings.cfg
echo AppUsesJoystick=$AppUsesJoystick >> AndroidAppSettings.cfg
echo AppHandlesJoystickSensitivity=$AppHandlesJoystickSensitivity >> AndroidAppSettings.cfg
echo AppUsesMultitouch=$AppUsesMultitouch >> AndroidAppSettings.cfg
echo NonBlockingSwapBuffers=$NonBlockingSwapBuffers >> AndroidAppSettings.cfg
echo RedefinedKeys=\"$RedefinedKeys\" >> AndroidAppSettings.cfg
echo AppTouchscreenKeyboardKeysAmount=$AppTouchscreenKeyboardKeysAmount >> AndroidAppSettings.cfg
echo AppTouchscreenKeyboardKeysAmountAutoFire=$AppTouchscreenKeyboardKeysAmountAutoFire >> AndroidAppSettings.cfg
echo RedefinedKeysScreenKb=\"$RedefinedKeysScreenKb\" >> AndroidAppSettings.cfg
echo MultiABI=$MultiABI >> AndroidAppSettings.cfg
echo AppVersionCode=$AppVersionCode >> AndroidAppSettings.cfg
echo AppVersionName=\"$AppVersionName\" >> AndroidAppSettings.cfg
echo CompiledLibraries=\"$CompiledLibraries\" >> AndroidAppSettings.cfg
echo CustomBuildScript=$CustomBuildScript >> AndroidAppSettings.cfg
echo AppCflags=\'$AppCflags\' >> AndroidAppSettings.cfg
echo AppLdflags=\'$AppLdflags\' >> AndroidAppSettings.cfg
echo AppSubdirsBuild=\'$AppSubdirsBuild\' >> AndroidAppSettings.cfg
echo AppUseCrystaXToolchain=$AppUseCrystaXToolchain >> AndroidAppSettings.cfg
echo AppCmdline=\'$AppCmdline\' >> AndroidAppSettings.cfg
echo ReadmeText=\'$ReadmeText\' >> AndroidAppSettings.cfg
AppShortName=`echo $AppName | sed 's/ //g'`
DataPath="$AppFullName"
AppFullNameUnderscored=`echo $AppFullName | sed 's/[.]/_/g'`
AppSharedLibrariesPath=/data/data/$AppFullName/lib
ScreenOrientation1=portrait
HorizontalOrientation=false
UsingSdl13=false
if [ "$LibSdlVersion" = "1.3" ] ; then
UsingSdl13=true
fi
if [ "$ScreenOrientation" = "h" ] ; then
ScreenOrientation1=landscape
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=1
else
SdlVideoResizeKeepAspect=0
fi
if [ "$InhibitSuspend" = "y" ] ; then
InhibitSuspend=true
else
InhibitSuspend=false
fi
if [ "$NeedDepthBuffer" = "y" ] ; then
NeedDepthBuffer=true
else
NeedDepthBuffer=false
fi
if [ "$SwVideoMode" = "y" ] ; then
SwVideoMode=true
else
SwVideoMode=false
fi
if [ "$AppUsesMouse" = "y" ] ; then
AppUsesMouse=true
else
AppUsesMouse=false
fi
if [ "$AppNeedsTwoButtonMouse" = "y" ] ; then
AppNeedsTwoButtonMouse=true
else
AppNeedsTwoButtonMouse=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 [ "$AppHandlesJoystickSensitivity" = "y" ] ; then
AppHandlesJoystickSensitivity=true
else
AppHandlesJoystickSensitivity=false
fi
if [ "$AppUsesMultitouch" = "y" ] ; then
AppUsesMultitouch=true
else
AppUsesMultitouch=false
fi
if [ "$NonBlockingSwapBuffers" = "y" ] ; then
NonBlockingSwapBuffers=true
else
NonBlockingSwapBuffers=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
if [ "$MultiABI" = "y" ] ; then
MultiABI="armeabi armeabi-v7a"
else
MultiABI="armeabi"
fi
LibrariesToLoad="\\\"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
if [ "$CustomBuildScript" = "n" ] ; then
CustomBuildScript=
fi
ReadmeText="`echo $ReadmeText | sed 's/\"/\\\\\\\\\"/g' | sed 's/[&%]//g'`"
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
rm -rf project/src
mkdir -p project/src
cd project/java
for F in *.java; do
echo Patching $F
echo '// DO NOT EDIT THIS FILE - it is automatically generated, edit file under project/java dir' > ../src/$F
cat $F | sed "s/package .*;/package $AppFullName;/" >> ../src/$F
done
cd ../..
echo Patching project/src/Globals.java
cat project/src/Globals.java | \
sed "s/public static String ApplicationName = .*;/public static String ApplicationName = \"$AppShortName\";/" | \
sed "s/public static final boolean Using_SDL_1_3 = .*;/public static final boolean Using_SDL_1_3 = $UsingSdl13;/" | \
sed "s@public static String DataDownloadUrl = .*@public static String DataDownloadUrl = \"$AppDataDownloadUrl1\";@" | \
sed "s/public static boolean NeedDepthBuffer = .*;/public static boolean NeedDepthBuffer = $NeedDepthBuffer;/" | \
sed "s/public static boolean SwVideoMode = .*;/public static boolean SwVideoMode = $SwVideoMode;/" | \
sed "s/public static boolean HorizontalOrientation = .*;/public static boolean HorizontalOrientation = $HorizontalOrientation;/" | \
sed "s/public static boolean InhibitSuspend = .*;/public static boolean InhibitSuspend = $InhibitSuspend;/" | \
sed "s/public static boolean AppUsesMouse = .*;/public static boolean AppUsesMouse = $AppUsesMouse;/" | \
sed "s/public static boolean AppNeedsTwoButtonMouse = .*;/public static boolean AppNeedsTwoButtonMouse = $AppNeedsTwoButtonMouse;/" | \
sed "s/public static boolean AppNeedsArrowKeys = .*;/public static boolean AppNeedsArrowKeys = $AppNeedsArrowKeys;/" | \
sed "s/public static boolean AppNeedsTextInput = .*;/public static boolean AppNeedsTextInput = $AppNeedsTextInput;/" | \
sed "s/public static boolean AppUsesJoystick = .*;/public static boolean AppUsesJoystick = $AppUsesJoystick;/" | \
sed "s/public static boolean AppHandlesJoystickSensitivity = .*;/public static boolean AppHandlesJoystickSensitivity = $AppHandlesJoystickSensitivity;/" | \
sed "s/public static boolean AppUsesMultitouch = .*;/public static boolean AppUsesMultitouch = $AppUsesMultitouch;/" | \
sed "s/public static boolean NonBlockingSwapBuffers = .*;/public static boolean NonBlockingSwapBuffers = $NonBlockingSwapBuffers;/" | \
sed "s/public static int AppTouchscreenKeyboardKeysAmount = .*;/public static int AppTouchscreenKeyboardKeysAmount = $AppTouchscreenKeyboardKeysAmount;/" | \
sed "s/public static int AppTouchscreenKeyboardKeysAmountAutoFire = .*;/public static int AppTouchscreenKeyboardKeysAmountAutoFire = $AppTouchscreenKeyboardKeysAmountAutoFire;/" | \
sed "s%public static String ReadmeText = .*%public static String ReadmeText = \"$ReadmeText\".replace(\"^\",\"\\\n\");%" | \
sed "s%public static String CommandLine = .*%public static String CommandLine = \"$AppCmdline\";%" | \
sed "s/public static String AppLibraries.*/public static String AppLibraries[] = { $LibrariesToLoad };/" > \
project/src/Globals.java.1
mv -f project/src/Globals.java.1 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 stlport jpeg png ogg flac vorbis freetype sdl_fake_stdout $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^SDL_VIDEO_RENDER_RESIZE_KEEP_ASPECT := .*^SDL_VIDEO_RENDER_RESIZE_KEEP_ASPECT := $SdlVideoResizeKeepAspect^" | \
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^SDL_ADDITIONAL_CFLAGS :=.*^SDL_ADDITIONAL_CFLAGS := $RedefinedKeycodes $RedefinedKeycodesScreenKb^" | \
sed "s^APPLICATION_SUBDIRS_BUILD :=.*^APPLICATION_SUBDIRS_BUILD := $AppSubdirsBuild^" | \
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 project/java/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/*
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/*/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/*/libsdl_fake_stdout.a project/$OUT/local/*/objs/sdl_fake_stdout/*
# Do not rebuild several huge libraries that do not depend on SDL version
for LIB in freetype intl jpeg png lua mad stlport tremor xerces xml2; 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
mkdir -p project/assets
rm -f project/assets/*
if [ -d "project/jni/application/src/AndroidData" ] ; then
echo Copying asset files
for F in project/jni/application/src/AndroidData/*; do
if [ `cat $F | wc -c` -gt 1048576 ] ; then
echo "Error: the file $F is bigger than 1048576 bytes - some Android devices will fail to extract such file\nPlease split your data into several small files, or use HTTP download method"
exit 1
fi
done
cp project/jni/application/src/AndroidData/* project/assets/
fi
echo Done