From e9ab3b0a94f55a90aa5cc3143884f07c6893f53f Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 10:21:44 +0100 Subject: [PATCH 01/27] Update to AGP 9.1.0 --- gradle.properties | 10 ++++++++++ gradle/libs.versions.toml | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 97da00f9..7cf0d2bc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -22,6 +22,16 @@ kotlin.code.style=official # thereby reducing the size of the R class for that library android.nonTransitiveRClass=true android.nonFinalResIds=true +android.defaults.buildfeatures.resvalues=true +android.sdk.defaultTargetSdkToCompileSdkIfUnset=false +android.enableAppCompileTimeRClass=false +android.usesSdkInManifest.disallowed=false +android.uniquePackageNames=false +android.dependency.useConstraints=true +android.r8.strictFullModeForKeepRules=false +android.r8.optimizedResourceShrinking=false +android.builtInKotlin=false +android.newDsl=false groupId=com.theoplayer.android-connector sdkVersion=10.12.1 connectorVersion=10.12.1 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3a9ea036..ef103865 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -androidGradlePlugin = "8.13.0" +androidGradlePlugin = "9.1.0" kotlin = "2.2.10" kotlinxSerialization = "2.2.10" kotlinxSerializationJson = "1.9.0" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 047da3f0..559ff8d6 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Tue Sep 06 12:39:24 CEST 2022 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME From 39f37dbd02896264ea1780be79feac97c6ac2c75 Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 10:25:46 +0100 Subject: [PATCH 02/27] Migrate to Gradle Daemon toolchain --- gradle/gradle-daemon-jvm.properties | 13 +++++++++++++ settings.gradle | 4 ++++ 2 files changed, 17 insertions(+) create mode 100644 gradle/gradle-daemon-jvm.properties diff --git a/gradle/gradle-daemon-jvm.properties b/gradle/gradle-daemon-jvm.properties new file mode 100644 index 00000000..2ff97572 --- /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/536afcd1dff540251f85e5d2c80458cf/redirect +toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/ecd23fd7707c683afbcd6052998cb6a9/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/ecd23fd7707c683afbcd6052998cb6a9/redirect +toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/10fc3bf1ee0001078a473afe6e43cfdb/redirect +toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/658299a896470fbb3103ba3a430ee227/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/ecd23fd7707c683afbcd6052998cb6a9/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/056dc25d3b9d168ede8b94d3d2f99942/redirect +toolchainVendor=JETBRAINS +toolchainVersion=21 diff --git a/settings.gradle b/settings.gradle index 7c39f840..ed8aff49 100644 --- a/settings.gradle +++ b/settings.gradle @@ -6,6 +6,10 @@ pluginManagement { } } +plugins { + id 'org.gradle.toolchains.foojay-resolver-convention' version '1.0.0' +} + dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { From b05368e6d5593a7341282a400d6afa2d1e17288e Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 10:31:20 +0100 Subject: [PATCH 03/27] Remove deprecated Gradle options --- gradle.properties | 8 -------- 1 file changed, 8 deletions(-) diff --git a/gradle.properties b/gradle.properties index 7cf0d2bc..577d0557 100644 --- a/gradle.properties +++ b/gradle.properties @@ -22,14 +22,6 @@ kotlin.code.style=official # thereby reducing the size of the R class for that library android.nonTransitiveRClass=true android.nonFinalResIds=true -android.defaults.buildfeatures.resvalues=true -android.sdk.defaultTargetSdkToCompileSdkIfUnset=false -android.enableAppCompileTimeRClass=false -android.usesSdkInManifest.disallowed=false -android.uniquePackageNames=false -android.dependency.useConstraints=true -android.r8.strictFullModeForKeepRules=false -android.r8.optimizedResourceShrinking=false android.builtInKotlin=false android.newDsl=false groupId=com.theoplayer.android-connector From 0999ea9eba058947e51b1668b52e582d6bb19a94 Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 10:35:02 +0100 Subject: [PATCH 04/27] Migrate to built-in Kotlin https://developer.android.com/build/migrate-to-built-in-kotlin --- app/build.gradle | 1 - build.gradle | 1 - connectors/analytics/comscore/build.gradle | 1 - connectors/analytics/conviva/build.gradle | 1 - connectors/analytics/nielsen/build.gradle | 1 - connectors/mediasession/build.gradle | 1 - connectors/uplynk/build.gradle | 1 - connectors/yospace/build.gradle | 1 - gradle.properties | 2 -- gradle/libs.versions.toml | 1 - 10 files changed, 11 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 6a005c85..6df65693 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -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 } diff --git a/build.gradle b/build.gradle index e1661825..07403346 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,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 alias libs.plugins.kotlinx.serialization apply false diff --git a/connectors/analytics/comscore/build.gradle b/connectors/analytics/comscore/build.gradle index 93e0409e..1f8136eb 100644 --- a/connectors/analytics/comscore/build.gradle +++ b/connectors/analytics/comscore/build.gradle @@ -4,7 +4,6 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.dokka } apply from: "$rootDir/connectors/publish.gradle" diff --git a/connectors/analytics/conviva/build.gradle b/connectors/analytics/conviva/build.gradle index 48cb0173..c6179048 100644 --- a/connectors/analytics/conviva/build.gradle +++ b/connectors/analytics/conviva/build.gradle @@ -4,7 +4,6 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.dokka } apply from: "$rootDir/connectors/publish.gradle" diff --git a/connectors/analytics/nielsen/build.gradle b/connectors/analytics/nielsen/build.gradle index 4c867188..a2c77e84 100644 --- a/connectors/analytics/nielsen/build.gradle +++ b/connectors/analytics/nielsen/build.gradle @@ -4,7 +4,6 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.dokka } apply from: "$rootDir/connectors/publish.gradle" diff --git a/connectors/mediasession/build.gradle b/connectors/mediasession/build.gradle index f48ebe93..964d1bcd 100644 --- a/connectors/mediasession/build.gradle +++ b/connectors/mediasession/build.gradle @@ -4,7 +4,6 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.dokka } apply from: "$rootDir/connectors/publish.gradle" diff --git a/connectors/uplynk/build.gradle b/connectors/uplynk/build.gradle index f3a5e554..e5e80281 100644 --- a/connectors/uplynk/build.gradle +++ b/connectors/uplynk/build.gradle @@ -4,7 +4,6 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlinx.serialization alias libs.plugins.dokka } diff --git a/connectors/yospace/build.gradle b/connectors/yospace/build.gradle index eff57cb7..f0ac8b68 100644 --- a/connectors/yospace/build.gradle +++ b/connectors/yospace/build.gradle @@ -4,7 +4,6 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlinx.serialization alias libs.plugins.dokka } diff --git a/gradle.properties b/gradle.properties index 577d0557..97da00f9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -22,8 +22,6 @@ kotlin.code.style=official # thereby reducing the size of the R class for that library android.nonTransitiveRClass=true android.nonFinalResIds=true -android.builtInKotlin=false -android.newDsl=false groupId=com.theoplayer.android-connector sdkVersion=10.12.1 connectorVersion=10.12.1 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ef103865..7775be63 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -56,7 +56,6 @@ yospace = { group = "com.yospace", name = "admanagement-sdk", version.ref = "yos [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" } -kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } kotlinx-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlinxSerialization" } dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } From b21e70f3604578785b640ab2c1bc705c7c619fbc Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 10:45:09 +0100 Subject: [PATCH 05/27] Convert settings.gradle to Kotlin --- settings.gradle | 38 -------------------------------------- settings.gradle.kts | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 38 deletions(-) delete mode 100644 settings.gradle create mode 100644 settings.gradle.kts diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index ed8aff49..00000000 --- a/settings.gradle +++ /dev/null @@ -1,38 +0,0 @@ -pluginManagement { - repositories { - gradlePluginPortal() - google() - mavenCentral() - } -} - -plugins { - id 'org.gradle.toolchains.foojay-resolver-convention' version '1.0.0' -} - -dependencyResolutionManagement { - repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) - repositories { - google() - mavenCentral() - maven { url 'https://maven.theoplayer.com/releases/' } - maven { url 'https://raw.githubusercontent.com/NielsenDigitalSDK/nielsenappsdk-android/master/' } - maven { - url 'https://yospacerepo.jfrog.io/yospacerepo/android-sdk' - credentials { - username System.getenv("YOSPACE_USERNAME") - password System.getenv("YOSPACE_PASSWORD") - } - } - } -} - -rootProject.name = "THEOplayer Connector" -include ':app' -include ':connectors:analytics:comscore' -include ':connectors:analytics:conviva' -include ':connectors:analytics:nielsen' -include ':connectors:mediasession' -// FIXME Re-enable Yospace connector after updating JFrog credentials -// include ':connectors:yospace' -include ':connectors:uplynk' diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 00000000..e8ba0314 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,38 @@ +pluginManagement { + repositories { + gradlePluginPortal() + google() + mavenCentral() + } +} + +plugins { + id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" +} + +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + maven { url = uri("https://maven.theoplayer.com/releases/") } + maven { url = uri("https://raw.githubusercontent.com/NielsenDigitalSDK/nielsenappsdk-android/master/") } + maven { + url = uri("https://yospacerepo.jfrog.io/yospacerepo/android-sdk") + credentials { + username = System.getenv("YOSPACE_USERNAME") + password = System.getenv("YOSPACE_PASSWORD") + } + } + } +} + +rootProject.name = "THEOplayer Connector" +include(":app") +include(":connectors:analytics:comscore") +include(":connectors:analytics:conviva") +include(":connectors:analytics:nielsen") +include(":connectors:mediasession") +// FIXME Re-enable Yospace connector after updating JFrog credentials +// include(":connectors:yospace") +include(":connectors:uplynk") From df9da511afa30cc8fdd3d579416c62ada6c58eac Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 11:52:42 +0100 Subject: [PATCH 06/27] Convert build.gradle to Kotlin --- build.gradle => build.gradle.kts | 62 ++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 23 deletions(-) rename build.gradle => build.gradle.kts (57%) diff --git a/build.gradle b/build.gradle.kts similarity index 57% rename from build.gradle rename to build.gradle.kts index 07403346..a713bd6a 100644 --- a/build.gradle +++ b/build.gradle.kts @@ -1,6 +1,6 @@ import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask import org.jetbrains.dokka.gradle.DokkaMultiModuleTask - +import java.net.URL import java.time.Year // Top-level build file where you can add configuration options common to all sub-projects/modules. @@ -10,40 +10,55 @@ buildscript { mavenCentral() } dependencies { - classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.9.20" + classpath("org.jetbrains.dokka:dokka-gradle-plugin:1.9.20") } } plugins { - alias libs.plugins.android.application apply false - alias libs.plugins.android.library apply false - alias libs.plugins.compose.compiler apply false - alias libs.plugins.dokka - alias libs.plugins.kotlinx.serialization apply false + alias(libs.plugins.android.application) apply false + alias(libs.plugins.android.library) apply false + alias(libs.plugins.compose.compiler) apply false + alias(libs.plugins.dokka) + alias(libs.plugins.kotlinx.serialization) apply false } -tasks.register('updateVersion') { - def sdkVersion = project.ext.sdkVersion - ant.replaceregexp(file: 'gradle.properties', match: 'sdkVersion=.*', replace: "sdkVersion=$sdkVersion", flags: 'g', byline: true) - ant.replaceregexp(file: 'gradle.properties', match: 'connectorVersion=.*', replace: "connectorVersion=$sdkVersion", flags: 'g', byline: true) +tasks.register("updateVersion") { + val sdkVersion: String by project.ext + ant.withGroovyBuilder { + "replaceregexp"( + "file" to "gradle.properties", + "match" to "sdkVersion=.*", + "replace" to "sdkVersion=$sdkVersion", + "flags" to "g", + "byline" to true + ) + "replaceregexp"( + "file" to "gradle.properties", + "match" to "connectorVersion=.*", + "replace" to "connectorVersion=$sdkVersion", + "flags" to "g", + "byline" to true + ) + } } -tasks.register('clean', Delete) { - delete rootProject.buildDir +tasks.register("clean") { + delete(rootProject.buildDir) } -tasks.withType(DokkaMultiModuleTask.class).configureEach { +tasks.withType(DokkaMultiModuleTask::class).configureEach { moduleName = "THEOplayer Connectors for Android" - String dokkaBaseConfiguration = """ + val dokkaBaseConfiguration = """ { - "customAssets": ["${file("assets/logo-icon.svg").path.replace('\\', "\\\\")}"], + "customAssets": ["${file("assets/logo-icon.svg").path.replace("\\", "\\\\")}"], "footerMessage": "© ${Year.now().value} THEO Technologies" } """ - pluginsMapConfiguration.set( - // fully qualified plugin name to json configuration - ["org.jetbrains.dokka.base.DokkaBase": dokkaBaseConfiguration] + + pluginsMapConfiguration = mapOf( + // fully qualified plugin name to json configuration + "org.jetbrains.dokka.base.DokkaBase" to dokkaBaseConfiguration ) } @@ -52,9 +67,10 @@ tasks.dokkaHtmlMultiModule.configure { } subprojects { + val connectorVersion: String by project.ext version = connectorVersion - tasks.withType(AbstractDokkaLeafTask.class).configureEach { + tasks.withType(AbstractDokkaLeafTask::class).configureEach { suppressObviousFunctions.set(true) suppressInheritedMembers.set(true) @@ -72,9 +88,9 @@ subprojects { noAndroidSdkLink.set(false) externalDocumentationLink { - url.set(new URL("https://www.theoplayer.com/docs/theoplayer/v7/api-reference/android/")) + url.set(URL("https://www.theoplayer.com/docs/theoplayer/v7/api-reference/android/")) // TODO: Fix link to https://www.theoplayer.com/docs/theoplayer/v7/api-reference/android/package-list - packageListUrl.set(new URL("https://raw.githubusercontent.com/THEOplayer/documentation/main/theoplayer/static/theoplayer/v7/api-reference/android/package-list")) + packageListUrl.set(URL("https://raw.githubusercontent.com/THEOplayer/documentation/main/theoplayer/static/theoplayer/v7/api-reference/android/package-list")) } perPackageOption { @@ -84,4 +100,4 @@ subprojects { } } } -} \ No newline at end of file +} From 8e2aae006b2480e1dcda058288616add8c5fa225 Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 11:59:23 +0100 Subject: [PATCH 07/27] Tweak updateVersion --- build.gradle.kts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index a713bd6a..7cffec13 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -23,17 +23,20 @@ plugins { } tasks.register("updateVersion") { + val gradleProperties = rootProject.file("gradle.properties") + inputs.file(gradleProperties) + val sdkVersion: String by project.ext ant.withGroovyBuilder { "replaceregexp"( - "file" to "gradle.properties", + "file" to gradleProperties, "match" to "sdkVersion=.*", "replace" to "sdkVersion=$sdkVersion", "flags" to "g", "byline" to true ) "replaceregexp"( - "file" to "gradle.properties", + "file" to gradleProperties, "match" to "connectorVersion=.*", "replace" to "connectorVersion=$sdkVersion", "flags" to "g", From c795d394f161cb545eff1ed4e1866142f4f3d89f Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 12:04:50 +0100 Subject: [PATCH 08/27] More tweaks --- build.gradle.kts | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 7cffec13..6424242e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,6 +1,5 @@ import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask import org.jetbrains.dokka.gradle.DokkaMultiModuleTask -import java.net.URL import java.time.Year // Top-level build file where you can add configuration options common to all sub-projects/modules. @@ -46,7 +45,7 @@ tasks.register("updateVersion") { } tasks.register("clean") { - delete(rootProject.buildDir) + delete(rootProject.layout.buildDirectory) } tasks.withType(DokkaMultiModuleTask::class).configureEach { @@ -74,31 +73,31 @@ subprojects { version = connectorVersion tasks.withType(AbstractDokkaLeafTask::class).configureEach { - suppressObviousFunctions.set(true) - suppressInheritedMembers.set(true) + suppressObviousFunctions = true + suppressInheritedMembers = true dokkaSourceSets { configureEach { - includeNonPublic.set(false) // Use to include or exclude non public members - skipDeprecated.set(false) // Do not output deprecated members. Applies globally, can be overridden by packageOptions + includeNonPublic = false // Use to include or exclude non public members + skipDeprecated = false // Do not output deprecated members. Applies globally, can be overridden by packageOptions // Emit warnings about not documented members. Applies globally, also can be overridden by packageOptions - reportUndocumented.set(true) - skipEmptyPackages.set(false) // Do not create index pages for empty packages - jdkVersion.set(11) // Used for linking to JDK documentation - noStdlibLink.set(false) // Use to enable or disable linking to online kotlin-stdlib documentation - noJdkLink.set(false) // Use to enable or disable linking to online JDK documentation + reportUndocumented = true + skipEmptyPackages = false // Do not create index pages for empty packages + jdkVersion = 11 // Used for linking to JDK documentation + noStdlibLink = false // Use to enable or disable linking to online kotlin-stdlib documentation + noJdkLink = false // Use to enable or disable linking to online JDK documentation // Use to enable or disable linking to online Android documentation (only applicable for Android projects) - noAndroidSdkLink.set(false) + noAndroidSdkLink = false externalDocumentationLink { - url.set(URL("https://www.theoplayer.com/docs/theoplayer/v7/api-reference/android/")) + url = uri("https://www.theoplayer.com/docs/theoplayer/v7/api-reference/android/").toURL() // TODO: Fix link to https://www.theoplayer.com/docs/theoplayer/v7/api-reference/android/package-list - packageListUrl.set(URL("https://raw.githubusercontent.com/THEOplayer/documentation/main/theoplayer/static/theoplayer/v7/api-reference/android/package-list")) + packageListUrl = uri("https://raw.githubusercontent.com/THEOplayer/documentation/main/theoplayer/static/theoplayer/v7/api-reference/android/package-list").toURL() } perPackageOption { - matchingRegex.set("com[.]theoplayer[.]android[.]connector[.].*[.]internal.*") - suppress.set(true) + matchingRegex = "com[.]theoplayer[.]android[.]connector[.].*[.]internal.*" + suppress = true } } } From f3318e04781937f970bc2e517d8b42e6d9027717 Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 12:05:34 +0100 Subject: [PATCH 09/27] Move comments --- build.gradle.kts | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 6424242e..6cdeeea1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -78,14 +78,20 @@ subprojects { dokkaSourceSets { configureEach { - includeNonPublic = false // Use to include or exclude non public members - skipDeprecated = false // Do not output deprecated members. Applies globally, can be overridden by packageOptions + // Use to include or exclude non public members + includeNonPublic = false + // Do not output deprecated members. Applies globally, can be overridden by packageOptions + skipDeprecated = false // Emit warnings about not documented members. Applies globally, also can be overridden by packageOptions reportUndocumented = true - skipEmptyPackages = false // Do not create index pages for empty packages - jdkVersion = 11 // Used for linking to JDK documentation - noStdlibLink = false // Use to enable or disable linking to online kotlin-stdlib documentation - noJdkLink = false // Use to enable or disable linking to online JDK documentation + // Do not create index pages for empty packages + skipEmptyPackages = false + // Used for linking to JDK documentation + jdkVersion = 11 + // Use to enable or disable linking to online kotlin-stdlib documentation + noStdlibLink = false + // Use to enable or disable linking to online JDK documentation + noJdkLink = false // Use to enable or disable linking to online Android documentation (only applicable for Android projects) noAndroidSdkLink = false From d41326e304c78d2191ae8c8311f2ff96b8903a95 Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 12:06:10 +0100 Subject: [PATCH 10/27] Link to v10 docs --- build.gradle.kts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 6cdeeea1..e9c5d33c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -96,9 +96,8 @@ subprojects { noAndroidSdkLink = false externalDocumentationLink { - url = uri("https://www.theoplayer.com/docs/theoplayer/v7/api-reference/android/").toURL() - // TODO: Fix link to https://www.theoplayer.com/docs/theoplayer/v7/api-reference/android/package-list - packageListUrl = uri("https://raw.githubusercontent.com/THEOplayer/documentation/main/theoplayer/static/theoplayer/v7/api-reference/android/package-list").toURL() + url = uri("https://www.theoplayer.com/docs/theoplayer/v10/api-reference/android/").toURL() + packageListUrl = uri("https://www.theoplayer.com/docs/theoplayer/v10/api-reference/android/package-list").toURL() } perPackageOption { From bc890e2513ff6a938cca5c81d7a4d4ac31caac4c Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 13:18:56 +0100 Subject: [PATCH 11/27] Convert build.gradle in connectors to Kotlin --- connectors/analytics/comscore/build.gradle | 53 ------------- .../analytics/comscore/build.gradle.kts | 58 ++++++++++++++ connectors/analytics/conviva/build.gradle | 55 ------------- connectors/analytics/conviva/build.gradle.kts | 60 ++++++++++++++ connectors/analytics/nielsen/build.gradle | 51 ------------ connectors/analytics/nielsen/build.gradle.kts | 56 +++++++++++++ connectors/mediasession/build.gradle | 51 ------------ connectors/mediasession/build.gradle.kts | 56 +++++++++++++ connectors/uplynk/build.gradle | 58 -------------- connectors/uplynk/build.gradle.kts | 63 +++++++++++++++ connectors/yospace/build.gradle | 71 ----------------- connectors/yospace/build.gradle.kts | 78 +++++++++++++++++++ 12 files changed, 371 insertions(+), 339 deletions(-) delete mode 100644 connectors/analytics/comscore/build.gradle create mode 100644 connectors/analytics/comscore/build.gradle.kts delete mode 100644 connectors/analytics/conviva/build.gradle create mode 100644 connectors/analytics/conviva/build.gradle.kts delete mode 100644 connectors/analytics/nielsen/build.gradle create mode 100644 connectors/analytics/nielsen/build.gradle.kts delete mode 100644 connectors/mediasession/build.gradle create mode 100644 connectors/mediasession/build.gradle.kts delete mode 100644 connectors/uplynk/build.gradle create mode 100644 connectors/uplynk/build.gradle.kts delete mode 100644 connectors/yospace/build.gradle create mode 100644 connectors/yospace/build.gradle.kts diff --git a/connectors/analytics/comscore/build.gradle b/connectors/analytics/comscore/build.gradle deleted file mode 100644 index 1f8136eb..00000000 --- a/connectors/analytics/comscore/build.gradle +++ /dev/null @@ -1,53 +0,0 @@ -import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.dsl.KotlinVersion - -plugins { - alias libs.plugins.android.library - alias libs.plugins.dokka -} -apply from: "$rootDir/connectors/publish.gradle" - -android { - namespace 'com.theoplayer.android.connector.analytics.comscore' - compileSdk 36 - - defaultConfig { - minSdk 23 - consumerProguardFiles "consumer-rules.pro" - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - kotlin { - compilerOptions { - apiVersion = KotlinVersion.KOTLIN_2_0 - jvmTarget = JvmTarget.JVM_1_8 - } - } - - buildFeatures { - buildConfig true - } -} - -dependencies { - compileOnly "com.theoplayer.theoplayer-sdk-android:core:$sdkVersion" - compileOnly "com.theoplayer.theoplayer-sdk-android:integration-ads-ima:$sdkVersion" - - compileOnly libs.comscore -} - -tasks.withType(AbstractDokkaLeafTask.class).configureEach { - moduleName = "Comscore Connector" -} diff --git a/connectors/analytics/comscore/build.gradle.kts b/connectors/analytics/comscore/build.gradle.kts new file mode 100644 index 00000000..c958a115 --- /dev/null +++ b/connectors/analytics/comscore/build.gradle.kts @@ -0,0 +1,58 @@ +import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion + +plugins { + alias(libs.plugins.android.library) + alias(libs.plugins.dokka) +} +apply(from = "$rootDir/connectors/publish.gradle") + +android { + namespace = "com.theoplayer.android.connector.analytics.comscore" + compileSdk = 36 + + defaultConfig { + minSdk = 23 + consumerProguardFiles("consumer-rules.pro") + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + + kotlin { + compilerOptions { + apiVersion = KotlinVersion.KOTLIN_2_0 + jvmTarget = JvmTarget.JVM_1_8 + } + } + + buildFeatures { + buildConfig = true + } +} + +dependencies { + val sdkVersion: String by project.ext + + compileOnly("com.theoplayer.theoplayer-sdk-android:core:$sdkVersion") + compileOnly("com.theoplayer.theoplayer-sdk-android:integration-ads-ima:$sdkVersion") + + compileOnly(libs.comscore) +} + +tasks.withType(AbstractDokkaLeafTask::class).configureEach { + moduleName = "Comscore Connector" +} diff --git a/connectors/analytics/conviva/build.gradle b/connectors/analytics/conviva/build.gradle deleted file mode 100644 index c6179048..00000000 --- a/connectors/analytics/conviva/build.gradle +++ /dev/null @@ -1,55 +0,0 @@ -import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.dsl.KotlinVersion - -plugins { - alias libs.plugins.android.library - alias libs.plugins.dokka -} -apply from: "$rootDir/connectors/publish.gradle" - -android { - namespace 'com.theoplayer.android.connector.analytics.conviva' - compileSdk 36 - - defaultConfig { - minSdk 23 - consumerProguardFiles "consumer-rules.pro" - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - kotlin { - compilerOptions { - apiVersion = KotlinVersion.KOTLIN_2_0 - jvmTarget = JvmTarget.JVM_1_8 - } - } - - buildFeatures { - buildConfig true - } -} - -dependencies { - compileOnly "com.theoplayer.theoplayer-sdk-android:core:$sdkVersion" - compileOnly "com.theoplayer.theoplayer-sdk-android:integration-ads-ima:$sdkVersion" - compileOnly "com.theoplayer.theoplayer-sdk-android:integration-ads-theoads:$sdkVersion" - compileOnly libs.conviva - - implementation libs.androidx.lifecycle.process -} - -tasks.withType(AbstractDokkaLeafTask.class).configureEach { - moduleName = "Conviva Connector" -} diff --git a/connectors/analytics/conviva/build.gradle.kts b/connectors/analytics/conviva/build.gradle.kts new file mode 100644 index 00000000..5abcfcda --- /dev/null +++ b/connectors/analytics/conviva/build.gradle.kts @@ -0,0 +1,60 @@ +import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion + +plugins { + alias(libs.plugins.android.library) + alias(libs.plugins.dokka) +} +apply(from = "$rootDir/connectors/publish.gradle") + +android { + namespace = "com.theoplayer.android.connector.analytics.conviva" + compileSdk = 36 + + defaultConfig { + minSdk = 23 + consumerProguardFiles("consumer-rules.pro") + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + + kotlin { + compilerOptions { + apiVersion = KotlinVersion.KOTLIN_2_0 + jvmTarget = JvmTarget.JVM_1_8 + } + } + + buildFeatures { + buildConfig = true + } +} + +dependencies { + val sdkVersion: String by project.ext + + compileOnly("com.theoplayer.theoplayer-sdk-android:core:$sdkVersion") + compileOnly("com.theoplayer.theoplayer-sdk-android:integration-ads-ima:$sdkVersion") + compileOnly("com.theoplayer.theoplayer-sdk-android:integration-ads-theoads:$sdkVersion") + compileOnly(libs.conviva) + + implementation(libs.androidx.lifecycle.process) +} + +tasks.withType(AbstractDokkaLeafTask::class).configureEach { + moduleName = "Conviva Connector" +} diff --git a/connectors/analytics/nielsen/build.gradle b/connectors/analytics/nielsen/build.gradle deleted file mode 100644 index a2c77e84..00000000 --- a/connectors/analytics/nielsen/build.gradle +++ /dev/null @@ -1,51 +0,0 @@ -import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.dsl.KotlinVersion - -plugins { - alias libs.plugins.android.library - alias libs.plugins.dokka -} -apply from: "$rootDir/connectors/publish.gradle" - -android { - namespace 'com.theoplayer.android.connector.analytics.nielsen' - compileSdk 36 - - defaultConfig { - minSdk 23 - consumerProguardFiles "consumer-rules.pro" - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - kotlin { - compilerOptions { - apiVersion = KotlinVersion.KOTLIN_2_0 - jvmTarget = JvmTarget.JVM_1_8 - } - } -} - -dependencies { - implementation libs.androidx.lifecycle.process - - compileOnly "com.theoplayer.theoplayer-sdk-android:core:$sdkVersion" - compileOnly "com.theoplayer.theoplayer-sdk-android:integration-ads-ima:$sdkVersion" - compileOnly libs.nielsen -} - -tasks.withType(AbstractDokkaLeafTask.class).configureEach { - moduleName = "Nielsen Connector" -} - diff --git a/connectors/analytics/nielsen/build.gradle.kts b/connectors/analytics/nielsen/build.gradle.kts new file mode 100644 index 00000000..1063d528 --- /dev/null +++ b/connectors/analytics/nielsen/build.gradle.kts @@ -0,0 +1,56 @@ +import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion + +plugins { + alias(libs.plugins.android.library) + alias(libs.plugins.dokka) +} +apply(from = "$rootDir/connectors/publish.gradle") + +android { + namespace = "com.theoplayer.android.connector.analytics.nielsen" + compileSdk = 36 + + defaultConfig { + minSdk = 23 + consumerProguardFiles("consumer-rules.pro") + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + + kotlin { + compilerOptions { + apiVersion = KotlinVersion.KOTLIN_2_0 + jvmTarget = JvmTarget.JVM_1_8 + } + } +} + +dependencies { + val sdkVersion: String by project.ext + + implementation(libs.androidx.lifecycle.process) + + compileOnly("com.theoplayer.theoplayer-sdk-android:core:$sdkVersion") + compileOnly("com.theoplayer.theoplayer-sdk-android:integration-ads-ima:$sdkVersion") + compileOnly(libs.nielsen) +} + +tasks.withType(AbstractDokkaLeafTask::class).configureEach { + moduleName = "Nielsen Connector" +} + diff --git a/connectors/mediasession/build.gradle b/connectors/mediasession/build.gradle deleted file mode 100644 index 964d1bcd..00000000 --- a/connectors/mediasession/build.gradle +++ /dev/null @@ -1,51 +0,0 @@ -import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.dsl.KotlinVersion - -plugins { - alias libs.plugins.android.library - alias libs.plugins.dokka -} -apply from: "$rootDir/connectors/publish.gradle" - -android { - namespace 'com.theoplayer.android.connector.mediasession' - compileSdk 36 - - defaultConfig { - minSdk 23 - consumerProguardFiles "consumer-rules.pro" - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - kotlin { - compilerOptions { - apiVersion = KotlinVersion.KOTLIN_2_0 - jvmTarget = JvmTarget.JVM_1_8 - } - } - - buildFeatures { - buildConfig true - } -} - -dependencies { - implementation libs.androidx.media - compileOnly "com.theoplayer.theoplayer-sdk-android:core:$sdkVersion" -} - -tasks.withType(AbstractDokkaLeafTask.class).configureEach { - moduleName = "Media Session Connector" -} diff --git a/connectors/mediasession/build.gradle.kts b/connectors/mediasession/build.gradle.kts new file mode 100644 index 00000000..99d7c0f6 --- /dev/null +++ b/connectors/mediasession/build.gradle.kts @@ -0,0 +1,56 @@ +import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion + +plugins { + alias(libs.plugins.android.library) + alias(libs.plugins.dokka) +} +apply(from = "$rootDir/connectors/publish.gradle") + +android { + namespace = "com.theoplayer.android.connector.mediasession" + compileSdk = 36 + + defaultConfig { + minSdk = 23 + consumerProguardFiles("consumer-rules.pro") + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + + kotlin { + compilerOptions { + apiVersion = KotlinVersion.KOTLIN_2_0 + jvmTarget = JvmTarget.JVM_1_8 + } + } + + buildFeatures { + buildConfig = true + } +} + +dependencies { + val sdkVersion: String by project.ext + + implementation(libs.androidx.media) + compileOnly("com.theoplayer.theoplayer-sdk-android:core:$sdkVersion") +} + +tasks.withType(AbstractDokkaLeafTask::class).configureEach { + moduleName = "Media Session Connector" +} diff --git a/connectors/uplynk/build.gradle b/connectors/uplynk/build.gradle deleted file mode 100644 index e5e80281..00000000 --- a/connectors/uplynk/build.gradle +++ /dev/null @@ -1,58 +0,0 @@ -import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.dsl.KotlinVersion - -plugins { - alias libs.plugins.android.library - alias libs.plugins.kotlinx.serialization - alias libs.plugins.dokka -} -apply from: "$rootDir/connectors/publish.gradle" - -android { - namespace 'com.theoplayer.android.connector.uplynk' - compileSdk 36 - - defaultConfig { - minSdk 23 - consumerProguardFiles "consumer-rules.pro" - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - kotlin { - compilerOptions { - apiVersion = KotlinVersion.KOTLIN_2_0 - jvmTarget = JvmTarget.JVM_1_8 - } - } -} - -dependencies { - compileOnly "com.theoplayer.theoplayer-sdk-android:core:$sdkVersion" - implementation libs.kotlinx.serialization.json - implementation libs.kotlinx.coroutines.android - - testImplementation libs.junit - testImplementation "com.theoplayer.theoplayer-sdk-android:core:$sdkVersion" - testImplementation libs.mockito.inline - testImplementation libs.mockito.kotlin - testImplementation libs.kotlin.test.junit - androidTestImplementation libs.androidx.test.ext.junit - androidTestImplementation libs.androidx.test.espresso.core -} - -tasks.withType(AbstractDokkaLeafTask.class).configureEach { - moduleName = "Uplynk Connector" -} \ No newline at end of file diff --git a/connectors/uplynk/build.gradle.kts b/connectors/uplynk/build.gradle.kts new file mode 100644 index 00000000..e32b6df5 --- /dev/null +++ b/connectors/uplynk/build.gradle.kts @@ -0,0 +1,63 @@ +import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion + +plugins { + alias(libs.plugins.android.library) + alias(libs.plugins.kotlinx.serialization) + alias(libs.plugins.dokka) +} +apply(from = "$rootDir/connectors/publish.gradle") + +android { + namespace = "com.theoplayer.android.connector.uplynk" + compileSdk = 36 + + defaultConfig { + minSdk = 23 + consumerProguardFiles("consumer-rules.pro") + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + + kotlin { + compilerOptions { + apiVersion = KotlinVersion.KOTLIN_2_0 + jvmTarget = JvmTarget.JVM_1_8 + } + } +} + +dependencies { + val sdkVersion: String by project.ext + + compileOnly("com.theoplayer.theoplayer-sdk-android:core:$sdkVersion") + implementation(libs.kotlinx.serialization.json) + implementation(libs.kotlinx.coroutines.android) + + testImplementation(libs.junit) + testImplementation("com.theoplayer.theoplayer-sdk-android:core:$sdkVersion") + testImplementation(libs.mockito.inline) + testImplementation(libs.mockito.kotlin) + testImplementation(libs.kotlin.test.junit) + androidTestImplementation(libs.androidx.test.ext.junit) + androidTestImplementation(libs.androidx.test.espresso.core) +} + +tasks.withType(AbstractDokkaLeafTask::class).configureEach { + moduleName = "Uplynk Connector" +} \ No newline at end of file diff --git a/connectors/yospace/build.gradle b/connectors/yospace/build.gradle deleted file mode 100644 index f0ac8b68..00000000 --- a/connectors/yospace/build.gradle +++ /dev/null @@ -1,71 +0,0 @@ -import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.dsl.KotlinVersion - -plugins { - alias libs.plugins.android.library - alias libs.plugins.kotlinx.serialization - alias libs.plugins.dokka -} -apply from: "$rootDir/connectors/publish.gradle" - -android { - namespace 'com.theoplayer.android.connector.yospace' - compileSdk 36 - - defaultConfig { - minSdk 23 - consumerProguardFiles "consumer-rules.pro" - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - buildConfigField("String", "LIBRARY_VERSION", "\"${connectorVersion}\"") - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - kotlin { - compilerOptions { - apiVersion = KotlinVersion.KOTLIN_2_0 - jvmTarget = JvmTarget.JVM_1_8 - } - } - - buildFeatures { - buildConfig true - } -} - -dependencies { - implementation libs.androidx.core.ktx - compileOnly "com.theoplayer.theoplayer-sdk-android:core:$sdkVersion" - compileOnly(libs.yospace) { - version { - strictly("[3.6, 4.0)") - prefer(libs.yospace.get().version) - } - } - implementation libs.kotlinx.serialization.json - - // Tests - testImplementation libs.androidx.test.core - testImplementation libs.androidx.test.ext.junit - testImplementation "com.theoplayer.theoplayer-sdk-android:core:$sdkVersion" - testImplementation libs.yospace -} - -tasks.withType(AbstractDokkaLeafTask.class).configureEach { - moduleName = "Yospace Connector" - - dokkaSourceSets.named("main") { - samples.from(project.fileTree("src/test/java/")) - } -} diff --git a/connectors/yospace/build.gradle.kts b/connectors/yospace/build.gradle.kts new file mode 100644 index 00000000..86367a89 --- /dev/null +++ b/connectors/yospace/build.gradle.kts @@ -0,0 +1,78 @@ +import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion + +plugins { + alias(libs.plugins.android.library) + alias(libs.plugins.kotlinx.serialization) + alias(libs.plugins.dokka) +} +apply(from = "$rootDir/connectors/publish.gradle") + +android { + namespace = "com.theoplayer.android.connector.yospace" + compileSdk = 36 + + defaultConfig { + val connectorVersion: String by project.ext + + minSdk = 23 + consumerProguardFiles("consumer-rules.pro") + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + buildConfigField("String", "LIBRARY_VERSION", "\"${connectorVersion}\"") + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + + kotlin { + compilerOptions { + apiVersion = KotlinVersion.KOTLIN_2_0 + jvmTarget = JvmTarget.JVM_1_8 + } + } + + buildFeatures { + buildConfig = true + } +} + +dependencies { + val sdkVersion: String by project.ext + + implementation(libs.androidx.core.ktx) + compileOnly("com.theoplayer.theoplayer-sdk-android:core:$sdkVersion") + compileOnly(libs.yospace) { + version { + strictly("[3.6, 4.0)") + prefer(libs.yospace.get().version!!) + } + } + implementation(libs.kotlinx.serialization.json) + + // Tests + testImplementation(libs.androidx.test.core) + testImplementation(libs.androidx.test.ext.junit) + testImplementation("com.theoplayer.theoplayer-sdk-android:core:$sdkVersion") + testImplementation(libs.yospace) +} + +tasks.withType(AbstractDokkaLeafTask::class).configureEach { + moduleName = "Yospace Connector" + + dokkaSourceSets.named("main") { + samples.from(project.fileTree("src/test/java/")) + } +} From 7a195c05cc2568e37b8d24bc9644023250ca5e0a Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 14:16:18 +0100 Subject: [PATCH 12/27] Move publishing repositories to convention plugin --- build-logic/convention/.gitignore | 1 + build-logic/convention/build.gradle.kts | 3 +++ ...d-connector.library-conventions.gradle.kts | 24 +++++++++++++++++++ build-logic/settings.gradle.kts | 14 +++++++++++ .../analytics/comscore/build.gradle.kts | 1 + connectors/analytics/conviva/build.gradle.kts | 1 + connectors/analytics/nielsen/build.gradle.kts | 1 + connectors/mediasession/build.gradle.kts | 1 + connectors/publish.gradle | 19 --------------- connectors/uplynk/build.gradle.kts | 1 + connectors/yospace/build.gradle.kts | 1 + settings.gradle.kts | 1 + 12 files changed, 49 insertions(+), 19 deletions(-) create mode 100644 build-logic/convention/.gitignore create mode 100644 build-logic/convention/build.gradle.kts create mode 100644 build-logic/convention/src/main/kotlin/android-connector.library-conventions.gradle.kts create mode 100644 build-logic/settings.gradle.kts diff --git a/build-logic/convention/.gitignore b/build-logic/convention/.gitignore new file mode 100644 index 00000000..42afabfd --- /dev/null +++ b/build-logic/convention/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts new file mode 100644 index 00000000..bc0172f0 --- /dev/null +++ b/build-logic/convention/build.gradle.kts @@ -0,0 +1,3 @@ +plugins { + `kotlin-dsl` +} diff --git a/build-logic/convention/src/main/kotlin/android-connector.library-conventions.gradle.kts b/build-logic/convention/src/main/kotlin/android-connector.library-conventions.gradle.kts new file mode 100644 index 00000000..58632a7e --- /dev/null +++ b/build-logic/convention/src/main/kotlin/android-connector.library-conventions.gradle.kts @@ -0,0 +1,24 @@ +plugins { + `maven-publish` +} + +publishing { + repositories { + maven { + name = "reposilite" + url = uri("https://maven.theoplayer.com/releases") + credentials { + username = System.getenv("REPOSILITE_USERNAME") + password = System.getenv("REPOSILITE_PASSWORD") + } + } + maven { + name = "GitHubPackages" + url = uri("https://maven.pkg.github.com/THEOplayer/android-connector") + credentials { + username = System.getenv("GITHUB_ACTOR") + password = System.getenv("GITHUB_TOKEN") + } + } + } +} diff --git a/build-logic/settings.gradle.kts b/build-logic/settings.gradle.kts new file mode 100644 index 00000000..1c10c0cc --- /dev/null +++ b/build-logic/settings.gradle.kts @@ -0,0 +1,14 @@ +dependencyResolutionManagement { + repositories { + gradlePluginPortal() + mavenCentral() + } + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } +} + +rootProject.name = "build-logic" +include(":convention") \ No newline at end of file diff --git a/connectors/analytics/comscore/build.gradle.kts b/connectors/analytics/comscore/build.gradle.kts index c958a115..a35a213c 100644 --- a/connectors/analytics/comscore/build.gradle.kts +++ b/connectors/analytics/comscore/build.gradle.kts @@ -5,6 +5,7 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { alias(libs.plugins.android.library) alias(libs.plugins.dokka) + id("android-connector.library-conventions") } apply(from = "$rootDir/connectors/publish.gradle") diff --git a/connectors/analytics/conviva/build.gradle.kts b/connectors/analytics/conviva/build.gradle.kts index 5abcfcda..dcf1bdd1 100644 --- a/connectors/analytics/conviva/build.gradle.kts +++ b/connectors/analytics/conviva/build.gradle.kts @@ -5,6 +5,7 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { alias(libs.plugins.android.library) alias(libs.plugins.dokka) + id("android-connector.library-conventions") } apply(from = "$rootDir/connectors/publish.gradle") diff --git a/connectors/analytics/nielsen/build.gradle.kts b/connectors/analytics/nielsen/build.gradle.kts index 1063d528..7e6949fa 100644 --- a/connectors/analytics/nielsen/build.gradle.kts +++ b/connectors/analytics/nielsen/build.gradle.kts @@ -5,6 +5,7 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { alias(libs.plugins.android.library) alias(libs.plugins.dokka) + id("android-connector.library-conventions") } apply(from = "$rootDir/connectors/publish.gradle") diff --git a/connectors/mediasession/build.gradle.kts b/connectors/mediasession/build.gradle.kts index 99d7c0f6..c76bc68d 100644 --- a/connectors/mediasession/build.gradle.kts +++ b/connectors/mediasession/build.gradle.kts @@ -5,6 +5,7 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { alias(libs.plugins.android.library) alias(libs.plugins.dokka) + id("android-connector.library-conventions") } apply(from = "$rootDir/connectors/publish.gradle") diff --git a/connectors/publish.gradle b/connectors/publish.gradle index 789e864d..516ea699 100644 --- a/connectors/publish.gradle +++ b/connectors/publish.gradle @@ -19,25 +19,6 @@ tasks.register("dokkaJavadocJar", Jar) { afterEvaluate { publishing { - repositories { - maven { - name = "reposilite" - url = uri("https://maven.theoplayer.com/releases") - credentials { - username = System.getenv("REPOSILITE_USERNAME") - password = System.getenv("REPOSILITE_PASSWORD") - } - } - maven { - name = "GitHubPackages" - url = uri("https://maven.pkg.github.com/THEOplayer/android-connector") - credentials { - username = System.getenv("GITHUB_ACTOR") - password = System.getenv("GITHUB_TOKEN") - } - } - } - publications { release(MavenPublication) { groupId project.ext.groupId diff --git a/connectors/uplynk/build.gradle.kts b/connectors/uplynk/build.gradle.kts index e32b6df5..e7abb411 100644 --- a/connectors/uplynk/build.gradle.kts +++ b/connectors/uplynk/build.gradle.kts @@ -6,6 +6,7 @@ plugins { alias(libs.plugins.android.library) alias(libs.plugins.kotlinx.serialization) alias(libs.plugins.dokka) + id("android-connector.library-conventions") } apply(from = "$rootDir/connectors/publish.gradle") diff --git a/connectors/yospace/build.gradle.kts b/connectors/yospace/build.gradle.kts index 86367a89..7b7cf5d3 100644 --- a/connectors/yospace/build.gradle.kts +++ b/connectors/yospace/build.gradle.kts @@ -6,6 +6,7 @@ plugins { alias(libs.plugins.android.library) alias(libs.plugins.kotlinx.serialization) alias(libs.plugins.dokka) + id("android-connector.library-conventions") } apply(from = "$rootDir/connectors/publish.gradle") diff --git a/settings.gradle.kts b/settings.gradle.kts index e8ba0314..c1fb495b 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,4 +1,5 @@ pluginManagement { + includeBuild("build-logic") repositories { gradlePluginPortal() google() From 17bb2aca78910e127beddf729700596c7a8442e3 Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 14:48:19 +0100 Subject: [PATCH 13/27] Refactor to convention plugin class --- build-logic/convention/build.gradle.kts | 20 ++++++++++++ ...AndroidConnectorLibraryConventionPlugin.kt | 32 +++++++++++++++++++ ...d-connector.library-conventions.gradle.kts | 24 -------------- .../analytics/comscore/build.gradle.kts | 2 +- connectors/analytics/conviva/build.gradle.kts | 2 +- connectors/analytics/nielsen/build.gradle.kts | 2 +- connectors/mediasession/build.gradle.kts | 2 +- connectors/uplynk/build.gradle.kts | 2 +- connectors/yospace/build.gradle.kts | 2 +- gradle/libs.versions.toml | 6 ++++ 10 files changed, 64 insertions(+), 30 deletions(-) create mode 100644 build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt delete mode 100644 build-logic/convention/src/main/kotlin/android-connector.library-conventions.gradle.kts diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts index bc0172f0..7fd09e94 100644 --- a/build-logic/convention/build.gradle.kts +++ b/build-logic/convention/build.gradle.kts @@ -1,3 +1,23 @@ plugins { `kotlin-dsl` } + +dependencies { + compileOnly(libs.kotlin.gradlePlugin) +} + +gradlePlugin { + plugins { + register("androidConnectorLibrary") { + id = libs.plugins.android.connector.library.get().pluginId + implementationClass = "AndroidConnectorLibraryConventionPlugin" + } + } +} + +tasks { + validatePlugins { + enableStricterValidation = true + failOnWarning = true + } +} diff --git a/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt new file mode 100644 index 00000000..d306c9ca --- /dev/null +++ b/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt @@ -0,0 +1,32 @@ +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.api.publish.PublishingExtension +import org.gradle.kotlin.dsl.apply +import org.gradle.kotlin.dsl.configure + +abstract class AndroidConnectorLibraryConventionPlugin : Plugin { + override fun apply(target: Project) = with(target) { + apply(plugin = "maven-publish") + + extensions.configure { + repositories { + maven { + name = "reposilite" + url = uri("https://maven.theoplayer.com/releases") + credentials { + username = System.getenv("REPOSILITE_USERNAME") + password = System.getenv("REPOSILITE_PASSWORD") + } + } + maven { + name = "GitHubPackages" + url = uri("https://maven.pkg.github.com/THEOplayer/android-connector") + credentials { + username = System.getenv("GITHUB_ACTOR") + password = System.getenv("GITHUB_TOKEN") + } + } + } + } + } +} \ No newline at end of file diff --git a/build-logic/convention/src/main/kotlin/android-connector.library-conventions.gradle.kts b/build-logic/convention/src/main/kotlin/android-connector.library-conventions.gradle.kts deleted file mode 100644 index 58632a7e..00000000 --- a/build-logic/convention/src/main/kotlin/android-connector.library-conventions.gradle.kts +++ /dev/null @@ -1,24 +0,0 @@ -plugins { - `maven-publish` -} - -publishing { - repositories { - maven { - name = "reposilite" - url = uri("https://maven.theoplayer.com/releases") - credentials { - username = System.getenv("REPOSILITE_USERNAME") - password = System.getenv("REPOSILITE_PASSWORD") - } - } - maven { - name = "GitHubPackages" - url = uri("https://maven.pkg.github.com/THEOplayer/android-connector") - credentials { - username = System.getenv("GITHUB_ACTOR") - password = System.getenv("GITHUB_TOKEN") - } - } - } -} diff --git a/connectors/analytics/comscore/build.gradle.kts b/connectors/analytics/comscore/build.gradle.kts index a35a213c..cfb18abb 100644 --- a/connectors/analytics/comscore/build.gradle.kts +++ b/connectors/analytics/comscore/build.gradle.kts @@ -5,7 +5,7 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { alias(libs.plugins.android.library) alias(libs.plugins.dokka) - id("android-connector.library-conventions") + alias(libs.plugins.android.connector.library) } apply(from = "$rootDir/connectors/publish.gradle") diff --git a/connectors/analytics/conviva/build.gradle.kts b/connectors/analytics/conviva/build.gradle.kts index dcf1bdd1..af539192 100644 --- a/connectors/analytics/conviva/build.gradle.kts +++ b/connectors/analytics/conviva/build.gradle.kts @@ -5,7 +5,7 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { alias(libs.plugins.android.library) alias(libs.plugins.dokka) - id("android-connector.library-conventions") + alias(libs.plugins.android.connector.library) } apply(from = "$rootDir/connectors/publish.gradle") diff --git a/connectors/analytics/nielsen/build.gradle.kts b/connectors/analytics/nielsen/build.gradle.kts index 7e6949fa..214ae1c1 100644 --- a/connectors/analytics/nielsen/build.gradle.kts +++ b/connectors/analytics/nielsen/build.gradle.kts @@ -5,7 +5,7 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { alias(libs.plugins.android.library) alias(libs.plugins.dokka) - id("android-connector.library-conventions") + alias(libs.plugins.android.connector.library) } apply(from = "$rootDir/connectors/publish.gradle") diff --git a/connectors/mediasession/build.gradle.kts b/connectors/mediasession/build.gradle.kts index c76bc68d..4f8830b3 100644 --- a/connectors/mediasession/build.gradle.kts +++ b/connectors/mediasession/build.gradle.kts @@ -5,7 +5,7 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { alias(libs.plugins.android.library) alias(libs.plugins.dokka) - id("android-connector.library-conventions") + alias(libs.plugins.android.connector.library) } apply(from = "$rootDir/connectors/publish.gradle") diff --git a/connectors/uplynk/build.gradle.kts b/connectors/uplynk/build.gradle.kts index e7abb411..4eb2c042 100644 --- a/connectors/uplynk/build.gradle.kts +++ b/connectors/uplynk/build.gradle.kts @@ -6,7 +6,7 @@ plugins { alias(libs.plugins.android.library) alias(libs.plugins.kotlinx.serialization) alias(libs.plugins.dokka) - id("android-connector.library-conventions") + alias(libs.plugins.android.connector.library) } apply(from = "$rootDir/connectors/publish.gradle") diff --git a/connectors/yospace/build.gradle.kts b/connectors/yospace/build.gradle.kts index 7b7cf5d3..0390c6df 100644 --- a/connectors/yospace/build.gradle.kts +++ b/connectors/yospace/build.gradle.kts @@ -6,7 +6,7 @@ plugins { alias(libs.plugins.android.library) alias(libs.plugins.kotlinx.serialization) alias(libs.plugins.dokka) - id("android-connector.library-conventions") + alias(libs.plugins.android.connector.library) } apply(from = "$rootDir/connectors/publish.gradle") diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7775be63..6234dbaa 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -53,9 +53,15 @@ nielsen = { group = "com.nielsenappsdk.global", name = "ad", version.ref = "niel comscore = { group = "com.comscore", name = "android-analytics", version.ref = "comscore" } yospace = { group = "com.yospace", name = "admanagement-sdk", version.ref = "yospace" } +# build-logic +kotlin-gradlePlugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" } + [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" } compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } kotlinx-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlinxSerialization" } dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } + +# build-logic +android-connector-library = { id = "com.theoplayer.android.connector.library" } From c3d0980063195c6bbbc361ab25e56915319a8c73 Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 15:10:56 +0100 Subject: [PATCH 14/27] Move more stuff to convention plugin --- build-logic/convention/build.gradle.kts | 3 ++ ...AndroidConnectorLibraryConventionPlugin.kt | 42 +++++++++++++++++++ build-logic/settings.gradle.kts | 7 ++++ .../analytics/comscore/build.gradle.kts | 32 -------------- connectors/analytics/conviva/build.gradle.kts | 32 -------------- connectors/analytics/nielsen/build.gradle.kts | 32 -------------- connectors/mediasession/build.gradle.kts | 36 ---------------- connectors/uplynk/build.gradle.kts | 35 +--------------- connectors/yospace/build.gradle.kts | 33 +-------------- gradle/libs.versions.toml | 4 ++ 10 files changed, 58 insertions(+), 198 deletions(-) diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts index 7fd09e94..5c9f2c28 100644 --- a/build-logic/convention/build.gradle.kts +++ b/build-logic/convention/build.gradle.kts @@ -3,7 +3,10 @@ plugins { } dependencies { + compileOnly(libs.android.gradlePlugin) + compileOnly(libs.android.tools.common) compileOnly(libs.kotlin.gradlePlugin) + compileOnly(libs.dokka.gradlePlugin) } gradlePlugin { diff --git a/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt index d306c9ca..6ff7a2ce 100644 --- a/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt @@ -1,13 +1,55 @@ +import com.android.build.api.dsl.LibraryExtension +import org.gradle.api.JavaVersion import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.publish.PublishingExtension import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.configure +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidExtension +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion abstract class AndroidConnectorLibraryConventionPlugin : Plugin { override fun apply(target: Project) = with(target) { + apply(plugin = "com.android.library") + apply(plugin = "org.jetbrains.dokka") apply(plugin = "maven-publish") + extensions.configure { + compileSdk = 36 + + defaultConfig { + minSdk = 23 + consumerProguardFiles(file("consumer-rules.pro")) + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + file("proguard-rules.pro") + ) + } + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + + buildFeatures { + buildConfig = true + } + } + + extensions.configure { + compilerOptions { + apiVersion.set(KotlinVersion.KOTLIN_2_0) + jvmTarget.set(JvmTarget.JVM_1_8) + } + } + extensions.configure { repositories { maven { diff --git a/build-logic/settings.gradle.kts b/build-logic/settings.gradle.kts index 1c10c0cc..8338ba5b 100644 --- a/build-logic/settings.gradle.kts +++ b/build-logic/settings.gradle.kts @@ -1,5 +1,12 @@ dependencyResolutionManagement { repositories { + google { + content { + includeGroupByRegex("com\\.android.*") + includeGroupByRegex("com\\.google.*") + includeGroupByRegex("androidx.*") + } + } gradlePluginPortal() mavenCentral() } diff --git a/connectors/analytics/comscore/build.gradle.kts b/connectors/analytics/comscore/build.gradle.kts index cfb18abb..b029fa9e 100644 --- a/connectors/analytics/comscore/build.gradle.kts +++ b/connectors/analytics/comscore/build.gradle.kts @@ -1,44 +1,12 @@ import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { - alias(libs.plugins.android.library) - alias(libs.plugins.dokka) alias(libs.plugins.android.connector.library) } apply(from = "$rootDir/connectors/publish.gradle") android { namespace = "com.theoplayer.android.connector.analytics.comscore" - compileSdk = 36 - - defaultConfig { - minSdk = 23 - consumerProguardFiles("consumer-rules.pro") - } - - buildTypes { - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - } - } - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - - kotlin { - compilerOptions { - apiVersion = KotlinVersion.KOTLIN_2_0 - jvmTarget = JvmTarget.JVM_1_8 - } - } buildFeatures { buildConfig = true diff --git a/connectors/analytics/conviva/build.gradle.kts b/connectors/analytics/conviva/build.gradle.kts index af539192..c7d5fd0e 100644 --- a/connectors/analytics/conviva/build.gradle.kts +++ b/connectors/analytics/conviva/build.gradle.kts @@ -1,44 +1,12 @@ import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { - alias(libs.plugins.android.library) - alias(libs.plugins.dokka) alias(libs.plugins.android.connector.library) } apply(from = "$rootDir/connectors/publish.gradle") android { namespace = "com.theoplayer.android.connector.analytics.conviva" - compileSdk = 36 - - defaultConfig { - minSdk = 23 - consumerProguardFiles("consumer-rules.pro") - } - - buildTypes { - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - } - } - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - - kotlin { - compilerOptions { - apiVersion = KotlinVersion.KOTLIN_2_0 - jvmTarget = JvmTarget.JVM_1_8 - } - } buildFeatures { buildConfig = true diff --git a/connectors/analytics/nielsen/build.gradle.kts b/connectors/analytics/nielsen/build.gradle.kts index 214ae1c1..64167873 100644 --- a/connectors/analytics/nielsen/build.gradle.kts +++ b/connectors/analytics/nielsen/build.gradle.kts @@ -1,44 +1,12 @@ import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { - alias(libs.plugins.android.library) - alias(libs.plugins.dokka) alias(libs.plugins.android.connector.library) } apply(from = "$rootDir/connectors/publish.gradle") android { namespace = "com.theoplayer.android.connector.analytics.nielsen" - compileSdk = 36 - - defaultConfig { - minSdk = 23 - consumerProguardFiles("consumer-rules.pro") - } - - buildTypes { - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - } - } - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - - kotlin { - compilerOptions { - apiVersion = KotlinVersion.KOTLIN_2_0 - jvmTarget = JvmTarget.JVM_1_8 - } - } } dependencies { diff --git a/connectors/mediasession/build.gradle.kts b/connectors/mediasession/build.gradle.kts index 4f8830b3..51a31a34 100644 --- a/connectors/mediasession/build.gradle.kts +++ b/connectors/mediasession/build.gradle.kts @@ -1,48 +1,12 @@ import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { - alias(libs.plugins.android.library) - alias(libs.plugins.dokka) alias(libs.plugins.android.connector.library) } apply(from = "$rootDir/connectors/publish.gradle") android { namespace = "com.theoplayer.android.connector.mediasession" - compileSdk = 36 - - defaultConfig { - minSdk = 23 - consumerProguardFiles("consumer-rules.pro") - } - - buildTypes { - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - } - } - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - - kotlin { - compilerOptions { - apiVersion = KotlinVersion.KOTLIN_2_0 - jvmTarget = JvmTarget.JVM_1_8 - } - } - - buildFeatures { - buildConfig = true - } } dependencies { diff --git a/connectors/uplynk/build.gradle.kts b/connectors/uplynk/build.gradle.kts index 4eb2c042..363c0e44 100644 --- a/connectors/uplynk/build.gradle.kts +++ b/connectors/uplynk/build.gradle.kts @@ -1,46 +1,13 @@ import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { - alias(libs.plugins.android.library) - alias(libs.plugins.kotlinx.serialization) - alias(libs.plugins.dokka) alias(libs.plugins.android.connector.library) + alias(libs.plugins.kotlinx.serialization) } apply(from = "$rootDir/connectors/publish.gradle") android { namespace = "com.theoplayer.android.connector.uplynk" - compileSdk = 36 - - defaultConfig { - minSdk = 23 - consumerProguardFiles("consumer-rules.pro") - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - } - } - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - - kotlin { - compilerOptions { - apiVersion = KotlinVersion.KOTLIN_2_0 - jvmTarget = JvmTarget.JVM_1_8 - } - } } dependencies { diff --git a/connectors/yospace/build.gradle.kts b/connectors/yospace/build.gradle.kts index 0390c6df..d2ed4bf3 100644 --- a/connectors/yospace/build.gradle.kts +++ b/connectors/yospace/build.gradle.kts @@ -1,50 +1,19 @@ import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { - alias(libs.plugins.android.library) - alias(libs.plugins.kotlinx.serialization) - alias(libs.plugins.dokka) alias(libs.plugins.android.connector.library) + alias(libs.plugins.kotlinx.serialization) } apply(from = "$rootDir/connectors/publish.gradle") android { namespace = "com.theoplayer.android.connector.yospace" - compileSdk = 36 defaultConfig { val connectorVersion: String by project.ext - - minSdk = 23 - consumerProguardFiles("consumer-rules.pro") - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" buildConfigField("String", "LIBRARY_VERSION", "\"${connectorVersion}\"") } - buildTypes { - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - } - } - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - - kotlin { - compilerOptions { - apiVersion = KotlinVersion.KOTLIN_2_0 - jvmTarget = JvmTarget.JVM_1_8 - } - } - buildFeatures { buildConfig = true } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 6234dbaa..e6d551b4 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,6 @@ [versions] androidGradlePlugin = "9.1.0" +androidTools = "32.1.0" kotlin = "2.2.10" kotlinxSerialization = "2.2.10" kotlinxSerializationJson = "1.9.0" @@ -54,7 +55,10 @@ comscore = { group = "com.comscore", name = "android-analytics", version.ref = " yospace = { group = "com.yospace", name = "admanagement-sdk", version.ref = "yospace" } # build-logic +android-gradlePlugin = { group = "com.android.tools.build", name = "gradle-api", version.ref = "androidGradlePlugin" } +android-tools-common = { group = "com.android.tools", name = "common", version.ref = "androidTools" } kotlin-gradlePlugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" } +dokka-gradlePlugin = { group = "org.jetbrains.dokka", name = "dokka-gradle-plugin", version.ref = "dokka" } [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } From f6c363aaa9eb12aec5d5ffe5ae45fc68bf4a1c2a Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 15:16:29 +0100 Subject: [PATCH 15/27] Tweak --- .../src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt index 6ff7a2ce..cc781591 100644 --- a/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt @@ -9,7 +9,7 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidExtension import org.jetbrains.kotlin.gradle.dsl.KotlinVersion -abstract class AndroidConnectorLibraryConventionPlugin : Plugin { +class AndroidConnectorLibraryConventionPlugin : Plugin { override fun apply(target: Project) = with(target) { apply(plugin = "com.android.library") apply(plugin = "org.jetbrains.dokka") From 8f5c4c6048045e5a350f2eefdad6d19bd0736dce Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 15:24:34 +0100 Subject: [PATCH 16/27] Move THEOplayer to version catalog --- app/build.gradle | 6 +++--- connectors/analytics/comscore/build.gradle.kts | 6 ++---- connectors/analytics/conviva/build.gradle.kts | 8 +++----- connectors/analytics/nielsen/build.gradle.kts | 6 ++---- connectors/mediasession/build.gradle.kts | 4 +--- connectors/uplynk/build.gradle.kts | 6 ++---- connectors/yospace/build.gradle.kts | 6 ++---- gradle/libs.versions.toml | 5 +++++ 8 files changed, 20 insertions(+), 27 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 6df65693..71b71e10 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -57,9 +57,9 @@ dependencies { implementation libs.androidx.compose.ui.tooling.preview debugImplementation libs.androidx.compose.ui.tooling - implementation "com.theoplayer.theoplayer-sdk-android:core:$sdkVersion" - implementation "com.theoplayer.theoplayer-sdk-android:integration-ads-ima:$sdkVersion" - implementation "com.theoplayer.theoplayer-sdk-android:integration-ads-dai:$sdkVersion" + implementation libs.theoplayer + implementation libs.theoplayer.integration.ima + implementation libs.theoplayer.integration.dai implementation libs.theoplayer.android.ui implementation project(":connectors:analytics:conviva") diff --git a/connectors/analytics/comscore/build.gradle.kts b/connectors/analytics/comscore/build.gradle.kts index b029fa9e..4aa61c7f 100644 --- a/connectors/analytics/comscore/build.gradle.kts +++ b/connectors/analytics/comscore/build.gradle.kts @@ -14,10 +14,8 @@ android { } dependencies { - val sdkVersion: String by project.ext - - compileOnly("com.theoplayer.theoplayer-sdk-android:core:$sdkVersion") - compileOnly("com.theoplayer.theoplayer-sdk-android:integration-ads-ima:$sdkVersion") + compileOnly(libs.theoplayer) + compileOnly(libs.theoplayer.integration.ima) compileOnly(libs.comscore) } diff --git a/connectors/analytics/conviva/build.gradle.kts b/connectors/analytics/conviva/build.gradle.kts index c7d5fd0e..5b48a5d3 100644 --- a/connectors/analytics/conviva/build.gradle.kts +++ b/connectors/analytics/conviva/build.gradle.kts @@ -14,11 +14,9 @@ android { } dependencies { - val sdkVersion: String by project.ext - - compileOnly("com.theoplayer.theoplayer-sdk-android:core:$sdkVersion") - compileOnly("com.theoplayer.theoplayer-sdk-android:integration-ads-ima:$sdkVersion") - compileOnly("com.theoplayer.theoplayer-sdk-android:integration-ads-theoads:$sdkVersion") + compileOnly(libs.theoplayer) + compileOnly(libs.theoplayer.integration.ima) + compileOnly(libs.theoplayer.integration.theoads) compileOnly(libs.conviva) implementation(libs.androidx.lifecycle.process) diff --git a/connectors/analytics/nielsen/build.gradle.kts b/connectors/analytics/nielsen/build.gradle.kts index 64167873..1ab1697f 100644 --- a/connectors/analytics/nielsen/build.gradle.kts +++ b/connectors/analytics/nielsen/build.gradle.kts @@ -10,12 +10,10 @@ android { } dependencies { - val sdkVersion: String by project.ext - implementation(libs.androidx.lifecycle.process) - compileOnly("com.theoplayer.theoplayer-sdk-android:core:$sdkVersion") - compileOnly("com.theoplayer.theoplayer-sdk-android:integration-ads-ima:$sdkVersion") + compileOnly(libs.theoplayer) + compileOnly(libs.theoplayer.integration.ima) compileOnly(libs.nielsen) } diff --git a/connectors/mediasession/build.gradle.kts b/connectors/mediasession/build.gradle.kts index 51a31a34..1cfaabaa 100644 --- a/connectors/mediasession/build.gradle.kts +++ b/connectors/mediasession/build.gradle.kts @@ -10,10 +10,8 @@ android { } dependencies { - val sdkVersion: String by project.ext - implementation(libs.androidx.media) - compileOnly("com.theoplayer.theoplayer-sdk-android:core:$sdkVersion") + compileOnly(libs.theoplayer) } tasks.withType(AbstractDokkaLeafTask::class).configureEach { diff --git a/connectors/uplynk/build.gradle.kts b/connectors/uplynk/build.gradle.kts index 363c0e44..6388ef49 100644 --- a/connectors/uplynk/build.gradle.kts +++ b/connectors/uplynk/build.gradle.kts @@ -11,14 +11,12 @@ android { } dependencies { - val sdkVersion: String by project.ext - - compileOnly("com.theoplayer.theoplayer-sdk-android:core:$sdkVersion") + compileOnly(libs.theoplayer) implementation(libs.kotlinx.serialization.json) implementation(libs.kotlinx.coroutines.android) testImplementation(libs.junit) - testImplementation("com.theoplayer.theoplayer-sdk-android:core:$sdkVersion") + testImplementation(libs.theoplayer) testImplementation(libs.mockito.inline) testImplementation(libs.mockito.kotlin) testImplementation(libs.kotlin.test.junit) diff --git a/connectors/yospace/build.gradle.kts b/connectors/yospace/build.gradle.kts index d2ed4bf3..ea232f24 100644 --- a/connectors/yospace/build.gradle.kts +++ b/connectors/yospace/build.gradle.kts @@ -20,10 +20,8 @@ android { } dependencies { - val sdkVersion: String by project.ext - implementation(libs.androidx.core.ktx) - compileOnly("com.theoplayer.theoplayer-sdk-android:core:$sdkVersion") + compileOnly(libs.theoplayer) compileOnly(libs.yospace) { version { strictly("[3.6, 4.0)") @@ -35,7 +33,7 @@ dependencies { // Tests testImplementation(libs.androidx.test.core) testImplementation(libs.androidx.test.ext.junit) - testImplementation("com.theoplayer.theoplayer-sdk-android:core:$sdkVersion") + testImplementation(libs.theoplayer) testImplementation(libs.yospace) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e6d551b4..60b4b0f4 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -13,6 +13,7 @@ androidxComposeBom = "2025.08.01" androidxLifecycle = "2.5.1" androidxMedia = "1.7.1" kotlinxCoroutines = "1.10.2" +theoplayer = "10.12.1" theoplayerAndroidUi = "1.13.0" junit = "4.13.2" kotlinTestJunit = "2.2.10" @@ -48,6 +49,10 @@ kotlin-test-junit = { group = "org.jetbrains.kotlin", name = "kotlin-test-junit" junit = { group = "junit", name = "junit", version.ref = "junit" } mockito-inline = { group = "org.mockito", name = "mockito-inline", version.ref = "mockito" } mockito-kotlin = { group = "org.mockito.kotlin", name = "mockito-kotlin", version.ref = "mockitoKotlin" } +theoplayer = { group = "com.theoplayer.theoplayer-sdk-android", name = "core", version.ref = "theoplayer" } +theoplayer-integration-dai = { group = "com.theoplayer.theoplayer-sdk-android", name = "integration-ads-dai", version.ref = "theoplayer" } +theoplayer-integration-ima = { group = "com.theoplayer.theoplayer-sdk-android", name = "integration-ads-ima", version.ref = "theoplayer" } +theoplayer-integration-theoads = { group = "com.theoplayer.theoplayer-sdk-android", name = "integration-ads-theoads", version.ref = "theoplayer" } theoplayer-android-ui = { group = "com.theoplayer.android-ui", name = "android-ui", version.ref = "theoplayerAndroidUi" } conviva = { group = "com.conviva.sdk", name = "conviva-core-sdk", version.ref = "conviva" } nielsen = { group = "com.nielsenappsdk.global", name = "ad", version.ref = "nielsen" } From 6c72fe554b4ecf9c84cbd604f0b267061b91356d Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 15:37:37 +0100 Subject: [PATCH 17/27] Move more publishing to convention plugin --- ...AndroidConnectorLibraryConventionPlugin.kt | 21 +++++++++++++++ .../main/kotlin/VersionCatalogExtensions.kt | 26 +++++++++++++++++++ connectors/publish.gradle | 14 ---------- gradle/libs.versions.toml | 1 + 4 files changed, 48 insertions(+), 14 deletions(-) create mode 100644 build-logic/convention/src/main/kotlin/VersionCatalogExtensions.kt diff --git a/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt index cc781591..069d6f93 100644 --- a/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt @@ -3,8 +3,10 @@ import org.gradle.api.JavaVersion import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.publish.PublishingExtension +import org.gradle.api.publish.maven.MavenPublication import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.register import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidExtension import org.jetbrains.kotlin.gradle.dsl.KotlinVersion @@ -41,6 +43,14 @@ class AndroidConnectorLibraryConventionPlugin : Plugin { buildFeatures { buildConfig = true } + + publishing { + singleVariant("release") { + withSourcesJar() + // We use Dokka for JavaDoc generation, see dokkaJavadocJar below + // withJavadocJar() + } + } } extensions.configure { @@ -69,6 +79,17 @@ class AndroidConnectorLibraryConventionPlugin : Plugin { } } } + + afterEvaluate { + publications { + register("release") { + groupId = "com.theoplayer.android-connector" + artifactId = project.name + version = libs.versions.androidConnector + from(components.getByName("release")) + } + } + } } } } \ No newline at end of file diff --git a/build-logic/convention/src/main/kotlin/VersionCatalogExtensions.kt b/build-logic/convention/src/main/kotlin/VersionCatalogExtensions.kt new file mode 100644 index 00000000..3e5e2b02 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/VersionCatalogExtensions.kt @@ -0,0 +1,26 @@ +import org.gradle.api.Project +import org.gradle.api.artifacts.VersionCatalog +import org.gradle.api.artifacts.VersionCatalogsExtension +import org.gradle.kotlin.dsl.getByType + +internal val Project.libs: VersionCatalog + get() = getVersionCatalog() + +private fun Project.getVersionCatalog(name: String = "libs"): VersionCatalog { + return extensions + .getByType() + .named(name) +} + +internal val VersionCatalog.versions: Versions + get() = Versions(this) + +class Versions(catalog: VersionCatalog) { + val androidConnector: String = catalog.findVersionOrThrow("androidConnector") +} + +internal fun VersionCatalog.findVersionOrThrow(name: String): String { + return findVersion(name) + .orElseThrow { NoSuchElementException("Version $name not found in version catalog") } + .requiredVersion +} \ No newline at end of file diff --git a/connectors/publish.gradle b/connectors/publish.gradle index 516ea699..58f0ace1 100644 --- a/connectors/publish.gradle +++ b/connectors/publish.gradle @@ -1,15 +1,5 @@ apply plugin: 'maven-publish' -android { - publishing { - singleVariant("release") { - withSourcesJar() - // We use Dokka for JavaDoc generation, see dokkaJavadocJar below - // withJavadocJar() - } - } -} - tasks.register("dokkaJavadocJar", Jar) { group = "documentation" dependsOn(tasks.dokkaJavadoc) @@ -21,11 +11,7 @@ afterEvaluate { publishing { publications { release(MavenPublication) { - groupId project.ext.groupId - artifactId project.name - version project.ext.connectorVersion artifact(tasks.dokkaJavadocJar) - from components.release } } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 60b4b0f4..f6fb9734 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,4 +1,5 @@ [versions] +androidConnector = "10.12.1" androidGradlePlugin = "9.1.0" androidTools = "32.1.0" kotlin = "2.2.10" From 6c5e733f6a8de12944921b5bc4544b6339c38f17 Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 15:43:47 +0100 Subject: [PATCH 18/27] Move dokkaJavadocJar to convention plugin --- .../AndroidConnectorLibraryConventionPlugin.kt | 11 +++++++++++ connectors/analytics/comscore/build.gradle.kts | 1 - connectors/analytics/conviva/build.gradle.kts | 1 - connectors/analytics/nielsen/build.gradle.kts | 1 - connectors/mediasession/build.gradle.kts | 1 - connectors/publish.gradle | 18 ------------------ connectors/uplynk/build.gradle.kts | 1 - connectors/yospace/build.gradle.kts | 1 - 8 files changed, 11 insertions(+), 24 deletions(-) delete mode 100644 connectors/publish.gradle diff --git a/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt index 069d6f93..dc797486 100644 --- a/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt @@ -4,6 +4,7 @@ import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.publish.PublishingExtension import org.gradle.api.publish.maven.MavenPublication +import org.gradle.jvm.tasks.Jar import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.register @@ -60,6 +61,15 @@ class AndroidConnectorLibraryConventionPlugin : Plugin { } } + val dokkaJavadocJar = tasks.register("dokkaJavadocJar") { + val dokkaJavadoc = tasks.named("dokkaJavadoc") + + group = "documentation" + dependsOn(dokkaJavadoc) + from(dokkaJavadoc) + archiveClassifier.set("javadoc") + } + extensions.configure { repositories { maven { @@ -86,6 +96,7 @@ class AndroidConnectorLibraryConventionPlugin : Plugin { groupId = "com.theoplayer.android-connector" artifactId = project.name version = libs.versions.androidConnector + artifact(dokkaJavadocJar) from(components.getByName("release")) } } diff --git a/connectors/analytics/comscore/build.gradle.kts b/connectors/analytics/comscore/build.gradle.kts index 4aa61c7f..9e785934 100644 --- a/connectors/analytics/comscore/build.gradle.kts +++ b/connectors/analytics/comscore/build.gradle.kts @@ -3,7 +3,6 @@ import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask plugins { alias(libs.plugins.android.connector.library) } -apply(from = "$rootDir/connectors/publish.gradle") android { namespace = "com.theoplayer.android.connector.analytics.comscore" diff --git a/connectors/analytics/conviva/build.gradle.kts b/connectors/analytics/conviva/build.gradle.kts index 5b48a5d3..ca0e18d6 100644 --- a/connectors/analytics/conviva/build.gradle.kts +++ b/connectors/analytics/conviva/build.gradle.kts @@ -3,7 +3,6 @@ import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask plugins { alias(libs.plugins.android.connector.library) } -apply(from = "$rootDir/connectors/publish.gradle") android { namespace = "com.theoplayer.android.connector.analytics.conviva" diff --git a/connectors/analytics/nielsen/build.gradle.kts b/connectors/analytics/nielsen/build.gradle.kts index 1ab1697f..ce5156bd 100644 --- a/connectors/analytics/nielsen/build.gradle.kts +++ b/connectors/analytics/nielsen/build.gradle.kts @@ -3,7 +3,6 @@ import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask plugins { alias(libs.plugins.android.connector.library) } -apply(from = "$rootDir/connectors/publish.gradle") android { namespace = "com.theoplayer.android.connector.analytics.nielsen" diff --git a/connectors/mediasession/build.gradle.kts b/connectors/mediasession/build.gradle.kts index 1cfaabaa..36e1969e 100644 --- a/connectors/mediasession/build.gradle.kts +++ b/connectors/mediasession/build.gradle.kts @@ -3,7 +3,6 @@ import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask plugins { alias(libs.plugins.android.connector.library) } -apply(from = "$rootDir/connectors/publish.gradle") android { namespace = "com.theoplayer.android.connector.mediasession" diff --git a/connectors/publish.gradle b/connectors/publish.gradle deleted file mode 100644 index 58f0ace1..00000000 --- a/connectors/publish.gradle +++ /dev/null @@ -1,18 +0,0 @@ -apply plugin: 'maven-publish' - -tasks.register("dokkaJavadocJar", Jar) { - group = "documentation" - dependsOn(tasks.dokkaJavadoc) - from(tasks.dokkaJavadoc) - archiveClassifier.set("javadoc") -} - -afterEvaluate { - publishing { - publications { - release(MavenPublication) { - artifact(tasks.dokkaJavadocJar) - } - } - } -} diff --git a/connectors/uplynk/build.gradle.kts b/connectors/uplynk/build.gradle.kts index 6388ef49..fe02b61b 100644 --- a/connectors/uplynk/build.gradle.kts +++ b/connectors/uplynk/build.gradle.kts @@ -4,7 +4,6 @@ plugins { alias(libs.plugins.android.connector.library) alias(libs.plugins.kotlinx.serialization) } -apply(from = "$rootDir/connectors/publish.gradle") android { namespace = "com.theoplayer.android.connector.uplynk" diff --git a/connectors/yospace/build.gradle.kts b/connectors/yospace/build.gradle.kts index ea232f24..4e0dbd5f 100644 --- a/connectors/yospace/build.gradle.kts +++ b/connectors/yospace/build.gradle.kts @@ -4,7 +4,6 @@ plugins { alias(libs.plugins.android.connector.library) alias(libs.plugins.kotlinx.serialization) } -apply(from = "$rootDir/connectors/publish.gradle") android { namespace = "com.theoplayer.android.connector.yospace" From e6072f21034a1d8b331691d29e523ac447de0129 Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 15:52:42 +0100 Subject: [PATCH 19/27] Convert build.gradle in app to Kotlin --- app/build.gradle | 79 -------------------------------------------- app/build.gradle.kts | 79 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+), 79 deletions(-) delete mode 100644 app/build.gradle create mode 100644 app/build.gradle.kts diff --git a/app/build.gradle b/app/build.gradle deleted file mode 100644 index 71b71e10..00000000 --- a/app/build.gradle +++ /dev/null @@ -1,79 +0,0 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.dsl.KotlinVersion - -plugins { - alias libs.plugins.android.application - alias libs.plugins.compose.compiler -} - -android { - namespace 'com.theoplayer.android.connector' - compileSdk 36 - - defaultConfig { - applicationId "com.theoplayer.android.connector" - minSdk 23 - targetSdk 36 - versionCode 1 - versionName "1.0" - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - - compileOptions { - 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 - } -} - -dependencies { - implementation libs.androidx.core.ktx - implementation libs.androidx.appcompat - implementation libs.kotlinx.coroutines.android - - def composeBom = platform(libs.androidx.compose.bom) - implementation(composeBom) - androidTestImplementation(composeBom) - implementation libs.androidx.activity.compose - implementation libs.androidx.lifecycle.compose - implementation libs.androidx.compose.material3 - implementation libs.androidx.compose.ui.ui - implementation libs.androidx.compose.ui.tooling.preview - debugImplementation libs.androidx.compose.ui.tooling - - implementation libs.theoplayer - implementation libs.theoplayer.integration.ima - implementation libs.theoplayer.integration.dai - implementation libs.theoplayer.android.ui - - implementation project(":connectors:analytics:conviva") - implementation libs.conviva - - implementation project(":connectors:analytics:nielsen") - implementation libs.nielsen - - implementation project(':connectors:analytics:comscore') - implementation libs.comscore - - // FIXME Re-enable Yospace connector - // implementation project(':connectors:yospace') - // implementation libs.yospace - - implementation project(':connectors:uplynk') -} diff --git a/app/build.gradle.kts b/app/build.gradle.kts new file mode 100644 index 00000000..ffcff3bb --- /dev/null +++ b/app/build.gradle.kts @@ -0,0 +1,79 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion + +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.compose.compiler) +} + +android { + namespace = "com.theoplayer.android.connector" + compileSdk = 36 + + defaultConfig { + applicationId = "com.theoplayer.android.connector" + minSdk = 23 + targetSdk = 36 + versionCode = 1 + versionName = "1.0" + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + } + } + + compileOptions { + 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 + } +} + +dependencies { + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.appcompat) + implementation(libs.kotlinx.coroutines.android) + + val composeBom = platform(libs.androidx.compose.bom) + implementation(composeBom) + androidTestImplementation(composeBom) + implementation(libs.androidx.activity.compose) + implementation(libs.androidx.lifecycle.compose) + implementation(libs.androidx.compose.material3) + implementation(libs.androidx.compose.ui.ui) + implementation(libs.androidx.compose.ui.tooling.preview) + debugImplementation(libs.androidx.compose.ui.tooling) + + implementation(libs.theoplayer) + implementation(libs.theoplayer.integration.ima) + implementation(libs.theoplayer.integration.dai) + implementation(libs.theoplayer.android.ui) + + implementation(project(":connectors:analytics:conviva")) + implementation(libs.conviva) + + implementation(project(":connectors:analytics:nielsen")) + implementation(libs.nielsen) + + implementation(project(":connectors:analytics:comscore")) + implementation(libs.comscore) + + // FIXME Re-enable Yospace connector + // implementation(project(":connectors:yospace")) + // implementation(libs.yospace) + + implementation(project(":connectors:uplynk")) +} From 2b00ca4568fc10f3580c2925b6d4937cb831d828 Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 15:56:25 +0100 Subject: [PATCH 20/27] Move --- app/build.gradle.kts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index ffcff3bb..64c4ba6b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -30,18 +30,18 @@ android { targetCompatibility = JavaVersion.VERSION_1_8 } - kotlin { - compilerOptions { - apiVersion = KotlinVersion.KOTLIN_2_0 - jvmTarget = JvmTarget.JVM_1_8 - } - } - buildFeatures { compose = true } } +kotlin { + compilerOptions { + apiVersion = KotlinVersion.KOTLIN_2_0 + jvmTarget = JvmTarget.JVM_1_8 + } +} + dependencies { implementation(libs.androidx.core.ktx) implementation(libs.androidx.appcompat) From 5db7025e80c058ae88ef9c51c2ff6bb5d2a608f8 Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 16:03:46 +0100 Subject: [PATCH 21/27] Write new version to version catalog file --- build.gradle.kts | 21 ++++++++++----------- connectors/yospace/build.gradle.kts | 2 +- gradle.properties | 2 -- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index e9c5d33c..f03629f8 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -22,23 +22,21 @@ plugins { } tasks.register("updateVersion") { - val gradleProperties = rootProject.file("gradle.properties") - inputs.file(gradleProperties) + val versionCatalog = rootProject.file("gradle/libs.versions.toml") + inputs.file(versionCatalog) val sdkVersion: String by project.ext ant.withGroovyBuilder { "replaceregexp"( - "file" to gradleProperties, - "match" to "sdkVersion=.*", - "replace" to "sdkVersion=$sdkVersion", - "flags" to "g", + "file" to versionCatalog, + "match" to """^theoplayer = ".+"$""", + "replace" to """theoplayer = "$sdkVersion"""", "byline" to true ) "replaceregexp"( - "file" to gradleProperties, - "match" to "connectorVersion=.*", - "replace" to "connectorVersion=$sdkVersion", - "flags" to "g", + "file" to versionCatalog, + "match" to """^androidConnector = ".+"$""", + "replace" to """androidConnector = "$sdkVersion"""", "byline" to true ) } @@ -68,8 +66,9 @@ tasks.dokkaHtmlMultiModule.configure { outputDirectory = rootProject.file("site/api") } +val connectorVersion: String = libs.versions.androidConnector.get() + subprojects { - val connectorVersion: String by project.ext version = connectorVersion tasks.withType(AbstractDokkaLeafTask::class).configureEach { diff --git a/connectors/yospace/build.gradle.kts b/connectors/yospace/build.gradle.kts index 4e0dbd5f..f1b293e4 100644 --- a/connectors/yospace/build.gradle.kts +++ b/connectors/yospace/build.gradle.kts @@ -9,7 +9,7 @@ android { namespace = "com.theoplayer.android.connector.yospace" defaultConfig { - val connectorVersion: String by project.ext + val connectorVersion = libs.versions.androidConnector.get() buildConfigField("String", "LIBRARY_VERSION", "\"${connectorVersion}\"") } diff --git a/gradle.properties b/gradle.properties index 97da00f9..854a38c1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -23,5 +23,3 @@ kotlin.code.style=official android.nonTransitiveRClass=true android.nonFinalResIds=true groupId=com.theoplayer.android-connector -sdkVersion=10.12.1 -connectorVersion=10.12.1 From 2665b50ebc9e76890b05c51abfa1b0610a2086da Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 16:07:46 +0100 Subject: [PATCH 22/27] Check input --- build.gradle.kts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index f03629f8..b56cab18 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -25,7 +25,9 @@ tasks.register("updateVersion") { val versionCatalog = rootProject.file("gradle/libs.versions.toml") inputs.file(versionCatalog) - val sdkVersion: String by project.ext + val sdkVersion: String? by project.ext + require(!sdkVersion.isNullOrBlank()) { "Missing sdkVersion" } + ant.withGroovyBuilder { "replaceregexp"( "file" to versionCatalog, From 59077e0b801157c326f99be1ab202bbf14b406ce Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 16:38:10 +0100 Subject: [PATCH 23/27] Update to Dokka 2 --- .github/workflows/docs.yml | 2 +- ...AndroidConnectorLibraryConventionPlugin.kt | 29 ++++++- build.gradle.kts | 78 +++++-------------- .../analytics/comscore/build.gradle.kts | 4 +- connectors/analytics/conviva/build.gradle.kts | 4 +- connectors/analytics/nielsen/build.gradle.kts | 4 +- connectors/mediasession/build.gradle.kts | 4 +- connectors/uplynk/build.gradle.kts | 4 +- connectors/yospace/build.gradle.kts | 4 +- gradle.properties | 1 + gradle/libs.versions.toml | 2 +- 11 files changed, 53 insertions(+), 83 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index c353be07..2d9eff05 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -38,7 +38,7 @@ jobs: - name: Setup Gradle uses: gradle/actions/setup-gradle@v3 - name: Build API documentation with Dokka - run: ./gradlew :dokkaHtmlMultiModule --no-configuration-cache + run: ./gradlew :dokkaGenerateHtml --no-configuration-cache env: YOSPACE_USERNAME: ${{ secrets.YOSPACE_USERNAME }} YOSPACE_PASSWORD: ${{ secrets.YOSPACE_PASSWORD }} diff --git a/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt index dc797486..37555107 100644 --- a/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt @@ -7,7 +7,10 @@ import org.gradle.api.publish.maven.MavenPublication import org.gradle.jvm.tasks.Jar import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.named import org.gradle.kotlin.dsl.register +import org.jetbrains.dokka.gradle.DokkaExtension +import org.jetbrains.dokka.gradle.tasks.DokkaGenerateTask import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidExtension import org.jetbrains.kotlin.gradle.dsl.KotlinVersion @@ -16,6 +19,7 @@ class AndroidConnectorLibraryConventionPlugin : Plugin { override fun apply(target: Project) = with(target) { apply(plugin = "com.android.library") apply(plugin = "org.jetbrains.dokka") + apply(plugin = "org.jetbrains.dokka-javadoc") apply(plugin = "maven-publish") extensions.configure { @@ -61,12 +65,29 @@ class AndroidConnectorLibraryConventionPlugin : Plugin { } } - val dokkaJavadocJar = tasks.register("dokkaJavadocJar") { - val dokkaJavadoc = tasks.named("dokkaJavadoc") + extensions.configure { + val connectorVersion = libs.versions.androidConnector + version = connectorVersion + + dokkaSourceSets.configureEach { + 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") + } + + perPackageOption { + matchingRegex.set("com[.]theoplayer[.]android[.]connector[.].*[.]internal.*") + suppress.set(true) + } + } + } + // https://kotlinlang.org/docs/dokka-gradle.html#build-javadoc-jar + val dokkaGeneratePublicationJavadoc = tasks.named("dokkaGeneratePublicationJavadoc") + val dokkaJavadocJar = tasks.register("dokkaJavadocJar") { group = "documentation" - dependsOn(dokkaJavadoc) - from(dokkaJavadoc) + dependsOn(dokkaGeneratePublicationJavadoc) + from(dokkaGeneratePublicationJavadoc) archiveClassifier.set("javadoc") } diff --git a/build.gradle.kts b/build.gradle.kts index b56cab18..f5b1c581 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,6 +1,5 @@ -import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask -import org.jetbrains.dokka.gradle.DokkaMultiModuleTask import java.time.Year +import kotlin.text.Typography.copyright // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { @@ -44,68 +43,29 @@ tasks.register("updateVersion") { } } -tasks.register("clean") { - delete(rootProject.layout.buildDirectory) +dependencies { + dokka(project(":connectors:analytics:comscore")) + dokka(project(":connectors:analytics:conviva")) + dokka(project(":connectors:analytics:nielsen")) + dokka(project(":connectors:mediasession")) + // FIXME Re-enable Yospace connector + // dokka(project(":connectors:yospace")) + dokka(project(":connectors:uplynk")) } -tasks.withType(DokkaMultiModuleTask::class).configureEach { - moduleName = "THEOplayer Connectors for Android" - - val dokkaBaseConfiguration = """ - { - "customAssets": ["${file("assets/logo-icon.svg").path.replace("\\", "\\\\")}"], - "footerMessage": "© ${Year.now().value} THEO Technologies" - } - """ - - pluginsMapConfiguration = mapOf( - // fully qualified plugin name to json configuration - "org.jetbrains.dokka.base.DokkaBase" to dokkaBaseConfiguration - ) -} - -tasks.dokkaHtmlMultiModule.configure { - outputDirectory = rootProject.file("site/api") -} - -val connectorVersion: String = libs.versions.androidConnector.get() +dokka { + val connectorVersion: String = libs.versions.androidConnector.get() -subprojects { + moduleName = "THEOplayer Connectors for Android" version = connectorVersion - tasks.withType(AbstractDokkaLeafTask::class).configureEach { - suppressObviousFunctions = true - suppressInheritedMembers = true - - dokkaSourceSets { - configureEach { - // Use to include or exclude non public members - includeNonPublic = false - // Do not output deprecated members. Applies globally, can be overridden by packageOptions - skipDeprecated = false - // Emit warnings about not documented members. Applies globally, also can be overridden by packageOptions - reportUndocumented = true - // Do not create index pages for empty packages - skipEmptyPackages = false - // Used for linking to JDK documentation - jdkVersion = 11 - // Use to enable or disable linking to online kotlin-stdlib documentation - noStdlibLink = false - // Use to enable or disable linking to online JDK documentation - noJdkLink = false - // Use to enable or disable linking to online Android documentation (only applicable for Android projects) - noAndroidSdkLink = false - - externalDocumentationLink { - url = uri("https://www.theoplayer.com/docs/theoplayer/v10/api-reference/android/").toURL() - packageListUrl = uri("https://www.theoplayer.com/docs/theoplayer/v10/api-reference/android/package-list").toURL() - } + pluginsConfiguration.html { + customAssets.from("assets/logo-icon.svg") + footerMessage = + "$copyright ${Year.now().value} Dolby Laboratories, Inc. All rights reserved." + } - perPackageOption { - matchingRegex = "com[.]theoplayer[.]android[.]connector[.].*[.]internal.*" - suppress = true - } - } - } + dokkaPublications.html { + outputDirectory = rootDir.resolve("site/api") } } diff --git a/connectors/analytics/comscore/build.gradle.kts b/connectors/analytics/comscore/build.gradle.kts index 9e785934..995dfb21 100644 --- a/connectors/analytics/comscore/build.gradle.kts +++ b/connectors/analytics/comscore/build.gradle.kts @@ -1,5 +1,3 @@ -import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask - plugins { alias(libs.plugins.android.connector.library) } @@ -19,6 +17,6 @@ dependencies { compileOnly(libs.comscore) } -tasks.withType(AbstractDokkaLeafTask::class).configureEach { +dokka { moduleName = "Comscore Connector" } diff --git a/connectors/analytics/conviva/build.gradle.kts b/connectors/analytics/conviva/build.gradle.kts index ca0e18d6..64dac1f7 100644 --- a/connectors/analytics/conviva/build.gradle.kts +++ b/connectors/analytics/conviva/build.gradle.kts @@ -1,5 +1,3 @@ -import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask - plugins { alias(libs.plugins.android.connector.library) } @@ -21,6 +19,6 @@ dependencies { implementation(libs.androidx.lifecycle.process) } -tasks.withType(AbstractDokkaLeafTask::class).configureEach { +dokka { moduleName = "Conviva Connector" } diff --git a/connectors/analytics/nielsen/build.gradle.kts b/connectors/analytics/nielsen/build.gradle.kts index ce5156bd..b3737769 100644 --- a/connectors/analytics/nielsen/build.gradle.kts +++ b/connectors/analytics/nielsen/build.gradle.kts @@ -1,5 +1,3 @@ -import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask - plugins { alias(libs.plugins.android.connector.library) } @@ -16,7 +14,7 @@ dependencies { compileOnly(libs.nielsen) } -tasks.withType(AbstractDokkaLeafTask::class).configureEach { +dokka { moduleName = "Nielsen Connector" } diff --git a/connectors/mediasession/build.gradle.kts b/connectors/mediasession/build.gradle.kts index 36e1969e..25adddbe 100644 --- a/connectors/mediasession/build.gradle.kts +++ b/connectors/mediasession/build.gradle.kts @@ -1,5 +1,3 @@ -import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask - plugins { alias(libs.plugins.android.connector.library) } @@ -13,6 +11,6 @@ dependencies { compileOnly(libs.theoplayer) } -tasks.withType(AbstractDokkaLeafTask::class).configureEach { +dokka { moduleName = "Media Session Connector" } diff --git a/connectors/uplynk/build.gradle.kts b/connectors/uplynk/build.gradle.kts index fe02b61b..219a3dbc 100644 --- a/connectors/uplynk/build.gradle.kts +++ b/connectors/uplynk/build.gradle.kts @@ -1,5 +1,3 @@ -import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask - plugins { alias(libs.plugins.android.connector.library) alias(libs.plugins.kotlinx.serialization) @@ -23,6 +21,6 @@ dependencies { androidTestImplementation(libs.androidx.test.espresso.core) } -tasks.withType(AbstractDokkaLeafTask::class).configureEach { +dokka { moduleName = "Uplynk Connector" } \ No newline at end of file diff --git a/connectors/yospace/build.gradle.kts b/connectors/yospace/build.gradle.kts index f1b293e4..421e9312 100644 --- a/connectors/yospace/build.gradle.kts +++ b/connectors/yospace/build.gradle.kts @@ -1,5 +1,3 @@ -import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask - plugins { alias(libs.plugins.android.connector.library) alias(libs.plugins.kotlinx.serialization) @@ -36,7 +34,7 @@ dependencies { testImplementation(libs.yospace) } -tasks.withType(AbstractDokkaLeafTask::class).configureEach { +dokka { moduleName = "Yospace Connector" dokkaSourceSets.named("main") { diff --git a/gradle.properties b/gradle.properties index 854a38c1..591ee07d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -23,3 +23,4 @@ kotlin.code.style=official android.nonTransitiveRClass=true android.nonFinalResIds=true groupId=com.theoplayer.android-connector +org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f6fb9734..f8526ab1 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,7 +5,7 @@ androidTools = "32.1.0" kotlin = "2.2.10" kotlinxSerialization = "2.2.10" kotlinxSerializationJson = "1.9.0" -dokka = "1.9.20" +dokka = "2.2.0" androidxAppCompat = "1.7.1" androidxActivity = "1.10.1" androidxCore = "1.17.0" From b0f25966b0f860510583d229f20e9a87a25f6881 Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 17:11:04 +0100 Subject: [PATCH 24/27] Small tweaks --- .github/workflows/docs.yml | 2 +- .../src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 2d9eff05..fb86f123 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -38,7 +38,7 @@ jobs: - name: Setup Gradle uses: gradle/actions/setup-gradle@v3 - name: Build API documentation with Dokka - run: ./gradlew :dokkaGenerateHtml --no-configuration-cache + run: ./gradlew :dokkaGenerateHtml env: YOSPACE_USERNAME: ${{ secrets.YOSPACE_USERNAME }} YOSPACE_PASSWORD: ${{ secrets.YOSPACE_PASSWORD }} diff --git a/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt index 37555107..08e8cdc7 100644 --- a/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt @@ -85,7 +85,7 @@ class AndroidConnectorLibraryConventionPlugin : Plugin { // https://kotlinlang.org/docs/dokka-gradle.html#build-javadoc-jar val dokkaGeneratePublicationJavadoc = tasks.named("dokkaGeneratePublicationJavadoc") val dokkaJavadocJar = tasks.register("dokkaJavadocJar") { - group = "documentation" + group = "dokka" dependsOn(dokkaGeneratePublicationJavadoc) from(dokkaGeneratePublicationJavadoc) archiveClassifier.set("javadoc") From 487fa9ffc813fa9fa7b3e7b61e2097dd1b51169e Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 17:22:21 +0100 Subject: [PATCH 25/27] Simplify Yospace dependency --- connectors/yospace/build.gradle.kts | 13 ++++--------- gradle/libs.versions.toml | 2 +- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/connectors/yospace/build.gradle.kts b/connectors/yospace/build.gradle.kts index 421e9312..32541aeb 100644 --- a/connectors/yospace/build.gradle.kts +++ b/connectors/yospace/build.gradle.kts @@ -19,12 +19,7 @@ android { dependencies { implementation(libs.androidx.core.ktx) compileOnly(libs.theoplayer) - compileOnly(libs.yospace) { - version { - strictly("[3.6, 4.0)") - prefer(libs.yospace.get().version!!) - } - } + compileOnly(libs.yospace) implementation(libs.kotlinx.serialization.json) // Tests @@ -37,7 +32,7 @@ dependencies { dokka { moduleName = "Yospace Connector" - dokkaSourceSets.named("main") { - samples.from(project.fileTree("src/test/java/")) - } +// dokkaSourceSets.named("main") { +// samples.from(project.fileTree("src/test/java/")) +// } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f8526ab1..b653b85f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -26,7 +26,7 @@ androidxTestExt = "1.3.0" conviva = "4.0.43" nielsen = "9.2.0.0" comscore = "6.10.0" -yospace = "3.6.7" +yospace = { strictly = "[3.6, 4.0)", prefer = "3.6.7" } [libraries] androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "androidxAppCompat" } From 007aa95bb85771441b79e3022ed4f78500cb7981 Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 17:24:28 +0100 Subject: [PATCH 26/27] Move to package --- .../main/kotlin/AndroidConnectorLibraryConventionPlugin.kt | 2 ++ .../main/kotlin/{ => extension}/VersionCatalogExtensions.kt | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) rename build-logic/convention/src/main/kotlin/{ => extension}/VersionCatalogExtensions.kt (81%) diff --git a/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt index 08e8cdc7..8fb0548a 100644 --- a/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidConnectorLibraryConventionPlugin.kt @@ -1,4 +1,6 @@ import com.android.build.api.dsl.LibraryExtension +import extension.libs +import extension.versions import org.gradle.api.JavaVersion import org.gradle.api.Plugin import org.gradle.api.Project diff --git a/build-logic/convention/src/main/kotlin/VersionCatalogExtensions.kt b/build-logic/convention/src/main/kotlin/extension/VersionCatalogExtensions.kt similarity index 81% rename from build-logic/convention/src/main/kotlin/VersionCatalogExtensions.kt rename to build-logic/convention/src/main/kotlin/extension/VersionCatalogExtensions.kt index 3e5e2b02..7fcf3786 100644 --- a/build-logic/convention/src/main/kotlin/VersionCatalogExtensions.kt +++ b/build-logic/convention/src/main/kotlin/extension/VersionCatalogExtensions.kt @@ -1,3 +1,5 @@ +package extension + import org.gradle.api.Project import org.gradle.api.artifacts.VersionCatalog import org.gradle.api.artifacts.VersionCatalogsExtension @@ -15,11 +17,11 @@ private fun Project.getVersionCatalog(name: String = "libs"): VersionCatalog { internal val VersionCatalog.versions: Versions get() = Versions(this) -class Versions(catalog: VersionCatalog) { +internal class Versions(catalog: VersionCatalog) { val androidConnector: String = catalog.findVersionOrThrow("androidConnector") } -internal fun VersionCatalog.findVersionOrThrow(name: String): String { +private fun VersionCatalog.findVersionOrThrow(name: String): String { return findVersion(name) .orElseThrow { NoSuchElementException("Version $name not found in version catalog") } .requiredVersion From 18fa191a78b9d5f0a5b346457cb60f034718906d Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 26 Mar 2026 17:30:44 +0100 Subject: [PATCH 27/27] Fix CI --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 68c760d7..e2956acb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: - name: Setup Gradle uses: gradle/actions/setup-gradle@v3 - name: Run unit tests - run: ./gradlew testReleaseUnitTest + run: ./gradlew test env: YOSPACE_USERNAME: ${{ secrets.YOSPACE_USERNAME }} YOSPACE_PASSWORD: ${{ secrets.YOSPACE_PASSWORD }}