Commit graph

444 commits

Author SHA1 Message Date
Thaddeus Crews
52a600f050
Merge pull request #119798 from Voyend/android-soft-keyboard-backspace-fix
Fix backspace being unable to delete pre-existing text in any input field when using a soft keyboard on Android.
2026-06-18 10:19:00 -05:00
Voyend
c0bb5a2d1f Fix backspace not deleting original text in soft keyboard on Android
When a soft keyboard's backspace sends KEYCODE_DEL via sendKeyEvent(),
GodotEditText.onKeyDown() delegates to super.onKeyDown() which modifies
the EditText's Editable, triggering beforeTextChanged() in
GodotTextInputWrapper, which then forwards KEYCODE_DEL to the engine.

However, the EditText is only seeded with text up to the cursor position
(mOriginText) when the keyboard opens. Once the user backspaces through
all of that content, the EditText becomes empty. At that point,
super.onKeyDown(KEYCODE_DEL) on an empty EditText makes no change to the
Editable, so beforeTextChanged() never fires and the engine receives no
DEL event — even though the engine's own buffer still has text before
the cursor.

This causes a visible bug: the user can delete characters they typed in
the current session, but backspacing further into pre-existing text does
nothing. Re-tapping the field fixes it temporarily because showKeyboard()
is called again, reseeding the EditText with the current text and cursor
position.

Fixed this by forwarding KEYCODE_DEL directly to the engine when the
EditText is empty, bypassing the TextWatcher path that can't fire in
that state. This produces no double events since beforeTextChanged()
is physically unable to fire on an empty field.

Move DEL release event from onKeyDown to onKeyUp
2026-06-12 17:21:41 +03:00
Fredia Huya-Kouadio
fff89b78e7
Update download URL for GABE 2026-06-03 11:59:10 -07:00
KOGA Mitsuhiro
fcc194c585 Android: Fix infinite recursion in proxy equals handler
Kotlin's `==` on the proxy compiles to `proxy.equals(args[0])`, which
the JDK proxy dispatches back through the InvocationHandler, hitting
the same branch and recursing into StackOverflowError. Use `===` for
reference equality, matching the default Object#equals behavior.
2026-05-22 22:22:45 +09:00
Muteem
471a4a79c0 Android: Fix ClassCastException in proxy hashCode when ObjectID is returned as Long
Object.hashCode() must return Int (32-bit), but the proxy InvocationHandler
returned godotObjectID directly (Long, 64-bit). When a HashMap-like container
called proxy.hashCode(), the auto-generated proxy did (Integer) result on a
java.lang.Long and threw ClassCastException.

Signed-off-by: Muteem <29696635+Muteem@users.noreply.github.com>
2026-05-22 22:20:52 +09:00
Muteem
08c08bfef2 Android: Fix NPE when proxy interface method has no arguments
JDK contract: InvocationHandler.invoke's args parameter is null when
the proxied interface method takes no arguments. The proxy handlers
in AndroidRuntimePlugin used `*args` directly, which spread-deref'd
null and threw NullPointerException.

Signed-off-by: Muteem <29696635+Muteem@users.noreply.github.com>
2026-05-20 16:23:30 +08:00
Thaddeus Crews
9a33066a27
Merge pull request #119297 from m4gr3d/misc_bug_fixes
[Android] Miscellaneous bug fixes
2026-05-13 09:53:54 -05:00
Fredia Huya-Kouadio
ca46bafc51 Fix the command line parsing logic for the --main-pack argument 2026-05-06 13:11:35 -07:00
Thaddeus Crews
cb490e6e23
Merge pull request #119172 from syntaxerror247/gabe-ready-for-release
Remove experimental warning from `Use Gradle Build` option on Android
2026-05-06 10:53:35 -05:00
Anish Kumar
9ecaf9307f Remove experimental warning from Use Gradle Build option on Android 2026-05-06 17:23:31 +05:30
Anish Kumar
7338c3475b Fix Android plugin regression 2026-05-05 20:17:57 +05:30
Thaddeus Crews
f4c839f7b3
Merge pull request #118417 from syntaxerror247/resize-and-move
Allow moving and resizing the embedded game window on Android
2026-04-16 09:41:10 -05:00
Anish Kumar
eb3d2940e3 Allow moving and resizing the embedded game window on Android 2026-04-15 22:18:12 +05:30
Fredia Huya-Kouadio
31b595cd5e Deprecate and remove obb support
The current obb support was specific to the Google Play store which has deprecated the format in favor on Android bundle and Play asset delivery.
For projects that still have a dependency on the Play store obb support, the deprecated logic has been moved into a separate Godot Obb Android plugin.
2026-04-10 12:25:44 -07:00
Anish Kumar
ee82a8f69d Android: Add export options to customize splash screen 2026-04-09 11:39:36 +05:30
Fredia Huya-Kouadio
50f6eff29b [Android] Clean up Godot.kt by moving natively accessed methods to the (new) GodotNativeBridge.kt internal class 2026-04-08 10:24:37 -07:00
Thaddeus Crews
5c2b6814ea
Merge pull request #117653 from m4gr3d/fix_back_navigation_handling
[Android] Fix handling of back navigation when targeting API level 36
2026-04-07 18:21:45 -05:00
Fredia Huya-Kouadio
ea070aceec [Android] Fix handling of back navigation when targeting API level 36 2026-04-07 10:03:28 -07:00
Thaddeus Crews
a490c267a2
Merge pull request #115498 from m4gr3d/add_javaclasswrapper_proxy_interfaces
Android: Allow implementing java interfaces from GDScript
2026-04-01 12:55:15 -05:00
Fredia Huya-Kouadio
70c684a063 Allow implementing java interfaces from GDScript 2026-03-30 11:49:43 -07:00
Rémi Verschelde
0f53286459
Merge pull request #117682 from syntaxerror247/sigal-registration-issue
Fix plugin signal registration error on Android
2026-03-23 22:35:50 +01:00
Anish Kumar
2e208489e7 Fix plugin signal registration error on Android 2026-03-21 00:07:37 +05:30
Fredia Huya-Kouadio
46984cf152 Bump the minimum api version and hardware version for Vulkan support
Follows the recommendations from https://developer.android.com/games/develop/vulkan/native-engine-support#recommendations
2026-03-18 20:47:48 -07:00
Thaddeus Crews
be33d1ceb0
Merge pull request #114941 from syntaxerror247/fix-HashMap-crash
Android: Fix java.util.HashMap handling
2026-03-17 13:44:11 -05:00
Anish Kumar
5387f0d596 Android: Fix crash when emitting signal with java.util.HashMap 2026-03-17 22:55:18 +05:30
uno1982
e2e1c89723
Android: Add haptic feedback on long-press right-click in the editor
Trigger haptic feedback when a long-press gesture fires a right-click
(context menu) in the Android editor. Uses Android's native
`HapticFeedbackConstants.LONG_PRESS` on the render view surface.

An editor setting `interface/touchscreen/haptic_on_long_press` is added
under the existing touchscreen section to allow users to disable this
behavior. The setting defaults to enabled on native touchscreen devices.
2026-03-14 11:32:07 +01:00
Fredia Huya-Kouadio
ef0163ba9f Add support for PiP mode 2026-03-06 23:29:16 -08:00
Rémi Verschelde
a772f16387
Merge pull request #117109 from syntaxerror247/script-editor-portrait
Android editor: Enable orientation change in Script Editor
2026-03-06 12:44:31 +01:00
Anish Kumar
25a203aa34 Android editor: Enable orientation change in Script Editor 2026-03-06 06:24:42 +05:30
Rémi Verschelde
a447ac95ec
Move DisplayServer enums and typedefs to DisplayServerEnums
This will allow decoupling `display_server.h` from a number of headers in the
codebase which only require those enums and not all the DisplayServer API.
2026-03-03 12:44:02 +01:00
Fredia Huya-Kouadio
8d14a178e9 Implement project.godot file associations for the Android editor 2026-02-10 14:13:07 -08:00
Thaddeus Crews
833889aec0
Merge pull request #115710 from syntaxerror247/fix-seek
Fix `FileAccess.seek_end` behavior on Android
2026-02-09 15:07:07 -06:00
Anish Kumar
0c89904687 Fix FileAccess.seek_end behavior on Android 2026-02-08 00:16:34 +05:30
Thaddeus Crews
2487a297b2
Merge pull request #113469 from m4gr3d/deprecate_dev_buildtype
Deprecate the Android studio `dev` buildtype
2026-02-03 18:06:52 -06:00
Fredia Huya-Kouadio
feb8e6ff13 Deprecate the Android studio dev buildtype
The project is setup in Android Studio with three buildtypes:
- `release` for release builds of the engine
- `debug` for debug builds of the engine with `dev_mode`, `dev_build`, and `debug_symbols` disabled
- `dev` for debug builds of the engine with `dev_mode`, `dev_build`, and `debug_symbols` enabled

This commit deprecates and removes the `dev` buildtype and instead enables `dev_mode`, `dev_build`, and `debug_symbols` for the `debug` buildtype when building with Android Studio.

The `release` buildtype has also been updated such that a `release` build built with Android Studio and signed with non-production keys can be installed side-by-side with a production-signed release (e.g: from the store).
2026-02-03 06:55:00 -08:00
Anish Kumar
1c80b25af8 Android: Fix Bad file descriptor in SAF/MediaStore in long term access 2026-02-02 15:47:16 +05:30
Anish Kumar
40b770ecf0 Fix crash in StorageScope.kt on Android 2026-01-28 22:36:30 +05:30
Thaddeus Crews
ea1e6640f0
Merge pull request #115434 from syntaxerror247/landscape-or-portrait
Add device orientation change signal to DisplayServer
2026-01-27 15:18:22 -06:00
Anish Kumar
e2369a834b Add device orientation change signal in DisplayServer
This PR:
- Fixes the orientation detection logic on Android
- Adds an orientation_changed signal in DisplayServer

Co-Authored-By: bruvzg <7645683+bruvzg@users.noreply.github.com>
2026-01-27 23:35:44 +05:30
Thaddeus Crews
ed0ae97d98
Merge pull request #114922 from DarioSamo/android-platform-gl3-fallback-fix
Fix fallback to OpenGL3 from Vulkan initialization on Android.
2026-01-27 09:04:14 -06:00
Anish Kumar
c7e5caa68e Enable native file picker support on Android 9 and older 2026-01-22 16:54:07 +05:30
Dario
542f8ddf22 Fix fallback to OpenGL3 from Vulkan initialization on Android. 2026-01-14 23:55:21 -03:00
Rémi Verschelde
4595e5fc6c
Merge pull request #114207 from m4gr3d/fix_anr_on_exit
Android: Fix ANRs when shutting down the engine due to the render thread
2026-01-08 22:57:13 +01:00
Fredia Huya-Kouadio
422cc7b91b Fix ANRs when shutting down the engine 2026-01-07 13:40:06 -08:00
Rémi Verschelde
16975f5c24
Merge pull request #114465 from m4gr3d/fix_editor_hybrid_app_support_detection
[Android editor] Restrict Android editor support for hybrid app projects to XR devices
2026-01-01 16:47:59 +01:00
Fredia Huya-Kouadio
185a4abcb5 Fix hybrid app support detection for the Android editor 2025-12-31 19:17:56 -08:00
Nintorch
66e357f29a Joypads: ignore Android fingerprint scanners
Fix Android fingerprint scanners being detected as joypads
2025-12-26 23:28:47 +05:00
Thaddeus Crews
5311b5e4d0
Merge pull request #113878 from m4gr3d/fix_obb_dir_access
Fix storage scope for the obb directory
2025-12-15 08:01:14 -06:00
Fredia Huya-Kouadio
c9fb6a3040 Ensure that the permission requests results are dispatched on the render thread 2025-12-12 14:38:54 -08:00
Fredia Huya-Kouadio
b40afd6781 Fix storage scope for the obb directory 2025-12-10 21:58:40 -08:00