1a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam/**
2a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam * A helper gradle file to generate documentation using doclava.
3a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam * Include this file using `apply from` in the gradle build file. This will generate new tasks
4a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam * "javadoc<Variant>" which will generate javadocs for that target.
5a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam */
6a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam
7a211294e1caba648822d11f8935593b6ca2b9279Maurice Lamimport com.android.internal.doclava.DoclavaJavadocOptionFileOption
8a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam
9a211294e1caba648822d11f8935593b6ca2b9279Maurice Lamdef DOCSDIR = "$rootDir/frameworks/opt/setupwizard/tools/docs"
10a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam
11a211294e1caba648822d11f8935593b6ca2b9279Maurice Lamandroid.libraryVariants.all { variant ->
12a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam    if (variant.buildType.name.equals(com.android.builder.core.BuilderConstants.DEBUG)) {
13a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam        return; // Skip debug builds.
14a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam    }
15a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam    def suffix = variant.name.capitalize()
16a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam
17a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam    def javadocTask = project.tasks.create(name: "javadoc${suffix}", type: Javadoc) {
18a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam        title = null
19a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam        source variant.javaCompile.source
20a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam        classpath = files(variant.javaCompile.classpath.files) + files(
21a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam                "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
22a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam        exclude '**/R.java'
23a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam        exclude '**/R.html', '**/R.*.html'
24a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam        exclude '**/BuildConfig.java'
25a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam
26a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam        options {
27a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam            bootClasspath = files(android.getBootClasspath()).asType(List)
28a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam            doclet = 'com.google.doclava.Doclava'
29a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam            docletpath = files("$DOCSDIR/doclava.jar", "$DOCSDIR/jsilver.jar").asType(List)
30a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam
31a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam            addOption(new DoclavaJavadocOptionFileOption('offlinemode'))
32a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam            addOption(new DoclavaJavadocOptionFileOption('federate'))
33a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam                    .setValue(['Android', 'http://developer.android.com'])
34a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam
35a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam            addOption(new DoclavaJavadocOptionFileOption('federationapi'))
36a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam                    .setValue(['Android', file("$DOCSDIR/android-22.txt").canonicalPath])
37a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam            addStringOption('templatedir',
38a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam                    file("$rootDir/build/tools/droiddoc/templates-sdk-dev").canonicalPath)
39a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam        }
40a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam
41a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam        dependsOn(variant.assemble)
42a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam
43a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam        doLast {
44a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam            println "Docs generated: file://${project.docsDir}/javadoc/reference/index.html"
45a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam        }
46a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam    }
47a211294e1caba648822d11f8935593b6ca2b9279Maurice Lam}
48