diff --git a/.ci/legacy_project/README.md b/.ci/legacy_project/README.md index 322e5b6ca00..ff859c3b369 100644 --- a/.ci/legacy_project/README.md +++ b/.ci/legacy_project/README.md @@ -55,3 +55,5 @@ and then deleting everything but `android/` from it: from version 1.9.0 to 2.1.0. If a user runs into an error with the AGP version, the warning is clear on how to upgrade the version to one that we support. - Modifies `gradle.properties` to not set android.enableJetifier=true. +- Update `app/build.gradle` to enable library desugaring to support + `interactive_media_ads` plugin. diff --git a/.ci/legacy_project/all_packages/android/app/build.gradle b/.ci/legacy_project/all_packages/android/app/build.gradle index 541aeed1a22..9ec72af3691 100644 --- a/.ci/legacy_project/all_packages/android/app/build.gradle +++ b/.ci/legacy_project/all_packages/android/app/build.gradle @@ -26,6 +26,10 @@ android { namespace = "com.example.all_packages" compileSdkVersion flutter.compileSdkVersion + compileOptions { + coreLibraryDesugaringEnabled true + } + defaultConfig { applicationId "com.example.all_packages" minSdkVersion flutter.minSdkVersion @@ -44,3 +48,7 @@ android { flutter { source '../..' } + +dependencies { + coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.5' +} diff --git a/packages/interactive_media_ads/CHANGELOG.md b/packages/interactive_media_ads/CHANGELOG.md index 456b0b506d4..81462483be1 100644 --- a/packages/interactive_media_ads/CHANGELOG.md +++ b/packages/interactive_media_ads/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.2.8 + +* Bumps `com.google.ads.interactivemedia.v3:interactivemedia` from 3.36.0 to 3.37.0. +* Adds app desugaring as a requirement for Android apps. Apps without desugaring enabled won't build + with the current or future IMA versions. To enable app desugaring, see `README.md`. + ## 0.2.7 * Adds support to retrieve content time offsets at which ad breaks are scheduled. See diff --git a/packages/interactive_media_ads/android/build.gradle b/packages/interactive_media_ads/android/build.gradle index d9aecd0ed70..0790067dac8 100644 --- a/packages/interactive_media_ads/android/build.gradle +++ b/packages/interactive_media_ads/android/build.gradle @@ -50,7 +50,7 @@ android { dependencies { implementation("androidx.annotation:annotation:1.9.1") implementation("androidx.core:core-ktx:1.13.0") - implementation("com.google.ads.interactivemedia.v3:interactivemedia:3.36.0") + implementation("com.google.ads.interactivemedia.v3:interactivemedia:3.37.0") testImplementation("junit:junit:4.13.2") testImplementation("org.jetbrains.kotlin:kotlin-test") testImplementation("org.mockito.kotlin:mockito-kotlin:6.0.0") diff --git a/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/AdsRequestProxyApi.kt b/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/AdsRequestProxyApi.kt index fb74ed55930..2853cdf5d19 100644 --- a/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/AdsRequestProxyApi.kt +++ b/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/AdsRequestProxyApi.kt @@ -21,7 +21,7 @@ class AdsRequestProxyApi(override val pigeonRegistrar: ProxyApiRegistrar) : * * This must match the version in pubspec.yaml. */ - const val pluginVersion = "0.2.7" + const val pluginVersion = "0.2.8" } override fun setAdTagUrl(pigeon_instance: AdsRequest, adTagUrl: String) { diff --git a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdsRequestProxyAPIDelegate.swift b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdsRequestProxyAPIDelegate.swift index 6ac61aa981e..ea5e0d43096 100644 --- a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdsRequestProxyAPIDelegate.swift +++ b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdsRequestProxyAPIDelegate.swift @@ -13,7 +13,7 @@ class AdsRequestProxyAPIDelegate: PigeonApiDelegateIMAAdsRequest { /// The current version of the `interactive_media_ads` plugin. /// /// This must match the version in pubspec.yaml. - static let pluginVersion = "0.2.7" + static let pluginVersion = "0.2.8" func pigeonDefaultConstructor( pigeonApi: PigeonApiIMAAdsRequest, adTagUrl: String, adDisplayContainer: IMAAdDisplayContainer, diff --git a/packages/interactive_media_ads/pubspec.yaml b/packages/interactive_media_ads/pubspec.yaml index 385101a9c01..51d79c5a8b8 100644 --- a/packages/interactive_media_ads/pubspec.yaml +++ b/packages/interactive_media_ads/pubspec.yaml @@ -2,7 +2,7 @@ name: interactive_media_ads description: A Flutter plugin for using the Interactive Media Ads SDKs on Android and iOS. repository: https://github.com/flutter/packages/tree/main/packages/interactive_media_ads issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+interactive_media_ads%22 -version: 0.2.7 # This must match the version in +version: 0.2.8 # This must match the version in # `android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/AdsRequestProxyApi.kt` and # `ios/interactive_media_ads/Sources/interactive_media_ads/AdsRequestProxyAPIDelegate.swift` diff --git a/script/tool/lib/src/create_all_packages_app_command.dart b/script/tool/lib/src/create_all_packages_app_command.dart index d50dc0d22df..2afdd82d1dc 100644 --- a/script/tool/lib/src/create_all_packages_app_command.dart +++ b/script/tool/lib/src/create_all_packages_app_command.dart @@ -239,6 +239,11 @@ dependencies {} ? ' implementation("androidx.lifecycle:lifecycle-runtime:2.2.0-rc01")' : " implementation 'androidx.lifecycle:lifecycle-runtime:2.2.0-rc01'"; + // Desugaring is required for interactive_media_ads. + final String desugaringDependency = gradleFileIsKotlin + ? ' coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5")' + : " coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.5'"; + _adjustFile( gradleFile, replacements: >{ @@ -249,6 +254,14 @@ dependencies {} } }, regexReplacements: >{ + // Desugaring is required for interactive_media_ads. + RegExp(r'compileOptions\s+{$'): [ + 'compileOptions {', + if (gradleFileIsKotlin) + 'isCoreLibraryDesugaringEnabled = true' + else + 'coreLibraryDesugaringEnabled true', + ], // Tests for https://github.com/flutter/flutter/issues/43383 // Handling of 'dependencies' is more complex since it hasn't been very // stable across template versions. @@ -256,12 +269,14 @@ dependencies {} RegExp(r'^dependencies\s+{\s*}$'): [ 'dependencies {', lifecycleDependency, + desugaringDependency, '}', ], // - Handle a normal dependencies section. RegExp(r'^dependencies\s+{$'): [ 'dependencies {', lifecycleDependency, + desugaringDependency, ], // - See below for handling of the case where there is no dependencies // section.