feat(android): target Android SDK level 35
First updates for targetSDK 35 (fixes https://github.com/tidev/titanium-sdk/issues/14111).
As mentioned in https://github.com/tidev/titanium-sdk/issues/14111 Android SDK level 35 will enable edge-to-edge by default. This will break a lot of our default themes:
(see the top of the window)
This PR will enable targetSDK 35 but will opt-out of edge-to-edge. This way we will have more time to implement proper edge-to-edge support and the apps will looks the same as before for everyone. It's not announced when targetSDK 35 will be required but according to https://targetsdk.com/ it will be end of this year (new apps, app updates a year later as always)
With this PR it will look like this again:
suppressUnsupportedCompileSdk is added to remove the warnings during build as the gradle version needs to be updated (different PR).
TODO Run more tests and see if anything else needs to be implemented for targetSDK 35
@prashantsaini1 Can you please give this a test with our app?
Android 16 was just released so you can test it on Pixel devices now too. At the moment most 3rd party apps opt-out of the edge-to-edge design (even most Google apps) too.
Long term goal of course: add a safe padding around the top and bottom so it will layout the windows correctly in edge-to-edge mode.
a small update to prepare the XML layouts we have. They won't be used because of the opt-out part but when we implement the correct way these windows will work already.
Without the XML fix and edge-to-edge:
| DrawerLayout: | BottomNavigation (experimental:true): |
|---|---|
With the XML fix and edge-to-edge:
| DrawerLayout: | BottomNavigation (experimental:true): |
|---|---|
We should get this merged. I have re-reviewed it, but still haven't tested it. :(
When the description says "opt-out of edge-to-edge", how do I opt-in to test this?
you add https://github.com/tidev/titanium-sdk/pull/14181/files#diff-308f820e2c4773f2a8eb23b7c16335e9878e01a11863c33d6b9fd05b44aad626 to your project (/app/platform/android/res/) and set it to false
or run 12.7.0 and set <uses-sdk android:targetSdkVersion="35" /> in your tiapp.xml (inside <manifest>)
@m1ga Can you check if this entire stuff can be done by simply calling the WindowCompat.setDecorFitsSystemWindows(getWindow(), true); in TiBaseActivity as described here?
This would be helpful to cover all scenarios if we missed anything somewhere.
Edit: Though this PR disables the edge-to-edge feature and saves current apps, however, this may soon be required to enable more immersive UX. I can take a look on it this weekend to find a proper solution to enable/disable it and automatically handle the systems colors as also described in above link.
No, that doesn't work:
(I'm testing other stuff at the moment from the video in the issue ;-) )
Though this PR disables the edge-to-edge feature and saves current apps, however, this may soon be required to enable more immersive UX
True, but currently it isn't and target 35 will be required in November. That is the point of this PR: opt-out so people can make updates and their apps look the same. But totally agree: we have to implement it
Can it wait a couple of weeks to merge? I haven't tested it yet with our apps, so if it can wait, I can prioritise to wrap it up asap.
sure, we didn't switch to 35 yet and no user has to do it by hand. If they want they have the workaround in the issue.
I think this one is more important: https://github.com/tidev/titanium-sdk/pull/14226 so we can start updating all the modules to be compatible. The earlier we can start the better. Many people don't like to update modules :smile: They always run very old versions when they ask for support on slack.
emails are rolling out with:
Starting August 31 2025: New apps and app updates must target Android 15 (API level 35) or higher to be submitted to Google Play; except for Wear OS, Android Automotive OS, and Android TV apps, which must target Android 14 (API level 34) or higher.
but you can extend until November
cc @prashantsaini1 Can you finish the review this sprint? Then we can release a new Ti SDK release mid July ✨