diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 93919fb..43affde 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: uses: actions/setup-java@v5 with: distribution: temurin - java-version: 17 + java-version: 21 - name: Setup Gradle uses: gradle/actions/setup-gradle@v6 with: diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 4b9c9dd..7602852 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -32,7 +32,7 @@ jobs: uses: actions/setup-java@v5 with: distribution: temurin - java-version: 17 + java-version: 21 - name: Setup Gradle uses: gradle/actions/setup-gradle@v6 with: @@ -46,7 +46,7 @@ jobs: source: ./site destination: ./_site - name: Upload artifact - uses: actions/upload-pages-artifact@v4 + uses: actions/upload-pages-artifact@v5 # Deployment job deploy: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index ed1fb0d..07ec4df 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -38,7 +38,7 @@ jobs: uses: actions/setup-java@v5 with: distribution: temurin - java-version: 17 + java-version: 21 - name: Setup Gradle uses: gradle/actions/setup-gradle@v6 with: diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 61482c6..fb41ca5 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -17,7 +17,6 @@ - diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml index c224ad5..90d1b4b 100644 --- a/.idea/kotlinc.xml +++ b/.idea/kotlinc.xml @@ -1,6 +1,7 @@ - \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 28098ce..bca438e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,11 @@ > - 🏠 Internal > - 💅 Polish +## v1.14.0 (2026-04-20) + +* 🚀 Added support for THEOplayer 11.0. ([#98](https://github.com/THEOplayer/android-ui/pull/98)) +* 🚀 Updated to Jetpack Compose version 1.10.6 ([BOM](https://developer.android.com/jetpack/compose/bom) 2026.03.01). + ## v1.13.4 (2026-04-07) * 🐛 The language menu now prefers to show CEA-608/708 closed caption tracks with their localized language name (if available) instead of their language code (e.g. "en") or channel number (e.g. "CC1"). ([#84](https://github.com/THEOplayer/android-ui/pull/84), [#95](https://github.com/THEOplayer/android-ui/pull/95)) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 7a13303..54edd78 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -3,7 +3,6 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { alias(libs.plugins.android.application) - alias(libs.plugins.kotlin.android) alias(libs.plugins.compose.compiler) } @@ -54,12 +53,9 @@ android { compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 - } - kotlin { - compilerOptions { - apiVersion = KotlinVersion.KOTLIN_2_0 - jvmTarget = JvmTarget.JVM_1_8 - } + + // Required by Google IMA SDK v3.37.0+ + isCoreLibraryDesugaringEnabled = true } buildFeatures { compose = true @@ -71,11 +67,20 @@ android { } } +kotlin { + compilerOptions { + apiVersion = KotlinVersion.KOTLIN_2_0 + jvmTarget = JvmTarget.JVM_1_8 + } +} + dependencies { val mavenImplementation = configurations.getByName("mavenImplementation") val latestPlayerImplementation = configurations.getByName("latestPlayerImplementation") val minPlayerImplementation = configurations.getByName("minPlayerImplementation") + coreLibraryDesugaring(libs.androidTools.desugarJdkLibs) + implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.ktx) diff --git a/build.gradle.kts b/build.gradle.kts index 96bcfa5..5ec283a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,7 +13,6 @@ buildscript { 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.properties b/gradle.properties index f6c4344..8054b3d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -25,6 +25,5 @@ android.nonFinalResIds=true org.gradle.configuration-cache=true # Enable Dokka v2 org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled -org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true # The version of the THEOplayer Open Video UI for Android. -version=1.13.4 +version=1.14.0 diff --git a/gradle/gradle-daemon-jvm.properties b/gradle/gradle-daemon-jvm.properties new file mode 100644 index 0000000..5c34300 --- /dev/null +++ b/gradle/gradle-daemon-jvm.properties @@ -0,0 +1,13 @@ +#This file is generated by updateDaemonJvm +toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/56a19bc915b9ba2eb62ba7554c61b919/redirect +toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/398ffe3949748bfb1d5636f023d228fd/redirect +toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/56a19bc915b9ba2eb62ba7554c61b919/redirect +toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/398ffe3949748bfb1d5636f023d228fd/redirect +toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/e99bae143b75f9a10ead10248f02055e/redirect +toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/04e088f8677de3b384108493cc9481d0/redirect +toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/56a19bc915b9ba2eb62ba7554c61b919/redirect +toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/398ffe3949748bfb1d5636f023d228fd/redirect +toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/e55dccbfe27cb97945148c61a39c89c5/redirect +toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/dbd05c4936d573642f94cd149e1356c8/redirect +toolchainVendor=JETBRAINS +toolchainVersion=21 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0840087..feefc37 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,23 +2,24 @@ 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" +gradle = "9.1.1" +kotlin = "2.3.20" +ktx = "1.18.0" +lifecycle-compose = "2.10.0" activity-compose = "1.13.0" appcompat = "1.7.1" -compose-bom = "2025.08.01" +compose-bom = "2026.03.01" junit4 = "4.13.2" mockk = "1.14.9" -playServices-castFramework = "21.5.0" -ui-test-junit4 = "1.9.0" # ...not in BOM for some reason? +playServices-castFramework = "22.3.1" +ui-test-junit4 = "1.10.6" # ...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 = { prefer = "10.+", strictly = "[7.6.0, 11.0)" } -theoplayer-compile = { prefer = "10.+", strictly = "[10.13.0, 11.0)" } +desugar-jdk-libs = "2.1.5" +dokka = "2.2.0" +theoplayer = { prefer = "11.+", strictly = "[7.6.0, 12.0)" } +theoplayer-compile = { prefer = "11.+", strictly = "[10.13.0, 12.0)" } theoplayer-min = { strictly = "7.6.0" } core = "1.18.0" core-pip = "1.0.0-alpha02" @@ -42,6 +43,7 @@ androidx-espresso = { group = "androidx.test.espresso", name = "espresso-core", androidx-mediarouter = { group = "androidx.mediarouter", name = "mediarouter", version.ref = "androidx-mediarouter" } androidx-core = { group = "androidx.core", name = "core", version.ref = "core" } androidx-core-pip = { group = "androidx.core", name = "core-pip", version.ref = "core-pip" } +androidTools-desugarJdkLibs = { group = "com.android.tools", name = "desugar_jdk_libs", version.ref = "desugar-jdk-libs" } playServices-castFramework = { group = "com.google.android.gms", name = "play-services-cast-framework", version.ref = "playServices-castFramework" } gradle-plugin = { group = "com.android.tools.build", name = "gradle", version.ref = "gradle" } dokka-base = { group = "org.jetbrains.dokka", name = "dokka-base", version.ref = "dokka" } @@ -60,7 +62,6 @@ theoplayer-compile = { group = "com.theoplayer.theoplayer-sdk-android", name = " [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" } 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 3c51327..90fee24 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.13-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/settings.gradle.kts b/settings.gradle.kts index ede4760..4c36ccb 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -5,6 +5,9 @@ pluginManagement { gradlePluginPortal() } } +plugins { + id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" +} dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { diff --git a/ui/build.gradle.kts b/ui/build.gradle.kts index 96fdcf2..2c568c6 100644 --- a/ui/build.gradle.kts +++ b/ui/build.gradle.kts @@ -11,7 +11,6 @@ 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) @@ -44,12 +43,6 @@ android { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } - kotlin { - compilerOptions { - apiVersion = KotlinVersion.KOTLIN_2_0 - jvmTarget = JvmTarget.JVM_1_8 - } - } buildFeatures { compose = true } @@ -67,6 +60,13 @@ android { } } +kotlin { + compilerOptions { + apiVersion = KotlinVersion.KOTLIN_2_0 + jvmTarget = JvmTarget.JVM_1_8 + } +} + dependencies { implementation(platform(libs.androidx.compose.bom)) @@ -97,7 +97,7 @@ dependencies { dokka { moduleName = rootProject.name - dokkaSourceSets.main { + dokkaSourceSets.configureEach { sourceLink { localDirectory = file("src/main/java") remoteUrl("https://github.com/THEOplayer/android-ui/blob/${version}/ui/src/main/java") @@ -106,8 +106,8 @@ dokka { externalDocumentationLinks { register("com.theoplayer.android.api") { - url("https://optiview.dolby.com/docs/theoplayer/v10/api-reference/android/") - packageListUrl("https://optiview.dolby.com/docs/theoplayer/v10/api-reference/android/package-list") + url("https://optiview.dolby.com/docs/theoplayer/v11/api-reference/android/") + packageListUrl("https://optiview.dolby.com/docs/theoplayer/v11/api-reference/android/package-list") } } }