From 3d8948c84a9995aa5ca4a72e0786bd047c030380 Mon Sep 17 00:00:00 2001
From: cogwheel0 <172976095+cogwheel0@users.noreply.github.com>
Date: Thu, 28 Aug 2025 20:18:24 +0530
Subject: [PATCH] fix: android 15 warnings
---
android/app/build.gradle.kts | 8 ++++---
.../app/cogwheel/conduit/MainActivity.kt | 21 +++---------------
.../app/src/main/res/values-v35/styles.xml | 8 +++----
lib/core/services/platform_service.dart | 22 ++++++++-----------
lib/main.dart | 5 +++++
5 files changed, 25 insertions(+), 39 deletions(-)
diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts
index 72a7185..01e9f4b 100644
--- a/android/app/build.gradle.kts
+++ b/android/app/build.gradle.kts
@@ -28,12 +28,14 @@ android {
}
compileOptions {
- sourceCompatibility = JavaVersion.VERSION_11
- targetCompatibility = JavaVersion.VERSION_11
+ // Align with modern Android Gradle Plugin requirements
+ sourceCompatibility = JavaVersion.VERSION_17
+ targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
- jvmTarget = JavaVersion.VERSION_11.toString()
+ // Generate JVM bytecode targeting Java 17
+ jvmTarget = JavaVersion.VERSION_17.toString()
}
signingConfigs {
diff --git a/android/app/src/main/kotlin/app/cogwheel/conduit/MainActivity.kt b/android/app/src/main/kotlin/app/cogwheel/conduit/MainActivity.kt
index ab2c0cd..5675718 100644
--- a/android/app/src/main/kotlin/app/cogwheel/conduit/MainActivity.kt
+++ b/android/app/src/main/kotlin/app/cogwheel/conduit/MainActivity.kt
@@ -10,23 +10,8 @@ class MainActivity : FlutterActivity() {
private lateinit var backgroundStreamingHandler: BackgroundStreamingHandler
override fun onCreate(savedInstanceState: Bundle?) {
- // Enable edge-to-edge display for Android 15+ compatibility
- // This ensures proper handling of system bars and insets
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) {
- // For Android 15+ (API 35), try to use enableEdgeToEdge if available
- try {
- // Use reflection to call EdgeToEdge.enable() for forward compatibility
- val edgeToEdgeClass = Class.forName("androidx.activity.EdgeToEdge")
- val enableMethod = edgeToEdgeClass.getMethod("enable", android.app.Activity::class.java)
- enableMethod.invoke(null, this)
- } catch (e: Exception) {
- // Fallback to WindowCompat if EdgeToEdge is not available
- WindowCompat.setDecorFitsSystemWindows(window, false)
- }
- } else {
- // For older versions, use WindowCompat for backward compatibility
- WindowCompat.setDecorFitsSystemWindows(window, false)
- }
+ // Ensure content draws behind system bars (backwards compatible helper)
+ WindowCompat.setDecorFitsSystemWindows(window, false)
super.onCreate(savedInstanceState)
}
@@ -45,4 +30,4 @@ class MainActivity : FlutterActivity() {
backgroundStreamingHandler.cleanup()
}
}
-}
\ No newline at end of file
+}
diff --git a/android/app/src/main/res/values-v35/styles.xml b/android/app/src/main/res/values-v35/styles.xml
index 85122a2..e286369 100644
--- a/android/app/src/main/res/values-v35/styles.xml
+++ b/android/app/src/main/res/values-v35/styles.xml
@@ -10,8 +10,7 @@
- true
- always
- - @android:color/transparent
- - @android:color/transparent
+
- false
- false
@@ -25,9 +24,8 @@
- ?android:colorBackground
- true
- - @android:color/transparent
- - @android:color/transparent
+
- false
- false
-
\ No newline at end of file
+
diff --git a/lib/core/services/platform_service.dart b/lib/core/services/platform_service.dart
index 4119cd4..56ac3dd 100644
--- a/lib/core/services/platform_service.dart
+++ b/lib/core/services/platform_service.dart
@@ -326,25 +326,21 @@ class PlatformService {
statusBarIconBrightness: isDarkContent
? Brightness.dark
: Brightness.light,
+ // iOS: it's safe to pass a color; leave behavior unchanged
statusBarColor: backgroundColor,
),
);
} else {
- // For Android 15+, use edge-to-edge approach
- // Avoid deprecated setStatusBarColor, setNavigationBarColor, setNavigationBarDividerColor
+ // Android: Avoid passing any bar colors to prevent invoking
+ // deprecated Window.setStatusBarColor / setNavigationBarColor / setNavigationBarDividerColor
+ // on Android 15+. Only control icon brightness; colors come from theme + EdgeToEdge.
SystemChrome.setSystemUIOverlayStyle(
SystemUiOverlayStyle(
- // Only set icon brightness for edge-to-edge compatibility
- statusBarIconBrightness: isDarkContent
- ? Brightness.dark
- : Brightness.light,
- systemNavigationBarIconBrightness: isDarkContent
- ? Brightness.dark
- : Brightness.light,
- // Use transparent colors for proper edge-to-edge display
- statusBarColor: Colors.transparent,
- systemNavigationBarColor: Colors.transparent,
- systemNavigationBarDividerColor: Colors.transparent,
+ statusBarIconBrightness:
+ isDarkContent ? Brightness.dark : Brightness.light,
+ systemNavigationBarIconBrightness:
+ isDarkContent ? Brightness.dark : Brightness.light,
+ // Do NOT set status/navigation bar colors on Android.
),
);
}
diff --git a/lib/main.dart b/lib/main.dart
index 37e1675..ee48c0f 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'core/services/navigation_service.dart';
import 'core/widgets/error_boundary.dart';
@@ -23,6 +24,10 @@ import 'core/services/share_receiver_service.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
+ // Enable edge-to-edge globally (back-compat on pre-Android 15)
+ // Pairs with Activity's EdgeToEdge.enable and our SafeArea usage.
+ await SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge);
+
final sharedPrefs = await SharedPreferences.getInstance();
const secureStorage = FlutterSecureStorage();