Skip to content

Commit 3f6dd01

Browse files
authored
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
1 parent c12bd87 commit 3f6dd01

File tree

5 files changed

+49
-105
lines changed

5 files changed

+49
-105
lines changed

.github/workflows/generate_dokka.yml

+2
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ jobs:
4141
run: |
4242
cd $GITHUB_WORKSPACE/dokka/
4343
rm -rf "./-cloudstream"
44+
rm -rf "./app"
45+
rm -rf "./library"
4446
4547
- name: Setup JDK 17
4648
uses: actions/setup-java@v4

app/build.gradle.kts

+21
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties
2+
import org.jetbrains.dokka.gradle.engine.parameters.KotlinPlatform
3+
import org.jetbrains.dokka.gradle.engine.parameters.VisibilityModifier
24
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
35
import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
46

@@ -266,4 +268,23 @@ tasks.withType<KotlinJvmCompile> {
266268
jvmTarget.set(javaTarget)
267269
freeCompilerArgs.add("-Xjvm-default=all-compatibility")
268270
}
271+
}
272+
273+
dokka {
274+
moduleName = "App"
275+
dokkaSourceSets {
276+
main {
277+
analysisPlatform = KotlinPlatform.JVM
278+
documentedVisibilities(
279+
VisibilityModifier.Public,
280+
VisibilityModifier.Protected
281+
)
282+
283+
sourceLink {
284+
localDirectory = file("..")
285+
remoteUrl("https://github.com/recloudstream/cloudstream/tree/master")
286+
remoteLineSuffix = "#L"
287+
}
288+
}
289+
}
269290
}

docs/build.gradle.kts

+4-101
Original file line numberDiff line numberDiff line change
@@ -1,110 +1,13 @@
1-
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
2-
import java.net.URI
3-
41
plugins {
5-
id("com.android.library")
6-
id("kotlin-android")
2+
kotlin("jvm")
73
id("org.jetbrains.dokka")
84
}
95

10-
val javaTarget = JvmTarget.fromTarget(libs.versions.jvmTarget.get())
11-
12-
android {
13-
compileSdk = libs.versions.compileSdk.get().toInt()
14-
sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
15-
16-
defaultConfig {
17-
minSdk = libs.versions.minSdk.get().toInt()
18-
}
19-
20-
namespace = "com.lagradost.api"
21-
22-
compileOptions {
23-
sourceCompatibility = JavaVersion.toVersion(javaTarget.target)
24-
targetCompatibility = JavaVersion.toVersion(javaTarget.target)
25-
}
26-
27-
@Suppress("UnstableApiUsage")
28-
testOptions {
29-
targetSdk = libs.versions.targetSdk.get().toInt()
30-
}
31-
32-
lint {
33-
targetSdk = libs.versions.targetSdk.get().toInt()
34-
}
35-
}
36-
37-
val dokkaImplementation: Configuration by configurations.creating {
38-
// This ensures you can access artifacts
39-
isCanBeResolved = true
40-
isTransitive = true
41-
}
42-
436
dependencies {
44-
dokkaImplementation(libs.junit.ktx)
45-
dokkaImplementation(libs.core.ktx)
46-
dokkaImplementation(libs.appcompat)
47-
dokkaImplementation(libs.navigation.ui.ktx)
48-
dokkaImplementation(libs.lifecycle.livedata.ktx)
49-
dokkaImplementation(libs.lifecycle.viewmodel.ktx)
50-
dokkaImplementation(libs.navigation.fragment.ktx)
51-
dokkaImplementation(libs.preference.ktx)
52-
dokkaImplementation(libs.material)
53-
dokkaImplementation(libs.constraintlayout)
54-
dokkaImplementation(libs.swiperefreshlayout)
55-
dokkaImplementation(libs.guava)
56-
dokkaImplementation(libs.auto.service.ksp)
57-
dokkaImplementation(libs.bundles.media3)
58-
dokkaImplementation(libs.colorpicker) // Subtitle Color Picker
59-
dokkaImplementation(libs.bundles.nextlibMedia3)
60-
dokkaImplementation(libs.newpipeextractor)
61-
dokkaImplementation(libs.juniversalchardet) // Subtitle Decoding
62-
dokkaImplementation(libs.acra.core)
63-
dokkaImplementation(libs.acra.toast)
64-
dokkaImplementation(libs.shimmer) // Shimmering Effect (Loading Skeleton)
65-
dokkaImplementation(libs.palette.ktx) // Palette for Images -> Colors
66-
dokkaImplementation(libs.tvprovider)
67-
dokkaImplementation(libs.overlappingpanels) // Gestures
68-
dokkaImplementation(libs.biometric) // Fingerprint Authentication
69-
dokkaImplementation(libs.previewseekbar.media3) // SeekBar Preview
70-
dokkaImplementation(libs.qrcode.kotlin) // QR Code for PIN Auth on TV
71-
dokkaImplementation(libs.rhino) // Run JavaScript
72-
dokkaImplementation(libs.fuzzywuzzy) // Library/Ext Searching with Levenshtein Distance
73-
dokkaImplementation(libs.safefile) // To Prevent the URI File Fu*kery
74-
dokkaImplementation(libs.conscrypt.android) // To Fix SSL Fu*kery on Android 9
75-
dokkaImplementation(libs.tmdb.java) // TMDB API v3 Wrapper Made with RetroFit
76-
dokkaImplementation(libs.jackson.module.kotlin) // JSON Parser
77-
dokkaImplementation(libs.work.runtime)
78-
dokkaImplementation(libs.work.runtime.ktx)
79-
dokkaImplementation(libs.nicehttp) // HTTP Lib
7+
dokka(project(":app:"))
8+
dokka(project(":library:"))
809
}
8110

8211
dokka {
83-
dokkaSourceSets {
84-
moduleName = "Cloudstream"
85-
register("cloudstream") {
86-
listOf("androidMain", "commonMain").forEach { srcName ->
87-
sourceRoots.from("../library/src/$srcName/kotlin")
88-
}
89-
sourceRoots.from(file("../app/src/main/java"))
90-
91-
classpath.from(android.bootClasspath)
92-
classpath.from(dokkaImplementation.files)
93-
94-
sourceLink {
95-
localDirectory = file("..")
96-
remoteUrl("https://github.com/recloudstream/cloudstream/tree/master")
97-
remoteLineSuffix = "#L"
98-
}
99-
100-
externalDocumentationLinks {
101-
dokkaImplementation.dependencies.forEach {
102-
register(it.name) {
103-
url = URI("https://javadoc.io/doc/${it.group}/${it.name}/${it.version}")
104-
packageListUrl = URI("https://javadoc.io/doc/${it.group}/${it.name}/${it.version}/package-list")
105-
}
106-
}
107-
}
108-
}
109-
}
12+
moduleName = "Cloudstream"
11013
}

gradle/libs.versions.toml

-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
[versions]
22
acraCore = "5.11.3"
33
appcompat = "1.7.0"
4-
autoServiceKsp = "1.2.0"
54
biometric = "1.2.0-alpha05"
65
buildkonfigGradlePlugin = "0.15.2"
76
coil = "3.0.4"
@@ -14,7 +13,6 @@ dokkaGradlePlugin = "2.0.0"
1413
espressoCore = "3.6.1"
1514
fuzzywuzzy = "1.4.0"
1615
gradle = "8.8.0"
17-
guava = "33.3.1-android"
1816
jacksonModuleKotlin = "2.13.1"
1917
json = "20240303"
2018
junit = "4.13.2"
@@ -58,7 +56,6 @@ torrentserver-aniyomi = { module = "com.github.Diegopyl1209:torrentserver-aniyom
5856
acra-core = { module = "ch.acra:acra-core", version.ref = "acraCore" }
5957
acra-toast = { module = "ch.acra:acra-toast", version.ref = "acraCore" }
6058
appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" }
61-
auto-service-ksp = { module = "dev.zacsweers.autoservice:auto-service-ksp", version.ref = "autoServiceKsp" }
6259
biometric = { module = "androidx.biometric:biometric", version.ref = "biometric" }
6360
buildkonfig-gradle-plugin = { module = "com.codingfeline.buildkonfig:buildkonfig-gradle-plugin", version.ref = "buildkonfigGradlePlugin" }
6461
coil = { module = "io.coil-kt.coil3:coil", version.ref = "coil" }
@@ -74,7 +71,6 @@ espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref =
7471
ext-junit = { module = "androidx.test.ext:junit", version.ref = "junitVersion" }
7572
fuzzywuzzy = { module = "me.xdrop:fuzzywuzzy", version.ref = "fuzzywuzzy" }
7673
gradle = { module = "com.android.tools.build:gradle", version.ref = "gradle" }
77-
guava = { module = "com.google.guava:guava", version.ref = "guava" }
7874
jackson-module-kotlin = { module = "com.fasterxml.jackson.module:jackson-module-kotlin", version.ref = "jacksonModuleKotlin" }
7975
jetbrains-kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlinGradlePluginVersion" }
8076
json = { module = "org.json:json", version.ref = "json" }

library/build.gradle.kts

+22
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import com.codingfeline.buildkonfig.compiler.FieldSpec
2+
import org.jetbrains.dokka.gradle.engine.parameters.KotlinPlatform
3+
import org.jetbrains.dokka.gradle.engine.parameters.VisibilityModifier
24
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
35
import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
46

@@ -7,6 +9,7 @@ plugins {
79
id("maven-publish")
810
id("com.android.library")
911
id("com.codingfeline.buildkonfig")
12+
id("org.jetbrains.dokka")
1013
}
1114

1215
val javaTarget = JvmTarget.fromTarget(libs.versions.jvmTarget.get())
@@ -85,4 +88,23 @@ publishing {
8588
groupId = "com.lagradost.api"
8689
}
8790
}
91+
}
92+
93+
dokka {
94+
moduleName = "Library"
95+
dokkaSourceSets {
96+
configureEach {
97+
analysisPlatform = KotlinPlatform.AndroidJVM
98+
documentedVisibilities(
99+
VisibilityModifier.Public,
100+
VisibilityModifier.Protected
101+
)
102+
103+
sourceLink {
104+
localDirectory = file("..")
105+
remoteUrl("https://github.com/recloudstream/cloudstream/tree/master")
106+
remoteLineSuffix = "#L"
107+
}
108+
}
109+
}
88110
}

0 commit comments

Comments
 (0)