Dokka: fix compatibility with multiplatform and configuration cache (#1493)

* Dokka: fix compatibility with multiplatform/modules

Fixes many "<Error class: unknown class>" such as with LiveData and RecyclerView as well as potential conflicts in class names between modules
This commit is contained in:
Luna712
2025-01-21 16:22:25 -07:00
committed by GitHub
parent c12bd878c3
commit 3f6dd01ec7
5 changed files with 49 additions and 105 deletions

View File

@ -1,110 +1,13 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import java.net.URI
plugins {
id("com.android.library")
id("kotlin-android")
kotlin("jvm")
id("org.jetbrains.dokka")
}
val javaTarget = JvmTarget.fromTarget(libs.versions.jvmTarget.get())
android {
compileSdk = libs.versions.compileSdk.get().toInt()
sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
defaultConfig {
minSdk = libs.versions.minSdk.get().toInt()
}
namespace = "com.lagradost.api"
compileOptions {
sourceCompatibility = JavaVersion.toVersion(javaTarget.target)
targetCompatibility = JavaVersion.toVersion(javaTarget.target)
}
@Suppress("UnstableApiUsage")
testOptions {
targetSdk = libs.versions.targetSdk.get().toInt()
}
lint {
targetSdk = libs.versions.targetSdk.get().toInt()
}
}
val dokkaImplementation: Configuration by configurations.creating {
// This ensures you can access artifacts
isCanBeResolved = true
isTransitive = true
}
dependencies {
dokkaImplementation(libs.junit.ktx)
dokkaImplementation(libs.core.ktx)
dokkaImplementation(libs.appcompat)
dokkaImplementation(libs.navigation.ui.ktx)
dokkaImplementation(libs.lifecycle.livedata.ktx)
dokkaImplementation(libs.lifecycle.viewmodel.ktx)
dokkaImplementation(libs.navigation.fragment.ktx)
dokkaImplementation(libs.preference.ktx)
dokkaImplementation(libs.material)
dokkaImplementation(libs.constraintlayout)
dokkaImplementation(libs.swiperefreshlayout)
dokkaImplementation(libs.guava)
dokkaImplementation(libs.auto.service.ksp)
dokkaImplementation(libs.bundles.media3)
dokkaImplementation(libs.colorpicker) // Subtitle Color Picker
dokkaImplementation(libs.bundles.nextlibMedia3)
dokkaImplementation(libs.newpipeextractor)
dokkaImplementation(libs.juniversalchardet) // Subtitle Decoding
dokkaImplementation(libs.acra.core)
dokkaImplementation(libs.acra.toast)
dokkaImplementation(libs.shimmer) // Shimmering Effect (Loading Skeleton)
dokkaImplementation(libs.palette.ktx) // Palette for Images -> Colors
dokkaImplementation(libs.tvprovider)
dokkaImplementation(libs.overlappingpanels) // Gestures
dokkaImplementation(libs.biometric) // Fingerprint Authentication
dokkaImplementation(libs.previewseekbar.media3) // SeekBar Preview
dokkaImplementation(libs.qrcode.kotlin) // QR Code for PIN Auth on TV
dokkaImplementation(libs.rhino) // Run JavaScript
dokkaImplementation(libs.fuzzywuzzy) // Library/Ext Searching with Levenshtein Distance
dokkaImplementation(libs.safefile) // To Prevent the URI File Fu*kery
dokkaImplementation(libs.conscrypt.android) // To Fix SSL Fu*kery on Android 9
dokkaImplementation(libs.tmdb.java) // TMDB API v3 Wrapper Made with RetroFit
dokkaImplementation(libs.jackson.module.kotlin) // JSON Parser
dokkaImplementation(libs.work.runtime)
dokkaImplementation(libs.work.runtime.ktx)
dokkaImplementation(libs.nicehttp) // HTTP Lib
dokka(project(":app:"))
dokka(project(":library:"))
}
dokka {
dokkaSourceSets {
moduleName = "Cloudstream"
register("cloudstream") {
listOf("androidMain", "commonMain").forEach { srcName ->
sourceRoots.from("../library/src/$srcName/kotlin")
}
sourceRoots.from(file("../app/src/main/java"))
classpath.from(android.bootClasspath)
classpath.from(dokkaImplementation.files)
sourceLink {
localDirectory = file("..")
remoteUrl("https://github.com/recloudstream/cloudstream/tree/master")
remoteLineSuffix = "#L"
}
externalDocumentationLinks {
dokkaImplementation.dependencies.forEach {
register(it.name) {
url = URI("https://javadoc.io/doc/${it.group}/${it.name}/${it.version}")
packageListUrl = URI("https://javadoc.io/doc/${it.group}/${it.name}/${it.version}/package-list")
}
}
}
}
}
moduleName = "Cloudstream"
}