diff --git a/build.sh b/build.sh index 42f371830..1bc762ce3 100755 --- a/build.sh +++ b/build.sh @@ -142,6 +142,9 @@ strip_libs() { return 0 } +# Fix Gradle compilation error +[ -z "$ANDROID_NDK_HOME" ] && export ANDROID_NDK_HOME="`which ndk-build | sed 's@/ndk-build@@'`" + cd project && env PATH=$NDKBUILDPATH BUILD_NUM_CPUS=$NCPU ndk-build -j$NCPU V=1 $QUICK_REBUILD_ARGS && \ strip_libs && \ cd .. && ./copyAssets.sh && cd project && \ diff --git a/project/AndroidManifestTemplate.xml b/project/AndroidManifestTemplate.xml index 225970e3b..bf94d6f7f 100644 --- a/project/AndroidManifestTemplate.xml +++ b/project/AndroidManifestTemplate.xml @@ -60,9 +60,6 @@ /> - - - diff --git a/project/app/build-template.gradle b/project/app/build-template.gradle index 2953ce993..0a071b1f3 100644 --- a/project/app/build-template.gradle +++ b/project/app/build-template.gradle @@ -2,6 +2,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 29 + buildToolsVersion "29.0.3" defaultConfig { applicationId "net.olofson.ballfield" @@ -12,11 +13,11 @@ android { buildTypes { release { minifyEnabled true - proguardFiles getDefaultProguardFile('proguard-android.txt'), '../proguard-local.cfg', '../proguard.cfg' + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), '../proguard-local.cfg', '../proguard.cfg' } } - dependencies { compile 'com.google.android.gms:play-services-games:11.4.0' } // ==GOOGLEPLAYGAMESERVICES== - dependencies { compile 'com.google.android.gms:play-services-drive:11.4.0' } // ==GOOGLEPLAYGAMESERVICES== + dependencies { compile 'com.google.android.gms:play-services-games:19.0.0' } // ==GOOGLEPLAYGAMESERVICES== + dependencies { compile 'com.google.android.gms:play-services-drive:17.0.0' } // ==GOOGLEPLAYGAMESERVICES== } diff --git a/project/build.gradle b/project/build.gradle index cc37952b0..24bb03929 100644 --- a/project/build.gradle +++ b/project/build.gradle @@ -5,9 +5,10 @@ buildscript { repositories { google() jcenter() + } dependencies { - classpath 'com.android.tools.build:gradle:3.2.1' + classpath 'com.android.tools.build:gradle:3.6.2' // NOTE: Do not place your application dependencies here; they belong @@ -19,6 +20,7 @@ allprojects { repositories { google() jcenter() + } } diff --git a/project/gradle.properties b/project/gradle.properties new file mode 100644 index 000000000..199d16ede --- /dev/null +++ b/project/gradle.properties @@ -0,0 +1,20 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx1536m +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Automatically convert third-party libraries to use AndroidX +android.enableJetifier=true + diff --git a/project/gradle/wrapper/gradle-wrapper.properties b/project/gradle/wrapper/gradle-wrapper.properties index 558870dad..30b240978 100644 --- a/project/gradle/wrapper/gradle-wrapper.properties +++ b/project/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ +#Thu Apr 16 21:28:37 EEST 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip diff --git a/project/java/googleplaygameservices/CloudSave.java b/project/java/googleplaygameservices/CloudSave.java index 5983c8d55..abad8f065 100644 --- a/project/java/googleplaygameservices/CloudSave.java +++ b/project/java/googleplaygameservices/CloudSave.java @@ -364,10 +364,6 @@ public class CloudSave implements GameHelper.GameHelperListener { mHelper.enableDebugLog(enabled); } - public String getInvitationId() { - return mHelper.getInvitationId(); - } - public void reconnectClient() { mHelper.reconnectClient(); } diff --git a/project/java/googleplaygameservices/GameHelper.java b/project/java/googleplaygameservices/GameHelper.java index ce25b114f..d56c97808 100644 --- a/project/java/googleplaygameservices/GameHelper.java +++ b/project/java/googleplaygameservices/GameHelper.java @@ -37,12 +37,6 @@ import com.google.android.gms.drive.Drive; import com.google.android.gms.games.Games; import com.google.android.gms.games.Games.GamesOptions; import com.google.android.gms.games.GamesActivityResultCodes; -import com.google.android.gms.games.multiplayer.Invitation; -import com.google.android.gms.games.multiplayer.Multiplayer; -import com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatch; -import com.google.android.gms.games.request.GameRequest; -//import com.google.android.gms.plus.Plus; -//import com.google.android.gms.plus.Plus.PlusOptions; public class GameHelper implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { @@ -121,11 +115,9 @@ public class GameHelper implements GoogleApiClient.ConnectionCallbacks, // Client request flags public final static int CLIENT_NONE = 0x00; public final static int CLIENT_GAMES = 0x01; - //public final static int CLIENT_PLUS = 0x02; public final static int CLIENT_APPSTATE = 0x04; public final static int CLIENT_SNAPSHOT = 0x05; - public final static int CLIENT_ALL = CLIENT_GAMES //| CLIENT_PLUS - | CLIENT_APPSTATE | CLIENT_SNAPSHOT; + public final static int CLIENT_ALL = CLIENT_GAMES | CLIENT_APPSTATE | CLIENT_SNAPSHOT; // What clients were requested? (bit flags) int mRequestedClients = CLIENT_NONE; @@ -157,24 +149,6 @@ public class GameHelper implements GoogleApiClient.ConnectionCallbacks, Handler mHandler; - /* - * If we got an invitation when we connected to the games client, it's here. - * Otherwise, it's null. - */ - Invitation mInvitation; - - /* - * If we got turn-based match when we connected to the games client, it's - * here. Otherwise, it's null. - */ - TurnBasedMatch mTurnBasedMatch; - - /* - * If we have incoming requests when we connected to the games client, they - * are here. Otherwise, it's null. - */ - ArrayList mRequests; - // Listener GameHelperListener mListener = null; @@ -414,101 +388,6 @@ public class GameHelper implements GoogleApiClient.ConnectionCallbacks, mActivity = null; } - /** - * Returns the invitation ID received through an invitation notification. - * This should be called from your GameHelperListener's - * - * @link{GameHelperListener#onSignInSucceeded method, to check if there's an - * invitation available. In that - * case, accept the invitation. - * @return The id of the invitation, or null if none was received. - */ - public String getInvitationId() { - if (!mGoogleApiClient.isConnected()) { - Log.w(TAG, - "Warning: getInvitationId() should only be called when signed in, " - + "that is, after getting onSignInSuceeded()"); - } - return mInvitation == null ? null : mInvitation.getInvitationId(); - } - - /** - * Returns the invitation received through an invitation notification. This - * should be called from your GameHelperListener's - * - * @link{GameHelperListener#onSignInSucceeded method, to check if there's an - * invitation available. In that - * case, accept the invitation. - * @return The invitation, or null if none was received. - */ - public Invitation getInvitation() { - if (!mGoogleApiClient.isConnected()) { - Log.w(TAG, - "Warning: getInvitation() should only be called when signed in, " - + "that is, after getting onSignInSuceeded()"); - } - return mInvitation; - } - - public boolean hasInvitation() { - return mInvitation != null; - } - - public boolean hasTurnBasedMatch() { - return mTurnBasedMatch != null; - } - - public boolean hasRequests() { - return mRequests != null; - } - - public void clearInvitation() { - mInvitation = null; - } - - public void clearTurnBasedMatch() { - mTurnBasedMatch = null; - } - - public void clearRequests() { - mRequests = null; - } - - /** - * Returns the tbmp match received through an invitation notification. This - * should be called from your GameHelperListener's - * - * @link{GameHelperListener#onSignInSucceeded method, to check if there's a - * match available. - * @return The match, or null if none was received. - */ - public TurnBasedMatch getTurnBasedMatch() { - if (!mGoogleApiClient.isConnected()) { - Log.w(TAG, - "Warning: getTurnBasedMatch() should only be called when signed in, " - + "that is, after getting onSignInSuceeded()"); - } - return mTurnBasedMatch; - } - - /** - * Returns the requests received through the onConnected bundle. This should - * be called from your GameHelperListener's - * - * @link{GameHelperListener#onSignInSucceeded method, to check if there are - * incoming requests that must be - * handled. - * @return The requests, or null if none were received. - */ - public ArrayList getRequests() { - if (!mGoogleApiClient.isConnected()) { - Log.w(TAG, "Warning: getRequests() should only be called " - + "when signed in, " - + "that is, after getting onSignInSuceeded()"); - } - return mRequests; - } - /** Enables debug logging */ public void enableDebugLog(boolean enabled) { mDebugLog = enabled; @@ -686,8 +565,6 @@ public class GameHelper implements GoogleApiClient.ConnectionCallbacks, } debugLog("Starting connection."); mConnecting = true; - mInvitation = null; - mTurnBasedMatch = null; mGoogleApiClient.connect(); } @@ -712,27 +589,6 @@ public class GameHelper implements GoogleApiClient.ConnectionCallbacks, if (connectionHint != null) { debugLog("onConnected: connection hint provided. Checking for invite."); - Invitation inv = connectionHint - .getParcelable(Multiplayer.EXTRA_INVITATION); - if (inv != null && inv.getInvitationId() != null) { - // retrieve and cache the invitation ID - debugLog("onConnected: connection hint has a room invite!"); - mInvitation = inv; - debugLog("Invitation ID: " + mInvitation.getInvitationId()); - } - - // Do we have any requests pending? - mRequests = Games.Requests - .getGameRequestsFromBundle(connectionHint); - if (!mRequests.isEmpty()) { - // We have requests in onConnected's connectionHint. - debugLog("onConnected: connection hint has " + mRequests.size() - + " request(s)"); - } - - debugLog("onConnected: connection hint provided. Checking for TBMP game."); - mTurnBasedMatch = connectionHint - .getParcelable(Multiplayer.EXTRA_TURN_BASED_MATCH); } // we're good to go diff --git a/project/jni/application/biniax2/AndroidAppSettings.cfg b/project/jni/application/biniax2/AndroidAppSettings.cfg index fca5f4de8..a2aa3f30f 100644 --- a/project/jni/application/biniax2/AndroidAppSettings.cfg +++ b/project/jni/application/biniax2/AndroidAppSettings.cfg @@ -13,11 +13,13 @@ AppVersionCode=1406 AppVersionName="1.4.06" # Specify path to download application data in zip archive in the form 'Description|URL|MirrorURL^Description2|URL2|MirrorURL2^...' -# If you'll start Description with '!' symbol it will be enabled by default, other downloads should be selected by user from startup config menu +# If you'll start Description with '!' symbol it will be enabled by default, '!!' will also hide the entry from the menu, so it cannot be disabled # 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 -# If the URL does not contain 'http://' it is treated as file from 'project/jni/application/src/AndroidData' dir - -# these files are put inside .apk package by build system -# Also please avoid 'https://' URLs, many Android devices do not have trust certificates and will fail to connect to SF.net over HTTPS +# If the URL does not contain 'http://' or 'https://', it is treated as file from 'project/jni/application/src/AndroidData' dir - +# these files are put inside .apk package by the build system +# You can specify Google Play expansion files in the form 'obb:main.12345' or 'obb:patch.12345' where 12345 is the app version for obb file +# You can use .zip.xz archives for better compression, but you need to add 'lzma' to CompiledLibraries +# Generate .zip.xz files like this: zip -0 -r data.zip your-data/* ; xz -8 data.zip AppDataDownloadUrl="!Game data|data3.zip" # Reset SDL config when updating application to the new version (y) / (n) @@ -46,10 +48,17 @@ NeedDepthBuffer=n # Enable OpenGL stencil buffer (needed only for 3-d applications, small speed decrease) (y) or (n) NeedStencilBuffer=n -# Try to use GLES 2.x context - will revert to GLES 1.X if unsupported by device +# Use GLES 2.x context # you need this option only if you're developing 3-d app (y) or (n) NeedGles2=n +# Use GLES 3.x context +# you need this option only if you're developing 3-d app (y) or (n) +NeedGles3=n + +# Use gl4es library for provide OpenGL 1.x functionality to OpenGL ES accelerated cards (y) or (n) +UseGl4es= + # Application uses software video buffer - you're calling SDL_SetVideoMode() without SDL_HWSURFACE and without SDL_OPENGL, # this will allow small speed optimization. Enable this even when you're using SDL_HWSURFACE. (y) or (n) SwVideoMode=y @@ -80,6 +89,14 @@ CompatibilityHacksStaticInit=n # On-screen Android soft text input emulates hardware keyboard, this will only work with Hackers Keyboard app (y)/(n) CompatibilityHacksTextInputEmulatesHwKeyboard=n +# Built-in text input keyboards with custom layouts for emulators, requires CompatibilityHacksTextInputEmulatesHwKeyboard=y +# 0 or empty - standard Android keyboard +# 1 - Simple QWERTY keyboard, no function keys, no arrow keys +# 2 - Commodore 64 keyboard +# 3 - Amiga keyboard +# 4 - Atari800 keyboard +TextInputKeyboard= + # Hack for broken devices: prevent audio chopping, by sleeping a bit after pushing each audio chunk (y)/(n) CompatibilityHacksPreventAudioChopping=n @@ -113,6 +130,9 @@ RightMouseButtonLongPress= # Show SDL mouse cursor, for applications that do not draw cursor at all (y) or (n) ShowMouseCursor=n +# Screen follows mouse cursor, when it's covered by soft keyboard, this works only in software video mode (y) or (n) +ScreenFollowsMouse= + # Generate more touch events, by default SDL generates one event per one video frame, this is useful for drawing apps (y) or (n) GenerateSubframeTouchEvents= @@ -145,6 +165,9 @@ AppUsesAccelerometer=n # Application uses gyroscope (y) or (n), the gyroscope will be used as joystick 1 axes 2-4 AppUsesGyroscope=n +# Application uses orientation sensor (y) or (n), reported as joystick 1 axes 8-10 +AppUsesOrientationSensor= + # Use gyroscope to move mouse cursor (y) or (n), it eats battery, and can be disabled in settings, do not use with AppUsesGyroscope setting MoveMouseWithGyroscope= @@ -156,15 +179,21 @@ AppUsesMultitouch=n # This option will add additional permission to Android manifest (y)/(n) AppRecordsAudio=n -# Application needs to access SD card. If your data files are bigger than 5 Mb, enable it. (y) / (n) +# Application needs read/write access SD card. Always disable it, unless you want to access user photos and downloads. (y) / (n) AccessSdCard= +# Application needs to read it's own OBB file. Enable this if you are using Play Store expansion files. (y) / (n) +ReadObbFile= + # Application needs Internet access. If you disable it, you'll have to bundle all your data files inside .apk (y) / (n) AccessInternet= # Immersive mode - Android will hide on-screen Home/Back keys. Looks bad if you invoke Android keyboard. (y) / (n) ImmersiveMode= +# Hide Android system mouse cursor image when USB mouse is attached (y) or (n) - the app must draw it's own mouse cursor +HideSystemMousePointer= + # Application implements Android-specific routines to put to background, and will not draw anything to screen # between SDL_ACTIVEEVENT lost / gained notifications - you should check for them # rigth after SDL_Flip(), if (n) then SDL_Flip() will block till app in background (y) or (n) @@ -188,38 +217,62 @@ RedefinedKeysScreenKb="RETURN SPACE" RedefinedKeysScreenKbNames="RETURN SPACE" # On-screen keys theme -# 0 = Ultimate Droid by Sean Stieber (green, with gamepad joystick) -# 1 = Simple Theme by Beholder (white, with gamepad joystick) +# 0 = Ultimate Droid by Sean Stieber (green, with cross joystick) +# 1 = Simple Theme by Beholder (white, with cross joystick) # 2 = Sun by Sirea (yellow, with round joystick) # 3 = Keen by Gerstrong (multicolor, with round joystick) +# 4 = Retro by Santiago Radeff (red/white, with cross joystick) +# 5 = GameBoy from RetroArch +# 6 = PlayStation from RetroArch +# 7 = SuperNintendo from RetroArch +# 8 = DualShock from RetroArch +# 9 = Nintendo64 from RetroArch TouchscreenKeysTheme=2 # Redefine gamepad keys to SDL keysyms, button order is: -# A B X Y L1 R1 L2 R2 LThumb RThumb +# A B X Y L1 R1 L2 R2 LThumb RThumb Start Select Up Down Left Right LThumbUp LThumbDown LThumbLeft LThumbRight RThumbUp RThumbDown RThumbLeft RThumbRight RedefinedKeysGamepad="RETURN ESCAPE SPACE SPACE" +# Redefine keys for the second gamepad, same as the first gamepad if not set: +RedefinedKeysSecondGamepad="" + +# Redefine keys for the third gamepad, same as the first gamepad if not set: +RedefinedKeysThirdGamepad="" + +# Redefine keys for the fourth gamepad, same as the first gamepad if not set: +RedefinedKeysFourthGamepad="" + # How long to show startup menu button, in msec, 0 to disable startup menu StartupMenuButtonTimeout=0 # Menu items to hide from startup menu, available menu items: -# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout SettingsMenuKeyboard.ScreenKeyboardAdvanced +# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.StorageAccessConfig SettingsMenuMisc.CommandlineConfig SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout SettingsMenuKeyboard.ScreenKeyboardAdvanced HiddenMenuOptions='SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.MouseConfigMainMenu' # Menu items to show at startup - this is Java code snippet, leave empty for default # new SettingsMenuMisc.ShowReadme(), (AppUsesMouse \&\& \! ForceRelativeMouseMode \? new SettingsMenuMouse.DisplaySizeConfig(true) : new SettingsMenu.DummyMenu()), new SettingsMenuMisc.OptionalDownloadConfig(true), new SettingsMenuMisc.GyroscopeCalibration() # Available menu items: -# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout SettingsMenuKeyboard.ScreenKeyboardAdvanced +# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.StorageAccessConfig SettingsMenuMisc.CommandlineConfig SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout SettingsMenuKeyboard.ScreenKeyboardAdvanced FirstStartMenuOptions='' -# Specify architectures to compile, 'all' or 'y' to compile for all architectures. -# Available architectures: armeabi armeabi-v7a armeabi-v7a-hard x86 mips -MultiABI='armeabi-v7a x86' - # Minimum amount of RAM application requires, in Mb, SDL will print warning to user if it's lower AppMinimumRAM=0 +# GCC version, or 'clang' for CLANG +NDK_TOOLCHAIN_VERSION= + +# Android platform version. +# android-16 = Android 4.1, the earliest supported version in NDK r18. +# android-18 = Android 4.3, the first version supporting GLES3. +# android-21 = Android 5.1, the first version with SO_REUSEPORT defined. +APP_PLATFORM= + +# Specify architectures to compile, 'all' or 'y' to compile for all architectures. +# Available architectures: armeabi-v7a arm64-v8a x86 x86_64 +MultiABI='arm64-v8a' + # Optional shared libraries to compile - removing some of them will save space -# MP3 support by libMAD is encumbered by patents and libMAD is GPL-ed +# MP3 patents are expired, but libmad license is GPL, not LGPL # Available libraries: mad (GPL-ed!) sdl_mixer sdl_image sdl_ttf sdl_net sdl_blitpool sdl_gfx sdl_sound intl xml2 lua jpeg png ogg flac tremor vorbis freetype xerces curl theora fluidsynth lzma lzo2 mikmod openal timidity zzip bzip2 yaml-cpp python boost_date_time boost_filesystem boost_iostreams boost_program_options boost_regex boost_signals boost_system boost_thread glu avcodec avdevice avfilter avformat avresample avutil swscale swresample bzip2 CompiledLibraries="sdl_image sdl_mixer" @@ -229,6 +282,9 @@ CustomBuildScript=n # Aditional CFLAGS for application AppCflags='' +# Aditional C++-specific compiler flags for application, added after AppCflags +AppCppflags='' + # Additional LDFLAGS for application AppLdflags='' @@ -260,3 +316,6 @@ AdmobBannerSize= # Google Play Game Services application ID, required for cloud saves to work GooglePlayGameServicesId=520035027247 +# The app will open files with following extension, file path will be added to commandline params +AppOpenFileExtension='' + diff --git a/project/jni/application/openttd/AndroidAppSettings.cfg b/project/jni/application/openttd/AndroidAppSettings.cfg index a0dc14973..6966b2307 100644 --- a/project/jni/application/openttd/AndroidAppSettings.cfg +++ b/project/jni/application/openttd/AndroidAppSettings.cfg @@ -7,10 +7,10 @@ AppName="OpenTTD" AppFullName=org.openttd.sdl # Application version code (integer) -AppVersionCode=110086 +AppVersionCode=110186 # Application user-visible version name (string) -AppVersionName="1.10.0.86" +AppVersionName="1.10.1.86" # Specify path to download application data in zip archive in the form 'Description|URL|MirrorURL^Description2|URL2|MirrorURL2^...' # If you'll start Description with '!' symbol it will be enabled by default, '!!' will also hide the entry from the menu, so it cannot be disabled diff --git a/project/jni/application/openttd/src b/project/jni/application/openttd/src index 907d22046..7b72277db 160000 --- a/project/jni/application/openttd/src +++ b/project/jni/application/openttd/src @@ -1 +1 @@ -Subproject commit 907d22046ad05865e0f1be7a0e4b8d9d6664b33b +Subproject commit 7b72277dbee58d44fe77df5fe7444a9350027a2c diff --git a/project/res/layout-v28/notification.xml b/project/res/layout-v28/notification.xml new file mode 100644 index 000000000..862653fb8 --- /dev/null +++ b/project/res/layout-v28/notification.xml @@ -0,0 +1,50 @@ + + + + + + + +