diff --git a/OneSignalSDK/build.gradle b/OneSignalSDK/build.gradle index a3b8aa134..eab205d25 100644 --- a/OneSignalSDK/build.gradle +++ b/OneSignalSDK/build.gradle @@ -15,6 +15,7 @@ buildscript { huaweiHMSPushVersion = '6.3.0.304' huaweiHMSLocationVersion = '4.0.0.300' kotlinVersion = '1.9.25' + dokkaVersion = '1.9.10' // Dokka version compatible with Kotlin 1.9.25 coroutinesVersion = '1.7.3' kotestVersion = '5.8.0' ioMockVersion = '1.13.2' @@ -37,6 +38,7 @@ buildscript { "com.google.gms:google-services:$googleServicesGradlePluginVersion", "com.huawei.agconnect:agcp:$huaweiAgconnectVersion", "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion", + "org.jetbrains.dokka:dokka-gradle-plugin:$dokkaVersion", "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:$detektVersion", "com.diffplug.spotless:spotless-plugin-gradle:$spotlessVersion", "com.vanniktech.maven.publish:com.vanniktech.maven.publish.gradle.plugin:0.32.0" diff --git a/OneSignalSDK/onesignal/maven-push.gradle b/OneSignalSDK/onesignal/maven-push.gradle index 234d9419b..4cdebd3b1 100644 --- a/OneSignalSDK/onesignal/maven-push.gradle +++ b/OneSignalSDK/onesignal/maven-push.gradle @@ -8,11 +8,50 @@ buildscript { import com.vanniktech.maven.publish.AndroidSingleVariantLibrary import com.vanniktech.maven.publish.SonatypeHost +// Apply Dokka plugin for Kotlin documentation (KDoc) +// This is needed for generating javadoc/kdoc JARs for Kotlin projects +if (project.plugins.hasPlugin('org.jetbrains.kotlin.android')) { + apply plugin: 'org.jetbrains.dokka' + + // Configure Dokka to generate Javadoc format (for compatibility with IDEs) + // Dokka 1.9.x uses a different API + afterEvaluate { + tasks.named('dokkaJavadoc') { + outputDirectory.set(file("$buildDir/dokka/javadoc")) + dokkaSourceSets { + configureEach { + jvmTarget.set("1.8") + // Include Android source sets + sourceRoots.from(android.sourceSets.main.java.srcDirs) + sourceRoots.from(android.sourceSets.main.kotlin.srcDirs) + } + } + } + } +} + mavenPublishing { + // Configure AndroidSingleVariantLibrary to publish the release variant + // Parameters: + // 1. "release" - the Android build variant to publish + // 2. true - include sources JAR (contains .java and .kt source files) + // 3. true - include javadoc/kdoc JAR (contains API documentation) + // The plugin will automatically use Dokka for Kotlin projects if available configure(new AndroidSingleVariantLibrary("release", true, true)) publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL) - signAllPublications() + // Only sign publications if signing credentials are available + // This allows publishToMavenLocal to work without signing, while Maven Central publishing still signs + afterEvaluate { + // Check if signing is configured (either via properties or extension) + def hasSigningConfig = project.hasProperty('signing.keyId') || + project.hasProperty('signing.secretKeyRingFile') || + (project.extensions.findByName('signing') != null) + + if (hasSigningConfig) { + signAllPublications() + } + } coordinates(project.group, project.name, project.version)