RDMR-1391 Prepare our fork of cordova-android 15.1.0 - #38
Open
EiyuuZack wants to merge 11 commits into
Open
Conversation
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
References https://outsystemsrd.atlassian.net/browse/RNMT-6192 (cherry picked from commit 0b4f6eb) (cherry picked from commit c40a356)
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
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This rebuilds our fork on top of upstream
rel/15.1.0and 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:
updateSystemBarsonce the final splash — native or custom — is drawn (re-port of4bae33a0)error.html(from our 14.0.x fork)validateDistributionUrl(from our 14.0.x fork)enableJetifier(from our 14.0.x fork)kotlin-android-extensions(from our 14.0.x fork)EdgeToEdgeGlyphThemepreference toSystemBarPlugin(rebuilt from42ea693d)02f0f7a4)Plus one
chorecommit removing a stray comment.Two intentional deviations from
outsystems/14.0.x, worth a closer look in review:EdgeToEdgeGlyphThemeoverride follows upstream edge-to-edge semantics (version-agnosticcanEdgeToEdge, noVANILLA_ICE_CREAMguard), so it now applies on all Android versions whenAndroidEdgeToEdgeis enabled.4bae33a0'sCoreAndroidBAKLAVA->36hunk was dropped — upstream reworked the back button to an unconditional AndroidXOnBackPressedCallbackwith 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.