Skip to content

RDMR-1391 Prepare our fork of cordova-android 15.1.0 - #38

Open
EiyuuZack wants to merge 11 commits into
outsystems/15.1.xfrom
feat/RDMR-1391/cordova-android15.1
Open

RDMR-1391 Prepare our fork of cordova-android 15.1.0#38
EiyuuZack wants to merge 11 commits into
outsystems/15.1.xfrom
feat/RDMR-1391/cordova-android15.1

Conversation

@EiyuuZack

Copy link
Copy Markdown

This rebuilds our fork on top of upstream rel/15.1.0 and re-applies the OutSystems customizations that are not already upstream. Adopting 15.1.0 as the base delivers the full upstream fix set and tooling raise (SDK 36 / Gradle 8.14.2 / AGP 8.10.1 / Kotlin 2.1.21) for free.

It adds 10 customization commits above the 15.1.0 version from upstream:

  • Re-introduce legacy Cordova splash screen logic (re-port of our 14.0.x fork)
  • Only send updateSystemBars once the final splash — native or custom — is drawn (re-port of 4bae33a0)
  • Allow setting the AndroidX splashscreen version via preference (from our 14.0.x fork)
  • Fix error on cordova load error.html (from our 14.0.x fork)
  • Add Gradle wrapper validateDistributionUrl (from our 14.0.x fork)
  • Phase out enableJetifier (from our 14.0.x fork)
  • Phase out kotlin-android-extensions (from our 14.0.x fork)
  • Enable filter touch — on by default (re-anchored from our 14.0.x fork)
  • Add EdgeToEdgeGlyphTheme preference to SystemBarPlugin (rebuilt from 42ea693d)
  • Update CI for OutSystems requirements (re-authored from 02f0f7a4)

Plus one chore commit removing a stray comment.

Two intentional deviations from outsystems/14.0.x, worth a closer look in review:

  • The EdgeToEdgeGlyphTheme override follows upstream edge-to-edge semantics (version-agnostic canEdgeToEdge, no VANILLA_ICE_CREAM guard), so it now applies on all Android versions when AndroidEdgeToEdge is enabled.
  • 4bae33a0's CoreAndroid BAKLAVA->36 hunk was dropped — upstream reworked the back button to an unconditional AndroidX OnBackPressedCallback with no SDK guard, so it is obsolete.

The remaining changes from our 14.0.x fork are already handled in 15.1.0 (upstream fixes, the tooling raise, and the release chores), so they are not re-applied.

usernuno and others added 11 commits July 24, 2026 12:50
The changes made to splash screens in Cordova-android 11
are in line with the UX Google wants. Unfortunately, this removes
the support for custom full image splash screens altogether.

To keep the support for the new Splash Screen API provided
out of the box by Cordova but also support the full image splash
screens, we're reintroducing the removed code while keeping
the new logic as well.

So what does this do now?
- If no custom splash screens were provided and the
ShowSplashScreenSpinner preference is not enabled, only the
new Android splash is presented
- Otherwise, the Android splash is dismissed as ASAP and the
old experience is used
- The show() method is now available in the clobber once again,
because the old splash screen can still be re-shown (the new one
can't, hence why this method was removed)
- It's possible to dismiss the splash screen via hide() when using
AutoHideSplashScreen (this was possible before but was removed
in this new experience)

References https://outsystemsrd.atlassian.net/browse/RNMT-5730
References https://outsystemsrd.atlassian.net/browse/RNMT-6187

(cherry picked from commit 137c6ab)

(cherry picked from commit f111373)

RDMR-1391: re-ported onto rel/15.1.0 (SDK 36). Resolved the single
SplashScreenPlugin.java conflict at the onAnimationEnd seam plus two silent
auto-merge artifacts, by restoring the AndroidSplashScreenBehaviour
cordovaWebView plumbing so base 15.1.0 (apache#1817) updateSystemBars survives in the
native splash path (REQ-17). Legacy-path updateSystemBars gating deferred to the
4bae33a re-port. Verified: eslint + 338 jasmine specs + framework compile.
References https://outsystemsrd.atlassian.net/browse/RDMR-1391
…plash screen has been drawn to prevent a flash between the native and the custom splash screen

(cherry picked from commit 4bae33a)

RDMR-1391: re-ported onto rel/15.1.0. Applied the SplashScreenPlugin gating
(static hasCustomSplashscreens; native no-fade updateSystemBars gated on
!hasCustomSplashscreens per REQ-18). Also re-added the legacy-path
updateSystemBars in removeSplashScreen (onAnimationEnd + immediate-hide) so bars
repaint when the CUSTOM splash is drawn: in 14.0.x these came from apache#1817
(2d70f29), skipped here as already-upstream, but base 15.1.0's apache#1817 covers only
the native path. DROPPED 4bae33a's CoreAndroid.java BAKLAVA->36 hunk: base's
overrideBackbutton was reworked upstream (apache#1903/apache#1910) to an unconditional
AndroidX OnBackPressedCallback with no SDK guard, so the hunk is obsolete
(Risk R2 / Open-Q2). Verified: eslint + framework compile.
References https://outsystemsrd.atlassian.net/browse/RDMR-1391
Fixes the application crashing when webview redirects to error screen.

This customisation has historically been in a patch in the template.
Since we now have a fork, all customisations should be in the fork.

References https://outsystemsrd.atlassian.net/browse/RNMT-1890
References https://outsystemsrd.atlassian.net/browse/RNMT-5730
References https://outsystemsrd.atlassian.net/browse/RNMT-6187

(cherry picked from commit 728d2a7)
(cherry picked from commit 0858220)
This propery should default to true, but for some reason Gradle is
complaining starting with version 8.6. As a result, the wrapper fails
to install the selected version. Possibly a bug in Gradle, but no harm
in adding this here (famous last words).

References https://outsystemsrd.atlassian.net/browse/RDMR-74

(cherry picked from commit 5de47e1)
(cherry picked from commit 78526d4)
According to https://developer.android.com/jetpack/androidx/migrate,
this flag is no longer required -- and is in fact discouraged -- if
an Android project is no longer using any Support Libraries (i.e.,
fully migrated to AndroidX). This flag can can lead to slower build
times. The command `gradlew :app:checkJetifier` command can be used
to to confirm if it’s actually needed.

BREAKING CHANGE: as of this commit, it will no longer be possible to
use any Android Support Libraries, only AndroidX Libraries.

References https://outsystemsrd.atlassian.net/browse/RNMT-6192

(cherry picked from commit 9458ef4)
(cherry picked from commit c71c71c)
According to https://android-developers.googleblog.com/2022/02/discontinuing-kotlin-synthetics-for-views.html
this Gradle plugin is no longer required, and will actually prevent
using newer Kotlin versions to build Android applications. This is
also reflected in apache#1642,
so staying one step ahead, this plugin has been effectively removed.

References https://outsystemsrd.atlassian.net/browse/RNMT-6192

(cherry picked from commit 20ed0fe)
(cherry picked from commit 130981a)
BREAKING CHANGE: This changes the default value of FilterTouchesWhenObscured

We had a customer asking for the addition of a configuration
to our Android’s manifest to prevent touches when the app is
obscured, as this was flagged by the google store as a
security issue.

Therefore, we should provide the ability for our customers to
add this specific configuration.

References https://outsystemsrd.atlassian.net/browse/RNMT-5303
References https://outsystemsrd.atlassian.net/browse/RNMT-5392
References https://outsystemsrd.atlassian.net/browse/RNMT-5730
References https://outsystemsrd.atlassian.net/browse/RNMT-6187

(cherry picked from commit 2279703)

(cherry picked from commit 296dfd3)

RDMR-1391: re-authored onto rel/15.1.0. Base rewrote CordovaActivity.createViews()
(rootLayout + separate webView local), so the single setFilterTouchesWhenObscured
line was re-anchored onto appView.getView() (the `webView` local) right after its
setLayoutParams. BREAKING default (true) preserved (REQ-24 / Risk R5 -> surface to
customers). Verified: framework compile.
References https://outsystemsrd.atlassian.net/browse/RDMR-1391
Rebuilt onto rel/15.1.0's reshaped SystemBarPlugin (RDMR-1391). Re-applies the
EdgeToEdgeGlyphTheme override ("dark"/"light"/unset) that forces status-bar glyph
colour in edge-to-edge, where a transparent bar defeats luminance auto-detection.

DEC-1 (REQ-22): follows UPSTREAM semantics - uses base's version-agnostic
canEdgeToEdge and does NOT reintroduce the SDK_INT >= VANILLA_ICE_CREAM guard that
apache#1902 removed. The override therefore fires on ALL Android versions when
AndroidEdgeToEdge is enabled - the one documented deviation from outsystems/14.0.x
parity (section 7.1). Plugs into the apache#1939 (INVALID_COLOR removed) / apache#1955 (CSS
colour rework) reshaped isColorLight/transparent-background region.

Re-authored (not a clean cherry-pick) from original commit
42ea693.
References https://outsystemsrd.atlassian.net/browse/RDMR-1284
References https://outsystemsrd.atlassian.net/browse/RDMR-1391
Re-authored onto rel/15.1.0's reworked workflow set (RDMR-1391). Layers the
OutSystems CI requirements from 02f0f7a onto the base ci.yml WITHOUT touching the
upstream draft-release.yml / release-audit.yml (REQ-25 / AC-6):
- drop windows-latest from the test OS matrix (kept base's node matrix
  20/22/24/26.x and macos-26);
- name the JDK step "set up JDK 17";
- remove the Codecov step (fork has no CORDOVA_CODECOV_TOKEN);
- remove upstream's CodeQL job (OutSystems runs its own security scanning).
Verified: yaml.safe_load parses; only ci.yml changed.

Re-authored (not a clean cherry-pick) from original commit
02f0f7a.
References https://outsystemsrd.atlassian.net/browse/RNMT-6187
References https://outsystemsrd.atlassian.net/browse/RDMR-1391
@EiyuuZack
EiyuuZack requested review from a team, Chuckytuh, OS-kepatotorica, OS-ruialves, benmccarty91, trevor-lambert and usernuno and removed request for a team July 27, 2026 10:15
@EiyuuZack EiyuuZack self-assigned this Jul 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants