From 3b0393c2bb165a96d5f4e1c8952dd9e3d4cdc40d Mon Sep 17 00:00:00 2001 From: pjay Date: Sat, 18 Apr 2026 15:53:47 +0700 Subject: [PATCH] fix(sdk-android): unblock publishToMavenLocal on JDK 21+ hosts (#9) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * build(sdk-android): bump AGP 8.11.0 → 8.13.0 Required by com.vanniktech.maven.publish 0.36.0, bumped in the following commit to pull a Dokka 2.x that handles JDK 21+ version strings. * build(sdk-android): migrate to vanniktech 0.36 + Dokka v2 javadoc Fixes the `javaDocReleaseGeneration` crash on JDK 21+ hosts (IllegalArgumentException: 25.0.2 in the bundled IntelliJ JavaVersion.parse). Root cause: AGP's JavaDocGenerationTask pulled an old Dokka whose vendored util-lang predated JDK 9+ version strings. Fixed upstream in Dokka 2.1.0 (Kotlin/dokka#4202). Changes in this commit: - Bump vanniktech-maven-publish 0.30.0 → 0.36.0, which drops Dokka v1 support and the SonatypeHost parameter (Central Portal is now the default). - Apply org.jetbrains.dokka and org.jetbrains.dokka-javadoc 2.2.0 so the javadoc jar is generated by Dokka 2.x directly, not AGP's bundled-Dokka path. - Switch AndroidSingleVariantLibrary to the explicit JavadocJar.Dokka("dokkaGeneratePublicationJavadoc") form; the old `publishJavadocJar = true` boolean now maps to plain javadoc, which still goes through AGP's broken path on Android source sets. - Enable V2Enabled in gradle.properties (required by 0.36+) and silence the transitional opt-in warning. Verified: `make release-android-local` on openjdk 25.0.2 produces aar, sources jar, javadoc jar, pom, and module; `./gradlew :sdk-android:testDebugUnitTest :sidecar:test` still pass. --- gradle.properties | 5 +++++ sdk/android/build.gradle.kts | 15 +++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/gradle.properties b/gradle.properties index d355a7a..5fdb6dc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,6 +4,11 @@ org.gradle.caching=true kotlin.code.style=official android.useAndroidX=true +# Required by vanniktech-maven-publish 0.36+ (Dokka v1 removed); also +# pulls Dokka 2.x, which fixes JavaVersion.parse on JDK 21+ hosts. +org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled +org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true + # Single source of truth at release time is the git tag (e.g. v0.1.0 → 0.1.0), # forwarded via `-Puatu.version=...` or `ORG_GRADLE_PROJECT_uatu.version`. # The default below only applies to untagged local builds. diff --git a/sdk/android/build.gradle.kts b/sdk/android/build.gradle.kts index a12406a..33bb357 100644 --- a/sdk/android/build.gradle.kts +++ b/sdk/android/build.gradle.kts @@ -1,10 +1,13 @@ import com.vanniktech.maven.publish.AndroidSingleVariantLibrary -import com.vanniktech.maven.publish.SonatypeHost +import com.vanniktech.maven.publish.JavadocJar +import com.vanniktech.maven.publish.SourcesJar plugins { - id("com.android.library") version "8.11.0" + id("com.android.library") version "8.13.0" kotlin("android") version "2.1.21" - id("com.vanniktech.maven.publish") version "0.30.0" + id("com.vanniktech.maven.publish") version "0.36.0" + id("org.jetbrains.dokka") version "2.2.0" + id("org.jetbrains.dokka-javadoc") version "2.2.0" } version = findProperty("uatu.version") as String? ?: "0.0.0-dev" @@ -34,7 +37,7 @@ android { } mavenPublishing { - publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL, automaticRelease = true) + publishToMavenCentral(automaticRelease = true) // Sign only when a release-signing key is provided (env or Gradle // property). Unsigned runs are useful for `publishToMavenLocal` dry-runs; @@ -45,9 +48,9 @@ mavenPublishing { configure( AndroidSingleVariantLibrary( + javadocJar = JavadocJar.Dokka("dokkaGeneratePublicationJavadoc"), + sourcesJar = SourcesJar.Sources(), variant = "release", - sourcesJar = true, - publishJavadocJar = true, ), )