Skip to content

Commit 7105d44

Browse files
authored
Add kotlindoc generation for firebase.google.com (#1074)
* Add kotlindoc generation for firebase.google.com * Add package-lists * Update PublishingPlugin to build kotlindoc.zip * Fix tests. * Add .gitignore
1 parent 091bd2f commit 7105d44

File tree

8 files changed

+414
-9
lines changed

8 files changed

+414
-9
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ local.properties
77
google-services.json
88
/build.gradle
99
_artifacts
10+
.DS_Store

buildSrc/build.gradle

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ repositories {
2323
}
2424
jcenter()
2525
mavenCentral()
26+
27+
maven {
28+
url 'https://storage.googleapis.com/android-ci/mvn/'
29+
}
2630
}
2731

2832
sourceSets {
@@ -44,6 +48,8 @@ dependencies {
4448
runtime 'io.opencensus:opencensus-impl:0.18.0'
4549
implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.6'
4650

51+
implementation 'org.jetbrains.dokka:dokka-android-gradle-plugin:0.9.17-g004'
52+
4753
implementation 'com.android.tools.build:gradle:3.4.1'
4854
testImplementation 'junit:junit:4.12'
4955
testImplementation group: 'com.google.code.gson', name: 'gson', version: '2.8.6'

buildSrc/src/main/groovy/com/google/firebase/gradle/plugins/publish/PublishingPlugin.groovy

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import com.google.firebase.gradle.plugins.FirebaseLibraryExtension
1818
import digital.wup.android_maven_publish.AndroidMavenPublishPlugin
1919
import org.gradle.api.Plugin
2020
import org.gradle.api.Project
21+
import org.gradle.api.UnknownProjectException
2122
import org.gradle.api.publish.maven.MavenPublication
2223
import org.gradle.api.tasks.bundling.Jar
2324
import org.gradle.api.tasks.bundling.Zip
@@ -154,6 +155,11 @@ class PublishingPlugin implements Plugin<Project> {
154155
buildMavenZip.mustRunAfter info
155156

156157
firebasePublish.dependsOn info, buildMavenZip
158+
159+
try {
160+
project.project(':kotlindoc')
161+
firebasePublish.dependsOn ':kotlindoc:dokkaFirebaseZip'
162+
} catch(UnknownProjectException e) {}
157163
}
158164
}
159165

kotlindoc/kotlindoc.gradle

Lines changed: 83 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15+
import org.jetbrains.dokka.gradle.DokkaAndroidTask
16+
1517
plugins {
1618
id 'com.android.library'
1719
id 'kotlin-android'
18-
id 'org.jetbrains.dokka-android' version '0.9.18'
20+
id 'org.jetbrains.dokka-android'
1921
}
2022

2123
android {
@@ -26,16 +28,20 @@ android {
2628
}
2729
}
2830

29-
configurations {
30-
dokkapath
31-
dokkapath.description = "dokka project classpath"
31+
// need to exclude annotations from classpath so that kotlindoc does not have @NonNull everywhere
32+
configurations.all {
33+
exclude group: 'androidx.annotation', module: 'annotation'
3234
}
3335

3436
def ALL_SUPPORTED_PROJECTS = [
3537
':firebase-common',
3638
':firebase-config',
39+
':firebase-database',
40+
':firebase-dynamic-links',
3741
':firebase-firestore',
3842
':firebase-functions',
43+
':firebase-inappmessaging',
44+
':firebase-inappmessaging-display',
3945
':firebase-storage',
4046
]
4147

@@ -49,6 +55,15 @@ def kotlinDeps = javaDeps.collect {
4955
project("$it.path:ktx")
5056
}
5157

58+
dependencies {
59+
javaDeps.each {
60+
compile it
61+
}
62+
kotlinDeps.each {
63+
compile it
64+
}
65+
}
66+
5267
dokka {
5368
moduleName = "firebase-ktx"
5469
outputDirectory = "$buildDir/dokka/html"
@@ -61,13 +76,72 @@ dokka {
6176
path = "$p.buildDir/doc-stubs"
6277
}
6378
}
64-
afterEvaluate {
65-
sourceDirs = files(kotlinDeps.collect {
66-
"$it.projectDir/src/main/kotlin"
67-
})
79+
sourceDirs = files(kotlinDeps.collect {
80+
"$it.projectDir/src/main/kotlin"
81+
})
82+
83+
android.libraryVariants.all { v ->
84+
if (v.name == 'release') {
85+
afterEvaluate {
86+
classpath = v.runtimeConfiguration.incoming.artifactView {
87+
attributes { c ->
88+
c.attribute(Attribute.of("artifactType", String.class), "jar")
89+
}
90+
}.artifacts.artifactFiles + android.bootClasspath
91+
}
92+
}
6893
}
6994

7095
externalDocumentationLink {
71-
url = new URL('https://developer.android.com/reference/kotlin')
96+
url = new URL('https://developers.google.com/android/reference/')
97+
packageListUrl = file('package-lists/google/package-list').toURI().toURL()
7298
}
99+
}
100+
101+
tasks.create('dokkaFirebase', DokkaAndroidTask) {
102+
moduleName = "docs/reference/kotlin"
103+
outputDirectory = "$buildDir/dokka/firebase"
104+
outputFormat = "dac"
105+
processConfigurations = []
106+
107+
javaDeps.each { Project p ->
108+
dependsOn "$p.path:docStubs"
109+
sourceRoot {
110+
path = "$p.buildDir/doc-stubs"
111+
}
112+
}
113+
sourceDirs = files(kotlinDeps.collect {
114+
"$it.projectDir/src/main/kotlin"
115+
})
116+
117+
// populate the classpath with all transitive dependencies
118+
android.libraryVariants.all { v ->
119+
if (v.name == 'release') {
120+
afterEvaluate {
121+
classpath = v.runtimeConfiguration.incoming.artifactView {
122+
attributes { c ->
123+
c.attribute(Attribute.of("artifactType", String.class), "jar")
124+
}
125+
}.artifacts.artifactFiles + android.bootClasspath
126+
}
127+
}
128+
}
129+
130+
noAndroidSdkLink = true
131+
132+
externalDocumentationLink {
133+
url = new URL('https://developers.android.com/reference/kotlin/')
134+
packageListUrl = file('package-lists/android/package-list').toURI().toURL()
135+
}
136+
137+
externalDocumentationLink {
138+
url = new URL('https://developers.google.com/android/reference/')
139+
packageListUrl = file('package-lists/google/package-list').toURI().toURL()
140+
}
141+
}
142+
143+
tasks.create('dokkaFirebaseZip', Zip) {
144+
from "$buildDir/dokka/firebase/docs/reference/kotlin"
145+
exclude '**/package-list'
146+
destinationDirectory = project.rootProject.buildDir
73147
}
Lines changed: 211 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,211 @@
1+
android
2+
android.accessibilityservice
3+
android.accounts
4+
android.animation
5+
android.annotation
6+
android.app
7+
android.app.admin
8+
android.app.assist
9+
android.app.backup
10+
android.app.job
11+
android.app.role
12+
android.app.slice
13+
android.app.usage
14+
android.appwidget
15+
android.bluetooth
16+
android.bluetooth.le
17+
android.companion
18+
android.content
19+
android.content.pm
20+
android.content.res
21+
android.database
22+
android.database.sqlite
23+
android.drm
24+
android.gesture
25+
android.graphics
26+
android.graphics.drawable
27+
android.graphics.drawable.shapes
28+
android.graphics.fonts
29+
android.graphics.pdf
30+
android.graphics.text
31+
android.hardware
32+
android.hardware.biometrics
33+
android.hardware.camera2
34+
android.hardware.camera2.params
35+
android.hardware.display
36+
android.hardware.fingerprint
37+
android.hardware.input
38+
android.hardware.usb
39+
android.icu.lang
40+
android.icu.math
41+
android.icu.text
42+
android.icu.util
43+
android.inputmethodservice
44+
android.location
45+
android.media
46+
android.media.audiofx
47+
android.media.browse
48+
android.media.effect
49+
android.media.midi
50+
android.media.projection
51+
android.media.session
52+
android.media.tv
53+
android.mtp
54+
android.net
55+
android.net.http
56+
android.net.nsd
57+
android.net.rtp
58+
android.net.sip
59+
android.net.ssl
60+
android.net.wifi
61+
android.net.wifi.aware
62+
android.net.wifi.hotspot2
63+
android.net.wifi.hotspot2.omadm
64+
android.net.wifi.hotspot2.pps
65+
android.net.wifi.p2p
66+
android.net.wifi.p2p.nsd
67+
android.net.wifi.rtt
68+
android.nfc
69+
android.nfc.cardemulation
70+
android.nfc.tech
71+
android.opengl
72+
android.os
73+
android.os.health
74+
android.os.storage
75+
android.os.strictmode
76+
android.preference
77+
android.print
78+
android.print.pdf
79+
android.printservice
80+
android.provider
81+
android.renderscript
82+
android.sax
83+
android.se.omapi
84+
android.security
85+
android.security.keystore
86+
android.service.autofill
87+
android.service.carrier
88+
android.service.chooser
89+
android.service.dreams
90+
android.service.media
91+
android.service.notification
92+
android.service.quicksettings
93+
android.service.restrictions
94+
android.service.textservice
95+
android.service.voice
96+
android.service.vr
97+
android.service.wallpaper
98+
android.speech
99+
android.speech.tts
100+
android.system
101+
android.telecom
102+
android.telephony
103+
android.telephony.cdma
104+
android.telephony.data
105+
android.telephony.emergency
106+
android.telephony.euicc
107+
android.telephony.gsm
108+
android.telephony.mbms
109+
android.test
110+
android.test.mock
111+
android.test.suitebuilder
112+
android.test.suitebuilder.annotation
113+
android.text
114+
android.text.format
115+
android.text.method
116+
android.text.style
117+
android.text.util
118+
android.transition
119+
android.util
120+
android.view
121+
android.view.accessibility
122+
android.view.animation
123+
android.view.autofill
124+
android.view.contentcapture
125+
android.view.inputmethod
126+
android.view.inspector
127+
android.view.textclassifier
128+
android.view.textservice
129+
android.webkit
130+
android.widget
131+
dalvik.annotation
132+
dalvik.bytecode
133+
dalvik.system
134+
java.awt.font
135+
java.beans
136+
java.io
137+
java.lang
138+
java.lang.annotation
139+
java.lang.invoke
140+
java.lang.ref
141+
java.lang.reflect
142+
java.math
143+
java.net
144+
java.nio
145+
java.nio.channels
146+
java.nio.channels.spi
147+
java.nio.charset
148+
java.nio.charset.spi
149+
java.nio.file
150+
java.nio.file.attribute
151+
java.nio.file.spi
152+
java.security
153+
java.security.acl
154+
java.security.cert
155+
java.security.interfaces
156+
java.security.spec
157+
java.sql
158+
java.text
159+
java.time
160+
java.time.chrono
161+
java.time.format
162+
java.time.temporal
163+
java.time.zone
164+
java.util
165+
java.util.concurrent
166+
java.util.concurrent.atomic
167+
java.util.concurrent.locks
168+
java.util.function
169+
java.util.jar
170+
java.util.logging
171+
java.util.prefs
172+
java.util.regex
173+
java.util.stream
174+
java.util.zip
175+
javax.crypto
176+
javax.crypto.interfaces
177+
javax.crypto.spec
178+
javax.microedition.khronos.egl
179+
javax.microedition.khronos.opengles
180+
javax.net
181+
javax.net.ssl
182+
javax.security.auth
183+
javax.security.auth.callback
184+
javax.security.auth.login
185+
javax.security.auth.x500
186+
javax.security.cert
187+
javax.sql
188+
javax.xml
189+
javax.xml.datatype
190+
javax.xml.namespace
191+
javax.xml.parsers
192+
javax.xml.transform
193+
javax.xml.transform.dom
194+
javax.xml.transform.sax
195+
javax.xml.transform.stream
196+
javax.xml.validation
197+
javax.xml.xpath
198+
junit.framework
199+
junit.runner
200+
org.apache.http.conn
201+
org.apache.http.conn.scheme
202+
org.apache.http.conn.ssl
203+
org.apache.http.params
204+
org.json
205+
org.w3c.dom
206+
org.w3c.dom.ls
207+
org.xml.sax
208+
org.xml.sax.ext
209+
org.xml.sax.helpers
210+
org.xmlpull.v1
211+
org.xmlpull.v1.sax2

0 commit comments

Comments
 (0)