Dokka
Configuración de Dokka para Android (Single-module) usando Kotlin.
Conocimientos previos
Dokka genera documentación de tu código Kotlin/Java.
Según el formato de salida (HTML, Javadoc, Markdown) que deseas, los plugins a declarar cambian.
Instalación básica
En build.gradle.kts (Proyecto raíz)
build.gradle.kts (Proyecto raíz)plugins { id("org.jetbrains.dokka") version "2.0.0" } buildscript { dependencies { classpath("org.jetbrains.dokka:dokka-base:2.0.0") } }
En build.gradle.kts (Módulo :app)
build.gradle.kts (Módulo :app)plugins { id("org.jetbrains.dokka") version "2.0.0" } dependencies { dokkaPlugin("org.jetbrains.dokka:android-documentation-plugin:2.0.0") }
Migración a Dokka V2
Agrega en gradle.properties:
gradle.properties# Habilitar Dokka V2 org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true # Mejorar rendimiento en compilación org.gradle.caching=true org.gradle.parallel=true
Generar documentación
Ejecuta en terminal en el root del proyecto:
bush./gradlew dokkaGenerate
Formato HTML: Podrás ver un enlace local para revisar la documentación.
Modificar directorio de salida
Si quieres que la documentación no se elimine al limpiar (./gradlew clean), define un directorio persistente. En build.gradle.kts (:app):
Gradledokka { dokkaPublications.html { outputDirectory.set(rootDir.resolve("docs/dokka")) } }
Configurar estilos y personalización
Para personalizar estilos, logos y comportamiento, usa la siguiente configuración en build.gradle.kts (:app):
Gradledokka { moduleName.set("Mi Proyecto Android") dokkaPublications.html { suppressInheritedMembers.set(true) failOnWarning.set(true) outputDirectory.set(rootDir.resolve("docs/dokka")) } dokkaSourceSets.configureEach { includes.from("Module.md") sourceLink { localDirectory.set(file("src/main/java/")) remoteUrl.set(URL("https://github.com/miusuario/miproyecto/tree/main/app/src/main/java")) remoteLineSuffix.set("#L") } documentedVisibilities.set(setOf(VisibilityModifier.Public, VisibilityModifier.Private)) } pluginsConfiguration.html { footerMessage.set("2025 © EMMA by Arkana Apps") customAssets.from("../docs/assets/emma-logo.png") customStyleSheets.from( "../docs/assets/style.css", "../docs/assets/logo-styles.css" ) } }
✅ moduleName: Nombre visible en la documentación.
✅ suppressInheritedMembers: Oculta miembros heredados.
✅ failOnWarning: Falla si hay warnings (útil en CI/CD).
✅ sourceLink: Enlaza a tu GitHub para ir directo al código.
✅ footerMessage y customAssets: Personaliza logos, CSS, y pie de página.
