From d022b570f2e8922a24f30ce571f8c9d594b8cf86 Mon Sep 17 00:00:00 2001 From: jbibik Date: Mon, 10 Feb 2025 10:30:56 -0800 Subject: [PATCH] Upgrade Kotlin to 2.0.20 This upgrade allows us to use https://developer.android.com/develop/ui/compose/compiler as specified in https://developer.android.com/jetpack/androidx/releases/compose-kotlin#pre-release_kotlin_compatibility kotlinOptions is considered deprecated in preference of kotlin.compilerOptions (https://kotlinlang.org/docs/gradle-compiler-options.html#how-to-define-options) PiperOrigin-RevId: 725266131 --- RELEASENOTES.md | 2 ++ build.gradle | 3 ++- constants.gradle | 3 ++- demos/compose/build.gradle | 4 +--- demos/effect/build.gradle | 5 +---- libraries/common_ktx/build.gradle | 10 +++++++--- libraries/ui_compose/build.gradle | 14 +++++++------- 7 files changed, 22 insertions(+), 19 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 4f3190a62c..0982886994 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -3,6 +3,8 @@ ### Unreleased changes * Common Library: + * Upgrade Kotlin from 1.9.20 to 2.0.20 and use Compose Compiler Gradle + plugin. Upgrade KotlinX Coroutines library from 1.8.1 to 1.9.0. * ExoPlayer: * Transformer: * Add `MediaProjectionAssetLoader`, which provides media from a diff --git a/build.gradle b/build.gradle index 71669d042e..06c2cbca04 100644 --- a/build.gradle +++ b/build.gradle @@ -19,7 +19,8 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:8.3.2' classpath 'com.google.android.gms:strict-version-matcher-plugin:1.2.4' - classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.10' + classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.20' + classpath 'org.jetbrains.kotlin:compose-compiler-gradle-plugin:2.0.20' } } allprojects { diff --git a/constants.gradle b/constants.gradle index 6435940b63..95e16d13ee 100644 --- a/constants.gradle +++ b/constants.gradle @@ -30,7 +30,8 @@ project.ext { // https://cs.android.com/android/platform/superproject/main/+/main:external/guava/METADATA guavaVersion = '33.3.1-android' glideVersion = '4.14.2' - kotlinxCoroutinesVersion = '1.8.1' + // Not the same as kotlin version, https://github.com/Kotlin/kotlinx.coroutines/releases + kotlinxCoroutinesVersion = '1.9.0' leakCanaryVersion = '2.10' mockitoVersion = '3.12.4' robolectricVersion = '4.14.1' diff --git a/demos/compose/build.gradle b/demos/compose/build.gradle index 5897c3095e..379c0aa904 100644 --- a/demos/compose/build.gradle +++ b/demos/compose/build.gradle @@ -14,6 +14,7 @@ apply from: '../../constants.gradle' apply plugin: 'com.android.application' apply plugin: 'kotlin-android' +apply plugin: 'org.jetbrains.kotlin.plugin.compose' android { namespace 'androidx.media3.demo.compose' @@ -54,9 +55,6 @@ android { buildFeatures { compose true } - composeOptions { - kotlinCompilerExtensionVersion = "1.5.3" - } testOptions { unitTests { diff --git a/demos/effect/build.gradle b/demos/effect/build.gradle index d6b8b64d3d..261e5284b9 100644 --- a/demos/effect/build.gradle +++ b/demos/effect/build.gradle @@ -14,6 +14,7 @@ apply from: '../../constants.gradle' apply plugin: 'com.android.application' apply plugin: 'kotlin-android' +apply plugin: 'org.jetbrains.kotlin.plugin.compose' android { namespace 'androidx.media3.demo.effect' @@ -54,10 +55,6 @@ android { buildFeatures { compose true } - composeOptions { - kotlinCompilerExtensionVersion = "1.5.3" - } - testOptions { unitTests { includeAndroidResources = true diff --git a/libraries/common_ktx/build.gradle b/libraries/common_ktx/build.gradle index ac51e954c6..e45934a164 100644 --- a/libraries/common_ktx/build.gradle +++ b/libraries/common_ktx/build.gradle @@ -12,6 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + + apply from: "$gradle.ext.androidxMediaSettingsDir/common_library_config.gradle" apply plugin: 'kotlin-android' @@ -33,9 +36,10 @@ android { includeAndroidResources = true } } - - kotlinOptions { - jvmTarget = '1.8' + kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) + } } } diff --git a/libraries/ui_compose/build.gradle b/libraries/ui_compose/build.gradle index 3028249d3f..c64c1895bb 100644 --- a/libraries/ui_compose/build.gradle +++ b/libraries/ui_compose/build.gradle @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + apply from: "$gradle.ext.androidxMediaSettingsDir/common_library_config.gradle" apply plugin: 'kotlin-android' +apply plugin: 'org.jetbrains.kotlin.plugin.compose' android { namespace 'androidx.media3.ui.compose' @@ -36,13 +39,10 @@ android { includeAndroidResources = true } } - - kotlinOptions { - jvmTarget = '1.8' - } - // https://developer.android.com/jetpack/androidx/releases/compose-kotlin#pre-release_kotlin_compatibility - composeOptions { - kotlinCompilerExtensionVersion = "1.5.3" + kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) + } } }