From 30f9b14dc9486f1d38b53ff5b0bec3da71e1b015 Mon Sep 17 00:00:00 2001 From: Artur Cwiklinski Date: Wed, 24 Jun 2026 10:20:01 +0200 Subject: [PATCH] SDCB-19677 - make flutter3 sample compatible with Java 21 --- .../flutter3/my_app/android/app/build.gradle | 44 ++++++------------- .../flutter3/my_app/android/build.gradle | 15 +------ .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../flutter3/my_app/android/settings.gradle | 30 +++++++++---- .../flutter3/my_app/pubspec.yaml | 4 +- .../my_app/test_driver/integration_test.dart | 2 +- .../flutter3/run-tests-android-unit-widget.sh | 3 +- .../flutter3/run-tests-android.sh | 3 +- 8 files changed, 43 insertions(+), 60 deletions(-) diff --git a/samples/testing-frameworks/flutter3/my_app/android/app/build.gradle b/samples/testing-frameworks/flutter3/my_app/android/app/build.gradle index f0e8fed7..5f18a2e4 100644 --- a/samples/testing-frameworks/flutter3/my_app/android/app/build.gradle +++ b/samples/testing-frameworks/flutter3/my_app/android/app/build.gradle @@ -1,3 +1,9 @@ +plugins { + id "com.android.application" + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" +} + def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { @@ -6,36 +12,21 @@ if (localPropertiesFile.exists()) { } } -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - -def flutterVersionCode = localProperties.getProperty('flutter.versionCode') -if (flutterVersionCode == null) { - flutterVersionCode = '1' -} - -def flutterVersionName = localProperties.getProperty('flutter.versionName') -if (flutterVersionName == null) { - flutterVersionName = '1.0' -} - -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') ?: '1' +def flutterVersionName = localProperties.getProperty('flutter.versionName') ?: '1.0' android { - compileSdkVersion flutter.compileSdkVersion - ndkVersion flutter.ndkVersion + namespace "com.example.my_app" + compileSdk flutter.compileSdkVersion + ndkVersion "25.1.8937393" compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility JavaVersion.VERSION_21 + targetCompatibility JavaVersion.VERSION_21 } kotlinOptions { - jvmTarget = '1.8' + jvmTarget = '21' } sourceSets { @@ -43,10 +34,7 @@ android { } defaultConfig { - // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "com.example.my_app" - // You can update the following values to match your application needs. - // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. minSdkVersion flutter.minSdkVersion targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() @@ -55,7 +43,6 @@ android { buildTypes { release { - // TODO: Add your own signing config for the release build. // Signing with the debug keys for now, so `flutter run --release` works. signingConfig signingConfigs.debug } @@ -66,6 +53,3 @@ flutter { source '../..' } -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" -} diff --git a/samples/testing-frameworks/flutter3/my_app/android/build.gradle b/samples/testing-frameworks/flutter3/my_app/android/build.gradle index 83ae2200..bc157bd1 100644 --- a/samples/testing-frameworks/flutter3/my_app/android/build.gradle +++ b/samples/testing-frameworks/flutter3/my_app/android/build.gradle @@ -1,16 +1,3 @@ -buildscript { - ext.kotlin_version = '1.6.10' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:7.1.2' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - allprojects { repositories { google() @@ -26,6 +13,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/samples/testing-frameworks/flutter3/my_app/android/gradle/wrapper/gradle-wrapper.properties b/samples/testing-frameworks/flutter3/my_app/android/gradle/wrapper/gradle-wrapper.properties index cb24abda..3c85cfe0 100644 --- a/samples/testing-frameworks/flutter3/my_app/android/gradle/wrapper/gradle-wrapper.properties +++ b/samples/testing-frameworks/flutter3/my_app/android/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-all.zip diff --git a/samples/testing-frameworks/flutter3/my_app/android/settings.gradle b/samples/testing-frameworks/flutter3/my_app/android/settings.gradle index 44e62bcf..534fe65c 100644 --- a/samples/testing-frameworks/flutter3/my_app/android/settings.gradle +++ b/samples/testing-frameworks/flutter3/my_app/android/settings.gradle @@ -1,11 +1,25 @@ -include ':app' +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + }() -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "8.3.0" apply false + id "org.jetbrains.kotlin.android" version "2.0.0" apply false +} + +include ":app" diff --git a/samples/testing-frameworks/flutter3/my_app/pubspec.yaml b/samples/testing-frameworks/flutter3/my_app/pubspec.yaml index 3a5563f9..0fddaaa9 100644 --- a/samples/testing-frameworks/flutter3/my_app/pubspec.yaml +++ b/samples/testing-frameworks/flutter3/my_app/pubspec.yaml @@ -20,7 +20,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: '>=2.18.4 <3.0.0' + sdk: '>=3.5.0 <4.0.0' # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -50,7 +50,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^2.0.0 + flutter_lints: ^4.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/samples/testing-frameworks/flutter3/my_app/test_driver/integration_test.dart b/samples/testing-frameworks/flutter3/my_app/test_driver/integration_test.dart index 409f6b52..be78d5e6 100644 --- a/samples/testing-frameworks/flutter3/my_app/test_driver/integration_test.dart +++ b/samples/testing-frameworks/flutter3/my_app/test_driver/integration_test.dart @@ -3,7 +3,7 @@ import 'package:integration_test/integration_test_driver_extended.dart'; Future main() async { await integrationDriver( - onScreenshot: (String screenshotName, List screenshotBytes) async { + onScreenshot: (String screenshotName, List screenshotBytes, [Map? args]) async { final File image = await File('screenshots/$screenshotName.png').create(recursive: true); image.writeAsBytesSync(screenshotBytes); return true; diff --git a/samples/testing-frameworks/flutter3/run-tests-android-unit-widget.sh b/samples/testing-frameworks/flutter3/run-tests-android-unit-widget.sh index 07e45199..94b624e9 100755 --- a/samples/testing-frameworks/flutter3/run-tests-android-unit-widget.sh +++ b/samples/testing-frameworks/flutter3/run-tests-android-unit-widget.sh @@ -1,8 +1,7 @@ #!/bin/bash # Android unit and widget tests Bitbar cloud -# Already installed versions: 1.20.4, 2.10.5, 3.3.8 -VERSION=3.3.8 +VERSION=3.24.0 fvm install $VERSION fvm global $VERSION diff --git a/samples/testing-frameworks/flutter3/run-tests-android.sh b/samples/testing-frameworks/flutter3/run-tests-android.sh index 91be0916..ca49f6bf 100755 --- a/samples/testing-frameworks/flutter3/run-tests-android.sh +++ b/samples/testing-frameworks/flutter3/run-tests-android.sh @@ -1,8 +1,7 @@ #!/bin/bash # Android real device integration tests Bitbar cloud -# Already installed versions: 1.20.4, 2.10.5, 3.3.8 -VERSION=3.3.8 +VERSION=3.24.0 fvm install $VERSION fvm global $VERSION