diff --git a/CHANGELOG.md b/CHANGELOG.md index 0bbba61..8ee8551 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,13 @@ > - 🏠 Internal > - 💅 Polish +## Unreleased + +* 💥 The `minSdk` is now API 23 (Android 6.0 "Marshmallow"), to align with THEOplayer 10.0. ([#74](https://github.com/THEOplayer/android-ui/pull/74)) +* 💥 Open Video UI for Android is now compiled using the Kotlin 2 compiler. Update your app to use Kotlin Gradle Plugin 2.0.0 or newer. ([#74](https://github.com/THEOplayer/android-ui/pull/74)) +* 💥 Updated to Jetpack Compose version 1.9.0 ([BOM](https://developer.android.com/jetpack/compose/bom) 2025.08.01). +* 🚀 Added support for THEOplayer 10.0. ([#74](https://github.com/THEOplayer/android-ui/pull/74)) + ## v1.12.0 (2025-09-08) * 🚀 Added `PictureInPictureButton`. ([#19](https://github.com/THEOplayer/android-ui/issues/19), [#70](https://github.com/THEOplayer/android-ui/pull/70)) @@ -28,7 +35,7 @@ ## v1.10.0 (2025-04-02) -* 🚀 Added support for THEOplayer 9.0. ([#61](https://github.com/THEOplayer/android-ui/pulls/61)) +* 🚀 Added support for THEOplayer 9.0. ([#61](https://github.com/THEOplayer/android-ui/pull/61)) ## v1.9.4 (2024-12-18) @@ -61,7 +68,7 @@ ## v1.8.0 (2024-09-06) -* 🚀 Added support for THEOplayer 8.0. ([#37](https://github.com/THEOplayer/android-ui/pulls/37)) +* 🚀 Added support for THEOplayer 8.0. ([#37](https://github.com/THEOplayer/android-ui/pull/37)) ## v1.7.4 (2024-09-02) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index e318dec..fdc75c1 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,16 +1,20 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion + plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) + alias(libs.plugins.compose.compiler) } android { namespace = "com.theoplayer.android.ui.demo" - compileSdk = 35 + compileSdk = libs.versions.android.compileSdk.get().toInt() defaultConfig { applicationId = "com.theoplayer.android.ui.demo" - minSdk = 21 - targetSdk = 35 + minSdk = libs.versions.android.minSdk.get().toInt() + targetSdk = libs.versions.android.targetSdk.get().toInt() versionCode = 1 versionName = "1.0" @@ -38,15 +42,15 @@ android { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } - kotlinOptions { - jvmTarget = "1.8" + kotlin { + compilerOptions { + apiVersion = KotlinVersion.KOTLIN_2_0 + jvmTarget = JvmTarget.JVM_1_8 + } } buildFeatures { compose = true } - composeOptions { - kotlinCompilerExtensionVersion = "1.5.15" - } packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" diff --git a/build.gradle.kts b/build.gradle.kts index 99cc9dc..96bcfa5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -14,5 +14,6 @@ plugins { alias(libs.plugins.android.application) apply false alias(libs.plugins.android.library) apply false alias(libs.plugins.kotlin.android) apply false + alias(libs.plugins.compose.compiler) apply false alias(libs.plugins.dokka) apply false } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 514d23b..5cbcf20 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,19 +1,22 @@ [versions] -gradle = "8.7.3" -kotlin-gradle-plugin = "1.9.25" -ktx = "1.13.1" -lifecycle-compose = "2.8.7" -activity-compose = "1.9.3" -appcompat = "1.7.0" -compose-bom = "2024.11.00" +android-minSdk = "23" +android-compileSdk = "36" +android-targetSdk = "36" +gradle = "8.13.0" +kotlin = "2.2.10" +ktx = "1.17.0" +lifecycle-compose = "2.9.3" +activity-compose = "1.10.1" +appcompat = "1.7.1" +compose-bom = "2025.08.01" junit4 = "4.13.2" playServices-castFramework = "21.5.0" -ui-test-junit4 = "1.7.5" # ...not in BOM for some reason? -androidx-junit = "1.2.1" -androidx-espresso = "3.6.1" -androidx-mediarouter = "1.7.0" +ui-test-junit4 = "1.9.0" # ...not in BOM for some reason? +androidx-junit = "1.3.0" +androidx-espresso = "3.7.0" +androidx-mediarouter = "1.8.1" dokka = "2.0.0" -theoplayer = "9.2.0" +theoplayer = { prefer="9.2.0", strictly = "[5.0, 11.0)" } [libraries] androidx-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "ktx" } @@ -36,7 +39,7 @@ playServices-castFramework = { group = "com.google.android.gms", name = "play-se gradle-plugin = { group = "com.android.tools.build", name = "gradle", version.ref = "gradle" } dokka-base = { group = "org.jetbrains.dokka", name = "dokka-base", version.ref = "dokka" } dokka-plugin = { group = "org.jetbrains.dokka", name = "android-documentation-plugin", version.ref = "dokka" } -kotlin-gradle-plugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin-gradle-plugin" } +kotlin-gradle-plugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" } junit4 = { group = "junit", name = "junit", version.ref = "junit4" } theoplayer = { group = "com.theoplayer.theoplayer-sdk-android", name = "core", version.ref = "theoplayer" } theoplayer-ads-ima = { group = "com.theoplayer.theoplayer-sdk-android", name = "integration-ads-ima", version.ref = "theoplayer" } @@ -45,6 +48,7 @@ theoplayer-cast = { group = "com.theoplayer.theoplayer-sdk-android", name = "int [plugins] android-application = { id = "com.android.application", version.ref = "gradle" } android-library = { id = "com.android.library", version.ref = "gradle" } -kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin-gradle-plugin" } +kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } +compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } dokka-javadoc = { id = "org.jetbrains.dokka-javadoc" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index af7bb21..3c51327 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Mon Nov 20 16:01:06 CET 2023 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/ui/build.gradle.kts b/ui/build.gradle.kts index e75e894..1d18193 100644 --- a/ui/build.gradle.kts +++ b/ui/build.gradle.kts @@ -1,3 +1,5 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion import java.time.Year import kotlin.text.Typography.copyright @@ -10,6 +12,7 @@ buildscript { plugins { alias(libs.plugins.android.library) alias(libs.plugins.kotlin.android) + alias(libs.plugins.compose.compiler) alias(libs.plugins.dokka) alias(libs.plugins.dokka.javadoc) id("maven-publish") @@ -17,10 +20,10 @@ plugins { android { namespace = "com.theoplayer.android.ui" - compileSdk = 35 + compileSdk = libs.versions.android.compileSdk.get().toInt() defaultConfig { - minSdk = 21 + minSdk = libs.versions.android.minSdk.get().toInt() testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { @@ -41,15 +44,15 @@ android { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } - kotlinOptions { - jvmTarget = "1.8" + kotlin { + compilerOptions { + apiVersion = KotlinVersion.KOTLIN_2_0 + jvmTarget = JvmTarget.JVM_1_8 + } } buildFeatures { compose = true } - composeOptions { - kotlinCompilerExtensionVersion = "1.5.15" - } packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" @@ -82,11 +85,7 @@ dependencies { debugImplementation(libs.androidx.compose.ui.tooling) debugImplementation(libs.androidx.compose.ui.testManifest) - implementation(libs.theoplayer) { - version { - strictly("[5.0, 10.0)") - } - } + implementation(libs.theoplayer) dokkaPlugin(libs.dokka.plugin) }