diff --git a/packages/camera/camera_android/CHANGELOG.md b/packages/camera/camera_android/CHANGELOG.md index a3508826254d..7b3f6e1bd127 100644 --- a/packages/camera/camera_android/CHANGELOG.md +++ b/packages/camera/camera_android/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.10.12+1 + +* Updates Robolectric to 4.17 and adds the JVM arguments it requires for unit tests. + ## 0.10.12 * Adds support for custom video output path in video recording. diff --git a/packages/camera/camera_android/android/build.gradle.kts b/packages/camera/camera_android/android/build.gradle.kts index d73b259cc13c..cb2613fdde0e 100644 --- a/packages/camera/camera_android/android/build.gradle.kts +++ b/packages/camera/camera_android/android/build.gradle.kts @@ -66,6 +66,22 @@ android { // sets the heap size to a size large enough to run the robolectric tests across // multiple SDK levels. it.jvmArgs("-Xmx4G") + // JDK 17+ blocks reflective access to JDK internals by default. Starting + // with 4.17, Robolectric's test environment setup reflects into + // jdk.internal.access, so these are required. This is the flag set + // recommended by Robolectric, see + // https://robolectric.org/getting-started/#running-with-java-17-and-higher + it.jvmArgs( + "--add-opens=java.base/java.lang=ALL-UNNAMED", + "--add-opens=java.base/java.util=ALL-UNNAMED", + "--add-opens=java.base/java.io=ALL-UNNAMED", + "--add-opens=java.base/java.net=ALL-UNNAMED", + "--add-opens=java.base/java.security=ALL-UNNAMED", + "--add-opens=java.base/java.text=ALL-UNNAMED", + "--add-opens=java.base/jdk.internal.access=ALL-UNNAMED", + "--add-opens=java.desktop/java.awt.font=ALL-UNNAMED", + "--add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", + ) } } } @@ -76,5 +92,5 @@ dependencies { testImplementation("junit:junit:4.13.2") testImplementation("org.mockito:mockito-core:5.23.0") testImplementation("androidx.test:core:1.7.0") - testImplementation("org.robolectric:robolectric:4.16") + testImplementation("org.robolectric:robolectric:4.17") } diff --git a/packages/camera/camera_android/pubspec.yaml b/packages/camera/camera_android/pubspec.yaml index eee55dccbabe..6455ed0ec716 100644 --- a/packages/camera/camera_android/pubspec.yaml +++ b/packages/camera/camera_android/pubspec.yaml @@ -3,7 +3,7 @@ description: Android implementation of the camera plugin. repository: https://github.com/flutter/packages/tree/main/packages/camera/camera_android issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22 -version: 0.10.12 +version: 0.10.12+1 environment: sdk: ^3.11.0 diff --git a/packages/camera/camera_android_camerax/CHANGELOG.md b/packages/camera/camera_android_camerax/CHANGELOG.md index 9e8fa13ac644..963f3582262d 100644 --- a/packages/camera/camera_android_camerax/CHANGELOG.md +++ b/packages/camera/camera_android_camerax/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.5+1 + +* Updates Robolectric to 4.17 and adds the JVM arguments it requires for unit tests. + ## 0.7.5 * Adds support for custom video output path in video recording. diff --git a/packages/camera/camera_android_camerax/android/build.gradle.kts b/packages/camera/camera_android_camerax/android/build.gradle.kts index 52315b3fc7a0..8b3e8d7a5839 100644 --- a/packages/camera/camera_android_camerax/android/build.gradle.kts +++ b/packages/camera/camera_android_camerax/android/build.gradle.kts @@ -62,6 +62,22 @@ android { // sets the heap size to a size large enough to run the robolectric tests across // multiple SDK levels. it.jvmArgs("-Xmx1G") + // JDK 17+ blocks reflective access to JDK internals by default. Starting + // with 4.17, Robolectric's test environment setup reflects into + // jdk.internal.access, so these are required. This is the flag set + // recommended by Robolectric, see + // https://robolectric.org/getting-started/#running-with-java-17-and-higher + it.jvmArgs( + "--add-opens=java.base/java.lang=ALL-UNNAMED", + "--add-opens=java.base/java.util=ALL-UNNAMED", + "--add-opens=java.base/java.io=ALL-UNNAMED", + "--add-opens=java.base/java.net=ALL-UNNAMED", + "--add-opens=java.base/java.security=ALL-UNNAMED", + "--add-opens=java.base/java.text=ALL-UNNAMED", + "--add-opens=java.base/jdk.internal.access=ALL-UNNAMED", + "--add-opens=java.desktop/java.awt.font=ALL-UNNAMED", + "--add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", + ) } } } @@ -86,5 +102,5 @@ dependencies { testImplementation("org.mockito:mockito-core:5.23.0") testImplementation("org.mockito:mockito-inline:5.2.0") testImplementation("androidx.test:core:1.7.0") - testImplementation("org.robolectric:robolectric:4.16") + testImplementation("org.robolectric:robolectric:4.17") } diff --git a/packages/camera/camera_android_camerax/pubspec.yaml b/packages/camera/camera_android_camerax/pubspec.yaml index 14355426e186..e44581040423 100644 --- a/packages/camera/camera_android_camerax/pubspec.yaml +++ b/packages/camera/camera_android_camerax/pubspec.yaml @@ -2,7 +2,7 @@ name: camera_android_camerax description: Android implementation of the camera plugin using the CameraX library. repository: https://github.com/flutter/packages/tree/main/packages/camera/camera_android_camerax issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22 -version: 0.7.5 +version: 0.7.5+1 environment: sdk: ^3.12.0 diff --git a/packages/file_selector/file_selector_android/CHANGELOG.md b/packages/file_selector/file_selector_android/CHANGELOG.md index 2604afdafaeb..002455e7520d 100644 --- a/packages/file_selector/file_selector_android/CHANGELOG.md +++ b/packages/file_selector/file_selector_android/CHANGELOG.md @@ -1,5 +1,6 @@ -## NEXT +## 0.5.2+12 +* Updates Robolectric to 4.17 and adds the JVM arguments it requires for unit tests. * Updates minimum supported SDK version to Flutter 3.41/Dart 3.11. ## 0.5.2+11 diff --git a/packages/file_selector/file_selector_android/android/build.gradle.kts b/packages/file_selector/file_selector_android/android/build.gradle.kts index d2ec4a560020..be891897d80d 100644 --- a/packages/file_selector/file_selector_android/android/build.gradle.kts +++ b/packages/file_selector/file_selector_android/android/build.gradle.kts @@ -49,7 +49,7 @@ android { testImplementation("junit:junit:4.13.2") testImplementation("org.mockito:mockito-core:5.23.0") testImplementation("androidx.test:core:1.7.0") - testImplementation("org.robolectric:robolectric:4.16") + testImplementation("org.robolectric:robolectric:4.17") } lint { @@ -68,6 +68,22 @@ android { events("passed", "skipped", "failed", "standardOut", "standardError") showStandardStreams = true } + // JDK 17+ blocks reflective access to JDK internals by default. Starting + // with 4.17, Robolectric's test environment setup reflects into + // jdk.internal.access, so these are required. This is the flag set + // recommended by Robolectric, see + // https://robolectric.org/getting-started/#running-with-java-17-and-higher + it.jvmArgs( + "--add-opens=java.base/java.lang=ALL-UNNAMED", + "--add-opens=java.base/java.util=ALL-UNNAMED", + "--add-opens=java.base/java.io=ALL-UNNAMED", + "--add-opens=java.base/java.net=ALL-UNNAMED", + "--add-opens=java.base/java.security=ALL-UNNAMED", + "--add-opens=java.base/java.text=ALL-UNNAMED", + "--add-opens=java.base/jdk.internal.access=ALL-UNNAMED", + "--add-opens=java.desktop/java.awt.font=ALL-UNNAMED", + "--add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", + ) } } } diff --git a/packages/file_selector/file_selector_android/pubspec.yaml b/packages/file_selector/file_selector_android/pubspec.yaml index 009bffc61a8a..eefb45954ce2 100644 --- a/packages/file_selector/file_selector_android/pubspec.yaml +++ b/packages/file_selector/file_selector_android/pubspec.yaml @@ -2,7 +2,7 @@ name: file_selector_android description: Android implementation of the file_selector package. repository: https://github.com/flutter/packages/tree/main/packages/file_selector/file_selector_android issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+file_selector%22 -version: 0.5.2+11 +version: 0.5.2+12 environment: sdk: ^3.12.0 diff --git a/packages/google_maps_flutter/google_maps_flutter_android/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter_android/CHANGELOG.md index b12bfe1b6aad..aaab1b345450 100644 --- a/packages/google_maps_flutter/google_maps_flutter_android/CHANGELOG.md +++ b/packages/google_maps_flutter/google_maps_flutter_android/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.20.1 + +* Updates Robolectric to 4.17 and adds the JVM arguments it requires for unit tests. + ## 2.20.0 * Adds support for tapping points of interest on the map. diff --git a/packages/google_maps_flutter/google_maps_flutter_android/android/build.gradle.kts b/packages/google_maps_flutter/google_maps_flutter_android/android/build.gradle.kts index 2072e33c085d..fe6aabcfd7cc 100644 --- a/packages/google_maps_flutter/google_maps_flutter_android/android/build.gradle.kts +++ b/packages/google_maps_flutter/google_maps_flutter_android/android/build.gradle.kts @@ -56,7 +56,7 @@ android { testImplementation("junit:junit:4.13.2") testImplementation("org.mockito:mockito-core:5.23.0") testImplementation("androidx.test:core:1.7.0") - testImplementation("org.robolectric:robolectric:4.16") + testImplementation("org.robolectric:robolectric:4.17") } compileOptions { @@ -79,6 +79,22 @@ android { // sets the heap size to a size large enough to run the robolectric tests across // multiple SDK levels. it.jvmArgs("-Xmx4G") + // JDK 17+ blocks reflective access to JDK internals by default. Starting + // with 4.17, Robolectric's test environment setup reflects into + // jdk.internal.access, so these are required. This is the flag set + // recommended by Robolectric, see + // https://robolectric.org/getting-started/#running-with-java-17-and-higher + it.jvmArgs( + "--add-opens=java.base/java.lang=ALL-UNNAMED", + "--add-opens=java.base/java.util=ALL-UNNAMED", + "--add-opens=java.base/java.io=ALL-UNNAMED", + "--add-opens=java.base/java.net=ALL-UNNAMED", + "--add-opens=java.base/java.security=ALL-UNNAMED", + "--add-opens=java.base/java.text=ALL-UNNAMED", + "--add-opens=java.base/jdk.internal.access=ALL-UNNAMED", + "--add-opens=java.desktop/java.awt.font=ALL-UNNAMED", + "--add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", + ) } } } diff --git a/packages/google_maps_flutter/google_maps_flutter_android/pubspec.yaml b/packages/google_maps_flutter/google_maps_flutter_android/pubspec.yaml index ed87d07f165e..89b9919f60e9 100644 --- a/packages/google_maps_flutter/google_maps_flutter_android/pubspec.yaml +++ b/packages/google_maps_flutter/google_maps_flutter_android/pubspec.yaml @@ -2,7 +2,7 @@ name: google_maps_flutter_android description: Android implementation of the google_maps_flutter plugin. repository: https://github.com/flutter/packages/tree/main/packages/google_maps_flutter/google_maps_flutter_android issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+maps%22 -version: 2.20.0 +version: 2.20.1 environment: sdk: ^3.12.0 diff --git a/packages/image_picker/image_picker_android/CHANGELOG.md b/packages/image_picker/image_picker_android/CHANGELOG.md index 04c68c76589c..74093ffe050a 100644 --- a/packages/image_picker/image_picker_android/CHANGELOG.md +++ b/packages/image_picker/image_picker_android/CHANGELOG.md @@ -1,5 +1,6 @@ -## NEXT +## 0.8.13+24 +* Updates Robolectric to 4.17 and adds the JVM arguments it requires for unit tests. * Updates minimum supported SDK version to Flutter 3.41/Dart 3.11. ## 0.8.13+23 diff --git a/packages/image_picker/image_picker_android/android/build.gradle.kts b/packages/image_picker/image_picker_android/android/build.gradle.kts index 4845e413208a..b06f0e73bc95 100644 --- a/packages/image_picker/image_picker_android/android/build.gradle.kts +++ b/packages/image_picker/image_picker_android/android/build.gradle.kts @@ -55,7 +55,7 @@ android { testImplementation("junit:junit:4.13.2") testImplementation("org.mockito:mockito-core:5.23.0") testImplementation("androidx.test:core:1.7.0") - testImplementation("org.robolectric:robolectric:4.16") + testImplementation("org.robolectric:robolectric:4.17") } compileOptions { @@ -73,6 +73,22 @@ android { events("passed", "skipped", "failed", "standardOut", "standardError") showStandardStreams = true } + // JDK 17+ blocks reflective access to JDK internals by default. Starting + // with 4.17, Robolectric's test environment setup reflects into + // jdk.internal.access, so these are required. This is the flag set + // recommended by Robolectric, see + // https://robolectric.org/getting-started/#running-with-java-17-and-higher + it.jvmArgs( + "--add-opens=java.base/java.lang=ALL-UNNAMED", + "--add-opens=java.base/java.util=ALL-UNNAMED", + "--add-opens=java.base/java.io=ALL-UNNAMED", + "--add-opens=java.base/java.net=ALL-UNNAMED", + "--add-opens=java.base/java.security=ALL-UNNAMED", + "--add-opens=java.base/java.text=ALL-UNNAMED", + "--add-opens=java.base/jdk.internal.access=ALL-UNNAMED", + "--add-opens=java.desktop/java.awt.font=ALL-UNNAMED", + "--add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", + ) } } } diff --git a/packages/image_picker/image_picker_android/pubspec.yaml b/packages/image_picker/image_picker_android/pubspec.yaml index 380ac81c23fd..115814d66318 100755 --- a/packages/image_picker/image_picker_android/pubspec.yaml +++ b/packages/image_picker/image_picker_android/pubspec.yaml @@ -2,7 +2,7 @@ name: image_picker_android description: Android implementation of the image_picker plugin. repository: https://github.com/flutter/packages/tree/main/packages/image_picker/image_picker_android issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+image_picker%22 -version: 0.8.13+23 +version: 0.8.13+24 environment: sdk: ^3.12.0 diff --git a/packages/in_app_purchase/in_app_purchase_android/CHANGELOG.md b/packages/in_app_purchase/in_app_purchase_android/CHANGELOG.md index 9bc8e603fd48..4b45d163b03b 100644 --- a/packages/in_app_purchase/in_app_purchase_android/CHANGELOG.md +++ b/packages/in_app_purchase/in_app_purchase_android/CHANGELOG.md @@ -1,5 +1,6 @@ -## NEXT +## 0.5.3+1 +* Updates Robolectric to 4.17 and adds the JVM arguments it requires for unit tests. * Updates minimum supported SDK version to Flutter 3.41/Dart 3.11. ## 0.5.3 diff --git a/packages/in_app_purchase/in_app_purchase_android/android/build.gradle.kts b/packages/in_app_purchase/in_app_purchase_android/android/build.gradle.kts index ec2ccb82cc1d..e9259bed39f4 100644 --- a/packages/in_app_purchase/in_app_purchase_android/android/build.gradle.kts +++ b/packages/in_app_purchase/in_app_purchase_android/android/build.gradle.kts @@ -66,6 +66,22 @@ android { events("passed", "skipped", "failed", "standardOut", "standardError") showStandardStreams = true } + // JDK 17+ blocks reflective access to JDK internals by default. Starting + // with 4.17, Robolectric's test environment setup reflects into + // jdk.internal.access, so these are required. This is the flag set + // recommended by Robolectric, see + // https://robolectric.org/getting-started/#running-with-java-17-and-higher + it.jvmArgs( + "--add-opens=java.base/java.lang=ALL-UNNAMED", + "--add-opens=java.base/java.util=ALL-UNNAMED", + "--add-opens=java.base/java.io=ALL-UNNAMED", + "--add-opens=java.base/java.net=ALL-UNNAMED", + "--add-opens=java.base/java.security=ALL-UNNAMED", + "--add-opens=java.base/java.text=ALL-UNNAMED", + "--add-opens=java.base/jdk.internal.access=ALL-UNNAMED", + "--add-opens=java.desktop/java.awt.font=ALL-UNNAMED", + "--add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", + ) } } } @@ -78,7 +94,7 @@ dependencies { testImplementation("org.json:json:20251224") testImplementation("org.mockito:mockito-core:5.23.0") testImplementation("androidx.test:core:1.7.0") - testImplementation("org.robolectric:robolectric:4.16") + testImplementation("org.robolectric:robolectric:4.17") androidTestImplementation("androidx.test:runner:1.7.0") androidTestImplementation("androidx.test.espresso:espresso-core:3.7.0") } diff --git a/packages/in_app_purchase/in_app_purchase_android/pubspec.yaml b/packages/in_app_purchase/in_app_purchase_android/pubspec.yaml index fe84c46eb993..33d30afe49f4 100644 --- a/packages/in_app_purchase/in_app_purchase_android/pubspec.yaml +++ b/packages/in_app_purchase/in_app_purchase_android/pubspec.yaml @@ -3,7 +3,7 @@ description: An implementation for the Android platform of the Flutter `in_app_p repository: https://github.com/flutter/packages/tree/main/packages/in_app_purchase/in_app_purchase_android issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+in_app_purchase%22 -version: 0.5.3 +version: 0.5.3+1 environment: sdk: ^3.12.0 diff --git a/packages/local_auth/local_auth_android/CHANGELOG.md b/packages/local_auth/local_auth_android/CHANGELOG.md index 7128549659f6..f0804744f212 100644 --- a/packages/local_auth/local_auth_android/CHANGELOG.md +++ b/packages/local_auth/local_auth_android/CHANGELOG.md @@ -1,5 +1,6 @@ -## NEXT +## 2.2.1 +* Updates Robolectric to 4.17 and adds the JVM arguments it requires for unit tests. * Updates minimum supported SDK version to Flutter 3.41/Dart 3.11. ## 2.2.0 diff --git a/packages/local_auth/local_auth_android/android/build.gradle.kts b/packages/local_auth/local_auth_android/android/build.gradle.kts index 617f141bbf32..5a50e287379a 100644 --- a/packages/local_auth/local_auth_android/android/build.gradle.kts +++ b/packages/local_auth/local_auth_android/android/build.gradle.kts @@ -61,6 +61,22 @@ android { events("passed", "skipped", "failed", "standardOut", "standardError") showStandardStreams = true } + // JDK 17+ blocks reflective access to JDK internals by default. Starting + // with 4.17, Robolectric's test environment setup reflects into + // jdk.internal.access, so these are required. This is the flag set + // recommended by Robolectric, see + // https://robolectric.org/getting-started/#running-with-java-17-and-higher + it.jvmArgs( + "--add-opens=java.base/java.lang=ALL-UNNAMED", + "--add-opens=java.base/java.util=ALL-UNNAMED", + "--add-opens=java.base/java.io=ALL-UNNAMED", + "--add-opens=java.base/java.net=ALL-UNNAMED", + "--add-opens=java.base/java.security=ALL-UNNAMED", + "--add-opens=java.base/java.text=ALL-UNNAMED", + "--add-opens=java.base/jdk.internal.access=ALL-UNNAMED", + "--add-opens=java.desktop/java.awt.font=ALL-UNNAMED", + "--add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", + ) } } } @@ -73,7 +89,7 @@ dependencies { testImplementation("junit:junit:4.13.2") testImplementation("org.mockito:mockito-core:5.23.0") testImplementation("org.mockito.kotlin:mockito-kotlin:6.3.0") - testImplementation("org.robolectric:robolectric:4.16") + testImplementation("org.robolectric:robolectric:4.17") androidTestImplementation("androidx.test:runner:1.7.0") androidTestImplementation("androidx.test:rules:1.7.0") androidTestImplementation("androidx.test.espresso:espresso-core:3.7.0") diff --git a/packages/local_auth/local_auth_android/pubspec.yaml b/packages/local_auth/local_auth_android/pubspec.yaml index ea94e27a97da..d387bdd83760 100644 --- a/packages/local_auth/local_auth_android/pubspec.yaml +++ b/packages/local_auth/local_auth_android/pubspec.yaml @@ -2,7 +2,7 @@ name: local_auth_android description: Android implementation of the local_auth plugin. repository: https://github.com/flutter/packages/tree/main/packages/local_auth/local_auth_android issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+local_auth%22 -version: 2.2.0 +version: 2.2.1 environment: sdk: ^3.12.0 diff --git a/packages/shared_preferences/shared_preferences_android/CHANGELOG.md b/packages/shared_preferences/shared_preferences_android/CHANGELOG.md index 043403b2551f..27c9245d8ad2 100644 --- a/packages/shared_preferences/shared_preferences_android/CHANGELOG.md +++ b/packages/shared_preferences/shared_preferences_android/CHANGELOG.md @@ -1,5 +1,6 @@ -## NEXT +## 2.4.29 +* Updates Robolectric to 4.17 and adds the JVM arguments it requires for unit tests. * Updates minimum supported SDK version to Flutter 3.41/Dart 3.11. ## 2.4.28 diff --git a/packages/shared_preferences/shared_preferences_android/android/build.gradle.kts b/packages/shared_preferences/shared_preferences_android/android/build.gradle.kts index c943f007fddf..c47b3f5dfd31 100644 --- a/packages/shared_preferences/shared_preferences_android/android/build.gradle.kts +++ b/packages/shared_preferences/shared_preferences_android/android/build.gradle.kts @@ -65,7 +65,7 @@ android { testImplementation("junit:junit:4.13.2") testImplementation("androidx.test:core-ktx:1.7.0") testImplementation("androidx.test.ext:junit-ktx:1.3.0") - testImplementation("org.robolectric:robolectric:4.16") + testImplementation("org.robolectric:robolectric:4.17") testImplementation("org.mockito:mockito-inline:5.2.0") testImplementation("io.mockk:mockk:1.14.11") } @@ -80,6 +80,22 @@ android { events("passed", "skipped", "failed", "standardOut", "standardError") showStandardStreams = true } + // JDK 17+ blocks reflective access to JDK internals by default. Starting + // with 4.17, Robolectric's test environment setup reflects into + // jdk.internal.access, so these are required. This is the flag set + // recommended by Robolectric, see + // https://robolectric.org/getting-started/#running-with-java-17-and-higher + it.jvmArgs( + "--add-opens=java.base/java.lang=ALL-UNNAMED", + "--add-opens=java.base/java.util=ALL-UNNAMED", + "--add-opens=java.base/java.io=ALL-UNNAMED", + "--add-opens=java.base/java.net=ALL-UNNAMED", + "--add-opens=java.base/java.security=ALL-UNNAMED", + "--add-opens=java.base/java.text=ALL-UNNAMED", + "--add-opens=java.base/jdk.internal.access=ALL-UNNAMED", + "--add-opens=java.desktop/java.awt.font=ALL-UNNAMED", + "--add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", + ) } } } diff --git a/packages/shared_preferences/shared_preferences_android/pubspec.yaml b/packages/shared_preferences/shared_preferences_android/pubspec.yaml index 36f60994a664..10f21e6620f3 100644 --- a/packages/shared_preferences/shared_preferences_android/pubspec.yaml +++ b/packages/shared_preferences/shared_preferences_android/pubspec.yaml @@ -2,7 +2,7 @@ name: shared_preferences_android description: Android implementation of the shared_preferences plugin repository: https://github.com/flutter/packages/tree/main/packages/shared_preferences/shared_preferences_android issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+shared_preferences%22 -version: 2.4.28 +version: 2.4.29 environment: sdk: ^3.12.0 diff --git a/packages/url_launcher/url_launcher_android/CHANGELOG.md b/packages/url_launcher/url_launcher_android/CHANGELOG.md index 21504d18d7ff..5ec0c2ff3a55 100644 --- a/packages/url_launcher/url_launcher_android/CHANGELOG.md +++ b/packages/url_launcher/url_launcher_android/CHANGELOG.md @@ -1,5 +1,6 @@ -## NEXT +## 6.3.34 +* Updates Robolectric to 4.17 and adds the JVM arguments it requires for unit tests. * Updates minimum supported SDK version to Flutter 3.41/Dart 3.11. ## 6.3.33 diff --git a/packages/url_launcher/url_launcher_android/android/build.gradle.kts b/packages/url_launcher/url_launcher_android/android/build.gradle.kts index b1158c9d304f..1860130e5b33 100644 --- a/packages/url_launcher/url_launcher_android/android/build.gradle.kts +++ b/packages/url_launcher/url_launcher_android/android/build.gradle.kts @@ -65,6 +65,22 @@ android { events("passed", "skipped", "failed", "standardOut", "standardError") showStandardStreams = true } + // JDK 17+ blocks reflective access to JDK internals by default. Starting + // with 4.17, Robolectric's test environment setup reflects into + // jdk.internal.access, so these are required. This is the flag set + // recommended by Robolectric, see + // https://robolectric.org/getting-started/#running-with-java-17-and-higher + it.jvmArgs( + "--add-opens=java.base/java.lang=ALL-UNNAMED", + "--add-opens=java.base/java.util=ALL-UNNAMED", + "--add-opens=java.base/java.io=ALL-UNNAMED", + "--add-opens=java.base/java.net=ALL-UNNAMED", + "--add-opens=java.base/java.security=ALL-UNNAMED", + "--add-opens=java.base/java.text=ALL-UNNAMED", + "--add-opens=java.base/jdk.internal.access=ALL-UNNAMED", + "--add-opens=java.desktop/java.awt.font=ALL-UNNAMED", + "--add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", + ) } } } @@ -78,5 +94,5 @@ dependencies { testImplementation("junit:junit:4.13.2") testImplementation("org.mockito:mockito-core:5.23.0") testImplementation("androidx.test:core:1.7.0") - testImplementation("org.robolectric:robolectric:4.16") + testImplementation("org.robolectric:robolectric:4.17") } diff --git a/packages/url_launcher/url_launcher_android/pubspec.yaml b/packages/url_launcher/url_launcher_android/pubspec.yaml index 9fdb3f5c3f9f..5b66f236914d 100644 --- a/packages/url_launcher/url_launcher_android/pubspec.yaml +++ b/packages/url_launcher/url_launcher_android/pubspec.yaml @@ -2,7 +2,7 @@ name: url_launcher_android description: Android implementation of the url_launcher plugin. repository: https://github.com/flutter/packages/tree/main/packages/url_launcher/url_launcher_android issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+url_launcher%22 -version: 6.3.33 +version: 6.3.34 environment: sdk: ^3.12.0 diff --git a/packages/video_player/video_player/CHANGELOG.md b/packages/video_player/video_player/CHANGELOG.md index 8e5acaa35ef4..774ec219157e 100644 --- a/packages/video_player/video_player/CHANGELOG.md +++ b/packages/video_player/video_player/CHANGELOG.md @@ -1,5 +1,6 @@ ## NEXT +* Updates the example app to Robolectric 4.17. * Updates minimum supported SDK version to Flutter 3.41/Dart 3.11. ## 2.14.0 diff --git a/packages/video_player/video_player/example/android/app/build.gradle.kts b/packages/video_player/video_player/example/android/app/build.gradle.kts index 313b1b88a9ee..a09deca9715f 100644 --- a/packages/video_player/video_player/example/android/app/build.gradle.kts +++ b/packages/video_player/video_player/example/android/app/build.gradle.kts @@ -43,7 +43,7 @@ flutter { dependencies { testImplementation("junit:junit:4.13.2") - testImplementation("org.robolectric:robolectric:4.16") + testImplementation("org.robolectric:robolectric:4.17") testImplementation("org.mockito:mockito-core:5.0.0") androidTestImplementation("androidx.test:runner:1.1.1") androidTestImplementation("androidx.test.espresso:espresso-core:3.1.1") diff --git a/packages/video_player/video_player_android/CHANGELOG.md b/packages/video_player/video_player_android/CHANGELOG.md index 939eb3b3f12b..77443c5fc202 100644 --- a/packages/video_player/video_player_android/CHANGELOG.md +++ b/packages/video_player/video_player_android/CHANGELOG.md @@ -1,5 +1,6 @@ -## NEXT +## 2.12.3 +* Updates Robolectric to 4.17 and adds the JVM arguments it requires for unit tests. * Updates minimum supported SDK version to Flutter 3.41/Dart 3.11. ## 2.12.2 diff --git a/packages/video_player/video_player_android/android/build.gradle.kts b/packages/video_player/video_player_android/android/build.gradle.kts index 78e6afc94c99..4d1fea1c8e07 100644 --- a/packages/video_player/video_player_android/android/build.gradle.kts +++ b/packages/video_player/video_player_android/android/build.gradle.kts @@ -62,7 +62,13 @@ android { testImplementation("junit:junit:4.13.2") testImplementation("androidx.test:core:1.7.0") testImplementation("org.mockito:mockito-core:5.23.0") - testImplementation("org.robolectric:robolectric:4.16") + testImplementation("org.robolectric:robolectric:4.17") + // Robolectric 4.17 added a JSR 305 @GuardedBy annotation to ShadowView (the + // superclass of ShadowSurfaceView, used by PlatformVideoViewTest) without + // declaring a dependency on jsr305. javac warns when a referenced class has an + // annotation it can't resolve, and the example app compiles this project with + // -Xlint:all -Werror, so the test compile fails without jsr305. + testImplementation("com.google.code.findbugs:jsr305:3.0.2") testImplementation("androidx.media3:media3-test-utils:${exoplayerVersion}") } @@ -81,6 +87,22 @@ android { // sets the heap size to a size large enough to run the robolectric tests across // multiple SDK levels. it.jvmArgs("-Xmx4G") + // JDK 17+ blocks reflective access to JDK internals by default. Starting + // with 4.17, Robolectric's test environment setup reflects into + // jdk.internal.access, so these are required. This is the flag set + // recommended by Robolectric, see + // https://robolectric.org/getting-started/#running-with-java-17-and-higher + it.jvmArgs( + "--add-opens=java.base/java.lang=ALL-UNNAMED", + "--add-opens=java.base/java.util=ALL-UNNAMED", + "--add-opens=java.base/java.io=ALL-UNNAMED", + "--add-opens=java.base/java.net=ALL-UNNAMED", + "--add-opens=java.base/java.security=ALL-UNNAMED", + "--add-opens=java.base/java.text=ALL-UNNAMED", + "--add-opens=java.base/jdk.internal.access=ALL-UNNAMED", + "--add-opens=java.desktop/java.awt.font=ALL-UNNAMED", + "--add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", + ) } } } diff --git a/packages/video_player/video_player_android/example/android/app/build.gradle.kts b/packages/video_player/video_player_android/example/android/app/build.gradle.kts index b918d6adf397..ac26f1928a98 100644 --- a/packages/video_player/video_player_android/example/android/app/build.gradle.kts +++ b/packages/video_player/video_player_android/example/android/app/build.gradle.kts @@ -26,6 +26,28 @@ android { signingConfig = signingConfigs.getByName("debug") } } + testOptions { + unitTests { + all { + // JDK 17+ blocks reflective access to JDK internals by default. Starting + // with 4.17, Robolectric's test environment setup reflects into + // jdk.internal.access, so these are required. This is the flag set + // recommended by Robolectric, see + // https://robolectric.org/getting-started/#running-with-java-17-and-higher + it.jvmArgs( + "--add-opens=java.base/java.lang=ALL-UNNAMED", + "--add-opens=java.base/java.util=ALL-UNNAMED", + "--add-opens=java.base/java.io=ALL-UNNAMED", + "--add-opens=java.base/java.net=ALL-UNNAMED", + "--add-opens=java.base/java.security=ALL-UNNAMED", + "--add-opens=java.base/java.text=ALL-UNNAMED", + "--add-opens=java.base/jdk.internal.access=ALL-UNNAMED", + "--add-opens=java.desktop/java.awt.font=ALL-UNNAMED", + "--add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", + ) + } + } + } lint { disable.add("InvalidPackage") } @@ -45,7 +67,7 @@ dependencies { testImplementation("androidx.test.ext:junit:1.2.1") testImplementation("com.google.truth:truth:1.1.3") testImplementation("junit:junit:4.13") - testImplementation("org.robolectric:robolectric:4.16") + testImplementation("org.robolectric:robolectric:4.17") testImplementation("org.mockito:mockito-core:5.17.0") androidTestImplementation("androidx.test:runner:1.1.1") androidTestImplementation("androidx.test.espresso:espresso-core:3.1.1") diff --git a/packages/video_player/video_player_android/pubspec.yaml b/packages/video_player/video_player_android/pubspec.yaml index fb3fca6317ac..a2b7f4b9f3db 100644 --- a/packages/video_player/video_player_android/pubspec.yaml +++ b/packages/video_player/video_player_android/pubspec.yaml @@ -2,7 +2,7 @@ name: video_player_android description: Android implementation of the video_player plugin. repository: https://github.com/flutter/packages/tree/main/packages/video_player/video_player_android issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+video_player%22 -version: 2.12.2 +version: 2.12.3 environment: sdk: ^3.12.0