diff --git a/.idea/copyright/Apache_2___Google.xml b/.idea/copyright/Apache_2___Google.xml
index a0bb219243a..39ebd9250d1 100644
--- a/.idea/copyright/Apache_2___Google.xml
+++ b/.idea/copyright/Apache_2___Google.xml
@@ -1,6 +1,6 @@
-
+
diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle
index 21f3907f5f3..de7360476cd 100644
--- a/buildSrc/build.gradle
+++ b/buildSrc/build.gradle
@@ -48,7 +48,7 @@ dependencies {
runtime 'io.opencensus:opencensus-impl:0.18.0'
implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.6'
- implementation 'org.jetbrains.dokka:dokka-android-gradle-plugin:0.9.17-g004'
+ implementation 'org.jetbrains.dokka:dokka-android-gradle-plugin:0.9.17-g005'
implementation 'com.android.tools.build:gradle:3.4.1'
testImplementation 'junit:junit:4.12'
diff --git a/buildSrc/src/main/groovy/com/google/firebase/gradle/plugins/Dokka.java b/buildSrc/src/main/groovy/com/google/firebase/gradle/plugins/Dokka.java
new file mode 100644
index 00000000000..c2d7c055100
--- /dev/null
+++ b/buildSrc/src/main/groovy/com/google/firebase/gradle/plugins/Dokka.java
@@ -0,0 +1,179 @@
+// Copyright 2020 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.firebase.gradle.plugins;
+
+import com.android.build.gradle.LibraryExtension;
+import com.google.common.collect.ImmutableMap;
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Collections;
+import java.util.Optional;
+import org.gradle.api.GradleException;
+import org.gradle.api.Project;
+import org.gradle.api.attributes.Attribute;
+import org.gradle.api.file.FileCollection;
+import org.gradle.api.file.RelativePath;
+import org.gradle.api.tasks.Copy;
+import org.jetbrains.dokka.DokkaConfiguration;
+import org.jetbrains.dokka.gradle.DokkaAndroidTask;
+
+final class Dokka {
+ /**
+ * Configures the dokka task for a 'firebase-library'.
+ *
+ *
Configuration includes:
+ *
+ *
+ *
Configure Metalava task for Java(non-Kotlin) libraries
+ *
Configure Dokka with the DAC format and full classpath for symbol resolution
+ *
Postprocessing of the produced Kotlindoc
+ *
+ *
Copy the _toc.yaml file to "client/{libName}/_toc.yaml"
+ *
Filter out unneeded files
+ *
Copy docs to the buildDir of the root project
+ *
Remove the "https://firebase.google.com" prefix from all urls
+ */
+ static void configure(
+ Project project, LibraryExtension android, FirebaseLibraryExtension firebaseLibrary) {
+ project.apply(ImmutableMap.of("plugin", "org.jetbrains.dokka-android"));
+
+ if (!firebaseLibrary.publishJavadoc) {
+ project.getTasks().register("kotlindoc");
+ return;
+ }
+ DokkaAndroidTask dokkaAndroidTask =
+ project
+ .getTasks()
+ .create(
+ "kotlindocDokka",
+ DokkaAndroidTask.class,
+ dokka -> {
+ dokka.setOutputDirectory(project.getBuildDir() + "/dokka/firebase");
+ dokka.setOutputFormat("dac");
+
+ dokka.setGenerateClassIndexPage(false);
+ dokka.setGeneratePackageIndexPage(false);
+ if (!project.getPluginManager().hasPlugin("kotlin-android")) {
+ dokka.dependsOn("docStubs");
+ dokka.setSourceDirs(
+ Collections.singletonList(
+ project.file(project.getBuildDir() + "/doc-stubs")));
+ }
+
+ dokka.setNoAndroidSdkLink(true);
+
+ createLink(
+ project,
+ "https://developers.android.com/reference/kotlin/",
+ "kotlindoc/package-lists/android/package-list")
+ .map(dokka.getExternalDocumentationLinks()::add);
+ createLink(
+ project,
+ "https://developers.google.com/android/reference/",
+ "kotlindoc/package-lists/google/package-list")
+ .map(dokka.getExternalDocumentationLinks()::add);
+ createLink(
+ project,
+ "https://firebase.google.com/docs/reference/kotlin/",
+ "kotlindoc/package-lists/firebase/package-list")
+ .map(dokka.getExternalDocumentationLinks()::add);
+ createLink(
+ project,
+ "https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/",
+ "kotlindoc/package-lists/coroutines/package-list")
+ .map(dokka.getExternalDocumentationLinks()::add);
+
+ android
+ .getLibraryVariants()
+ .all(
+ v -> {
+ if (v.getName().equals("release")) {
+ project.afterEvaluate(
+ p -> {
+ FileCollection artifactFiles =
+ v.getRuntimeConfiguration()
+ .getIncoming()
+ .artifactView(
+ view -> {
+ view.attributes(
+ attrs ->
+ attrs.attribute(
+ Attribute.of(
+ "artifactType", String.class),
+ "jar"));
+ view.componentFilter(
+ c ->
+ !c.getDisplayName()
+ .startsWith(
+ "androidx.annotation:annotation:"));
+ })
+ .getArtifacts()
+ .getArtifactFiles()
+ .plus(project.files(android.getBootClasspath()));
+ dokka.setClasspath(artifactFiles);
+ });
+ }
+ });
+ });
+ project
+ .getTasks()
+ .create(
+ "kotlindoc",
+ Copy.class,
+ copy -> {
+ copy.dependsOn(dokkaAndroidTask);
+ copy.setDestinationDir(
+ project.file(project.getRootProject().getBuildDir() + "/firebase-kotlindoc"));
+ copy.from(
+ project.getBuildDir() + "/dokka/firebase",
+ cfg -> {
+ cfg.exclude("package-list");
+ cfg.filesMatching(
+ "_toc.yaml",
+ fileCopy ->
+ fileCopy.setRelativePath(
+ new RelativePath(
+ true,
+ "client",
+ firebaseLibrary.artifactId.get(),
+ "_toc.yaml")));
+ cfg.filesMatching(
+ "**/*.html",
+ fileCopy ->
+ fileCopy.filter(
+ line -> line.replaceAll("https://firebase.google.com", "")));
+ });
+ });
+ }
+
+ private static Optional createLink(
+ Project project, String url, String packageListPath) {
+
+ File packageListFile = project.getRootProject().file(packageListPath);
+ if (!packageListFile.exists()) {
+ return Optional.empty();
+ }
+ try {
+ DokkaConfiguration.ExternalDocumentationLink.Builder builder =
+ new DokkaConfiguration.ExternalDocumentationLink.Builder();
+ builder.setUrl(new URL(url));
+ builder.setPackageListUrl(packageListFile.toURI().toURL());
+ return Optional.of(builder.build());
+ } catch (MalformedURLException e) {
+ throw new GradleException("Could not parse url", e);
+ }
+ }
+}
diff --git a/buildSrc/src/main/groovy/com/google/firebase/gradle/plugins/FirebaseLibraryPlugin.java b/buildSrc/src/main/groovy/com/google/firebase/gradle/plugins/FirebaseLibraryPlugin.java
index 9121e388f08..e58b2d90b5a 100644
--- a/buildSrc/src/main/groovy/com/google/firebase/gradle/plugins/FirebaseLibraryPlugin.java
+++ b/buildSrc/src/main/groovy/com/google/firebase/gradle/plugins/FirebaseLibraryPlugin.java
@@ -81,6 +81,8 @@ public void apply(Project project) {
.getKotlinOptions()
.setFreeCompilerArgs(
ImmutableList.of("-module-name", kotlinModuleName(project))));
+
+ project.afterEvaluate(p -> Dokka.configure(project, android, firebaseLibrary));
}
private static void setupApiInformationAnalysis(Project project, LibraryExtension android) {
diff --git a/buildSrc/src/main/groovy/com/google/firebase/gradle/plugins/publish/PublishingPlugin.groovy b/buildSrc/src/main/groovy/com/google/firebase/gradle/plugins/publish/PublishingPlugin.groovy
index ca59d9ac377..523c582e20d 100644
--- a/buildSrc/src/main/groovy/com/google/firebase/gradle/plugins/publish/PublishingPlugin.groovy
+++ b/buildSrc/src/main/groovy/com/google/firebase/gradle/plugins/publish/PublishingPlugin.groovy
@@ -136,6 +136,7 @@ class PublishingPlugin implements Plugin {
def publishProjectsToBuildDir = project.task('publishProjectsToBuildDir') {
projectsToPublish.each { projectToPublish ->
dependsOn getPublishTask(projectToPublish, 'BuildDirRepository')
+ dependsOn "$projectToPublish.path:kotlindoc"
}
}
def buildMavenZip = project.task('buildMavenZip', type: Zip) {
@@ -146,6 +147,14 @@ class PublishingPlugin implements Plugin {
from "$project.buildDir/m2repository"
}
+ def buildKotlindocZip = project.task('buildKotlindocZip', type: Zip) {
+ dependsOn publishProjectsToBuildDir
+
+ archiveFileName = 'kotlindoc.zip'
+ destinationDirectory = project.buildDir
+
+ from "$project.buildDir/firebase-kotlindoc"
+ }
def info = project.task('publishPrintInfo') {
doLast {
@@ -153,8 +162,9 @@ class PublishingPlugin implements Plugin {
}
}
buildMavenZip.mustRunAfter info
+ buildKotlindocZip.mustRunAfter info
- firebasePublish.dependsOn info, buildMavenZip
+ firebasePublish.dependsOn info, buildMavenZip, buildKotlindocZip
try {
project.project(':kotlindoc')
diff --git a/buildSrc/src/test/groovy/com/google/firebase/gradle/plugins/publish/PublishingPluginSpec.groovy b/buildSrc/src/test/groovy/com/google/firebase/gradle/plugins/publish/PublishingPluginSpec.groovy
index 318b63accb1..df5b1206bcf 100644
--- a/buildSrc/src/test/groovy/com/google/firebase/gradle/plugins/publish/PublishingPluginSpec.groovy
+++ b/buildSrc/src/test/groovy/com/google/firebase/gradle/plugins/publish/PublishingPluginSpec.groovy
@@ -94,6 +94,9 @@ class PublishingPluginSpec extends Specification {
repositories {
google()
jcenter()
+ maven {
+ url 'https://storage.googleapis.com/android-ci/mvn/'
+ }
}
}
plugins {
diff --git a/firebase-components/gradle.properties b/firebase-components/gradle.properties
index 1c68d126d26..4796d38c012 100644
--- a/firebase-components/gradle.properties
+++ b/firebase-components/gradle.properties
@@ -13,3 +13,4 @@
# limitations under the License.
version=16.0.1
+latestReleasedVersion=16.0.0
\ No newline at end of file
diff --git a/kotlindoc/README.md b/kotlindoc/README.md
deleted file mode 100644
index b6144bfb92e..00000000000
--- a/kotlindoc/README.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# Tooling to generate Kotlin documentation.
-
-This module contains configuration for generating Kotlindoc that is hosted at
-[firebase.github.io](https://firebase.github.io/firebase-android-sdk/reference/kotlin/firebase-ktx/).
-
-To generate documentation for all "supported" SDKs(ones that have Kotlin extensions) run:
-
-```bash
-./gradlew :kotlindoc:dokka
-```
-
-To generate documentation for a subset of SDKs run:
-
-```bash
-./gradlew -PkotlindocProjects=":firebase-common,:firebase-firestore" :kotlindoc:dokka
-```
-
-The output will be located in `kotlindoc/build/dokka/html`.
-
-To update the live reference, create a PR with the contents of the above directory into the `gh-pages` branch.
\ No newline at end of file
diff --git a/kotlindoc/kotlindoc.gradle b/kotlindoc/kotlindoc.gradle
deleted file mode 100644
index 3b7f5b008e8..00000000000
--- a/kotlindoc/kotlindoc.gradle
+++ /dev/null
@@ -1,147 +0,0 @@
-// Copyright 2019 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-import org.jetbrains.dokka.gradle.DokkaAndroidTask
-
-plugins {
- id 'com.android.library'
- id 'kotlin-android'
- id 'org.jetbrains.dokka-android'
-}
-
-android {
- compileSdkVersion project.targetSdkVersion
- defaultConfig {
- minSdkVersion project.minSdkVersion
- targetSdkVersion project.targetSdkVersion
- }
-}
-
-// need to exclude annotations from classpath so that kotlindoc does not have @NonNull everywhere
-configurations.all {
- exclude group: 'androidx.annotation', module: 'annotation'
-}
-
-def ALL_SUPPORTED_PROJECTS = [
- ':firebase-common',
- ':firebase-config',
- ':firebase-database',
- ':firebase-dynamic-links',
- ':firebase-firestore',
- ':firebase-functions',
- ':firebase-inappmessaging',
- ':firebase-inappmessaging-display',
- ':firebase-storage',
-]
-
-
-def PROJECTS_TO_DOCUMENT = (project.findProperty('kotlindocProjects')?.split(',') ?: ALL_SUPPORTED_PROJECTS).collect {
- project(it)
-}
-
-def javaDeps = PROJECTS_TO_DOCUMENT
-def kotlinDeps = javaDeps.collect {
- project("$it.path:ktx")
-}
-
-dependencies {
- javaDeps.each {
- compile it
- }
- kotlinDeps.each {
- compile it
- }
-}
-
-dokka {
- moduleName = "firebase-ktx"
- outputDirectory = "$buildDir/dokka/html"
- outputFormat = "html"
- processConfigurations = []
-
- javaDeps.each { Project p ->
- dependsOn "$p.path:docStubs"
- sourceRoot {
- path = "$p.buildDir/doc-stubs"
- }
- }
- sourceDirs = files(kotlinDeps.collect {
- "$it.projectDir/src/main/kotlin"
- })
-
- android.libraryVariants.all { v ->
- if (v.name == 'release') {
- afterEvaluate {
- classpath = v.runtimeConfiguration.incoming.artifactView {
- attributes { c ->
- c.attribute(Attribute.of("artifactType", String.class), "jar")
- }
- }.artifacts.artifactFiles + android.bootClasspath
- }
- }
- }
-
- externalDocumentationLink {
- url = new URL('https://developers.google.com/android/reference/')
- packageListUrl = file('package-lists/google/package-list').toURI().toURL()
- }
-}
-
-tasks.create('dokkaFirebase', DokkaAndroidTask) {
- moduleName = "docs/reference/kotlin"
- outputDirectory = "$buildDir/dokka/firebase"
- outputFormat = "dac"
- processConfigurations = []
-
- javaDeps.each { Project p ->
- dependsOn "$p.path:docStubs"
- sourceRoot {
- path = "$p.buildDir/doc-stubs"
- }
- }
- sourceDirs = files(kotlinDeps.collect {
- "$it.projectDir/src/main/kotlin"
- })
-
- // populate the classpath with all transitive dependencies
- android.libraryVariants.all { v ->
- if (v.name == 'release') {
- afterEvaluate {
- classpath = v.runtimeConfiguration.incoming.artifactView {
- attributes { c ->
- c.attribute(Attribute.of("artifactType", String.class), "jar")
- }
- }.artifacts.artifactFiles + android.bootClasspath
- }
- }
- }
-
- noAndroidSdkLink = true
-
- externalDocumentationLink {
- url = new URL('https://developers.android.com/reference/kotlin/')
- packageListUrl = file('package-lists/android/package-list').toURI().toURL()
- }
-
- externalDocumentationLink {
- url = new URL('https://developers.google.com/android/reference/')
- packageListUrl = file('package-lists/google/package-list').toURI().toURL()
- }
-}
-
-tasks.create('dokkaFirebaseZip', Zip) {
- from "$buildDir/dokka/firebase/docs/reference/kotlin"
- exclude '**/package-list'
- destinationDirectory = project.rootProject.buildDir
-}
\ No newline at end of file
diff --git a/kotlindoc/package-lists/coroutines/package-list b/kotlindoc/package-lists/coroutines/package-list
new file mode 100644
index 00000000000..3140ff3fd09
--- /dev/null
+++ b/kotlindoc/package-lists/coroutines/package-list
@@ -0,0 +1,36 @@
+$dokka.format:kotlin-website
+$dokka.linkExtension:html
+$dokka.location:kotlinx.coroutines$asContextElement(java.lang.ThreadLocal((kotlinx.coroutines.asContextElement.T)), kotlinx.coroutines.asContextElement.T)kotlinx.coroutines/java.lang.-thread-local/as-context-element.html
+$dokka.location:kotlinx.coroutines$asCoroutineDispatcher(java.util.concurrent.Executor)kotlinx.coroutines/java.util.concurrent.-executor/as-coroutine-dispatcher.html
+$dokka.location:kotlinx.coroutines$asCoroutineDispatcher(java.util.concurrent.ExecutorService)kotlinx.coroutines/java.util.concurrent.-executor-service/as-coroutine-dispatcher.html
+$dokka.location:kotlinx.coroutines$asCoroutineDispatcher(org.w3c.dom.Window)kotlinx.coroutines/org.w3c.dom.-window/as-coroutine-dispatcher.html
+$dokka.location:kotlinx.coroutines$asDeferred(kotlin.js.Promise((kotlinx.coroutines.asDeferred.T)))kotlinx.coroutines/kotlin.js.-promise/as-deferred.html
+$dokka.location:kotlinx.coroutines$await(kotlin.js.Promise((kotlinx.coroutines.await.T)))kotlinx.coroutines/kotlin.js.-promise/await.html
+$dokka.location:kotlinx.coroutines$awaitAll(kotlin.collections.Collection((kotlinx.coroutines.Deferred((kotlinx.coroutines.awaitAll.T)))))kotlinx.coroutines/kotlin.collections.-collection/await-all.html
+$dokka.location:kotlinx.coroutines$awaitAnimationFrame(org.w3c.dom.Window)kotlinx.coroutines/org.w3c.dom.-window/await-animation-frame.html
+$dokka.location:kotlinx.coroutines$cancel(kotlin.coroutines.CoroutineContext, java.util.concurrent.CancellationException)kotlinx.coroutines/kotlin.coroutines.-coroutine-context/cancel.html
+$dokka.location:kotlinx.coroutines$cancelChildren(kotlin.coroutines.CoroutineContext, java.util.concurrent.CancellationException)kotlinx.coroutines/kotlin.coroutines.-coroutine-context/cancel-children.html
+$dokka.location:kotlinx.coroutines$ensureActive(kotlin.coroutines.CoroutineContext)kotlinx.coroutines/kotlin.coroutines.-coroutine-context/ensure-active.html
+$dokka.location:kotlinx.coroutines$ensurePresent(java.lang.ThreadLocal((kotlin.Any)))kotlinx.coroutines/java.lang.-thread-local/ensure-present.html
+$dokka.location:kotlinx.coroutines$id(kotlin.Any)kotlinx.coroutines/kotlin.-any/id.html
+$dokka.location:kotlinx.coroutines$isActive#kotlin.coroutines.CoroutineContextkotlinx.coroutines/kotlin.coroutines.-coroutine-context/is-active.html
+$dokka.location:kotlinx.coroutines$isPresent(java.lang.ThreadLocal((kotlin.Any)))kotlinx.coroutines/java.lang.-thread-local/is-present.html
+$dokka.location:kotlinx.coroutines$joinAll(kotlin.collections.Collection((kotlinx.coroutines.Job)))kotlinx.coroutines/kotlin.collections.-collection/join-all.html
+$dokka.location:kotlinx.coroutines.flow$asFlow(kotlin.Array((kotlinx.coroutines.flow.asFlow.T)))kotlinx.coroutines.flow/kotlin.-array/as-flow.html
+$dokka.location:kotlinx.coroutines.flow$asFlow(kotlin.Function0((kotlinx.coroutines.flow.asFlow.T)))kotlinx.coroutines.flow/kotlin.-function0/as-flow.html
+$dokka.location:kotlinx.coroutines.flow$asFlow(kotlin.IntArray)kotlinx.coroutines.flow/kotlin.-int-array/as-flow.html
+$dokka.location:kotlinx.coroutines.flow$asFlow(kotlin.LongArray)kotlinx.coroutines.flow/kotlin.-long-array/as-flow.html
+$dokka.location:kotlinx.coroutines.flow$asFlow(kotlin.SuspendFunction0((kotlinx.coroutines.flow.asFlow.T)))kotlinx.coroutines.flow/kotlin.-suspend-function0/as-flow.html
+$dokka.location:kotlinx.coroutines.flow$asFlow(kotlin.collections.Iterable((kotlinx.coroutines.flow.asFlow.T)))kotlinx.coroutines.flow/kotlin.collections.-iterable/as-flow.html
+$dokka.location:kotlinx.coroutines.flow$asFlow(kotlin.collections.Iterator((kotlinx.coroutines.flow.asFlow.T)))kotlinx.coroutines.flow/kotlin.collections.-iterator/as-flow.html
+$dokka.location:kotlinx.coroutines.flow$asFlow(kotlin.ranges.IntRange)kotlinx.coroutines.flow/kotlin.ranges.-int-range/as-flow.html
+$dokka.location:kotlinx.coroutines.flow$asFlow(kotlin.ranges.LongRange)kotlinx.coroutines.flow/kotlin.ranges.-long-range/as-flow.html
+$dokka.location:kotlinx.coroutines.flow$asFlow(kotlin.sequences.Sequence((kotlinx.coroutines.flow.asFlow.T)))kotlinx.coroutines.flow/kotlin.sequences.-sequence/as-flow.html
+$dokka.location:kotlinx.coroutines.intrinsics$startCoroutineCancellable(kotlin.SuspendFunction0((kotlinx.coroutines.intrinsics.startCoroutineCancellable.T)), kotlin.coroutines.Continuation((kotlinx.coroutines.intrinsics.startCoroutineCancellable.T)))kotlinx.coroutines.flow/kotlin.-suspend-function0/start-coroutine-cancellable.html
+kotlinx.coroutines
+kotlinx.coroutines.channels
+kotlinx.coroutines.flow
+kotlinx.coroutines.intrinsics
+kotlinx.coroutines.selects
+kotlinx.coroutines.sync
+kotlinx.coroutines.test
\ No newline at end of file
diff --git a/kotlindoc/package-lists/firebase/package-list b/kotlindoc/package-lists/firebase/package-list
new file mode 100644
index 00000000000..9ee146fd86f
--- /dev/null
+++ b/kotlindoc/package-lists/firebase/package-list
@@ -0,0 +1,76 @@
+com.crashlytics.sdk.android.answers
+com.crashlytics.sdk.android.beta
+com.crashlytics.sdk.android.crashlytics
+com.crashlytics.sdk.android.crashlytics-core
+com.google.android.gms.ads
+com.google.android.gms.ads.appopen
+com.google.android.gms.ads.doubleclick
+com.google.android.gms.ads.formats
+com.google.android.gms.ads.identifier
+com.google.android.gms.ads.initialization
+com.google.android.gms.ads.instream
+com.google.android.gms.ads.mediation
+com.google.android.gms.ads.mediation.admob
+com.google.android.gms.ads.mediation.customevent
+com.google.android.gms.ads.mediation.rtb
+com.google.android.gms.ads.reward
+com.google.android.gms.ads.reward.mediation
+com.google.android.gms.ads.rewarded
+com.google.android.gms.ads.search
+com.google.android.gms.appindexing
+com.google.android.gms.appinvite
+com.google.android.gms.measurement
+com.google.firebase
+com.google.firebase.analytics
+com.google.firebase.appindexing
+com.google.firebase.appindexing.builders
+com.google.firebase.appinvite
+com.google.firebase.auth
+com.google.firebase.auth.internal
+com.google.firebase.database
+com.google.firebase.database.ktx
+com.google.firebase.dynamiclinks
+com.google.firebase.dynamiclinks.ktx
+com.google.firebase.firestore
+com.google.firebase.firestore.ktx
+com.google.firebase.functions
+com.google.firebase.functions.ktx
+com.google.firebase.iid
+com.google.firebase.inappmessaging
+com.google.firebase.inappmessaging.display
+com.google.firebase.inappmessaging.display.ktx
+com.google.firebase.inappmessaging.ktx
+com.google.firebase.inappmessaging.model
+com.google.firebase.ktx
+com.google.firebase.messaging
+com.google.firebase.ml.common
+com.google.firebase.ml.common.modeldownload
+com.google.firebase.ml.custom
+com.google.firebase.ml.custom.model
+com.google.firebase.ml.naturallanguage
+com.google.firebase.ml.naturallanguage.languageid
+com.google.firebase.ml.naturallanguage.smartreply
+com.google.firebase.ml.naturallanguage.translate
+com.google.firebase.ml.text
+com.google.firebase.ml.vision
+com.google.firebase.ml.vision.automl
+com.google.firebase.ml.vision.barcode
+com.google.firebase.ml.vision.cloud
+com.google.firebase.ml.vision.cloud.label
+com.google.firebase.ml.vision.cloud.landmark
+com.google.firebase.ml.vision.cloud.text
+com.google.firebase.ml.vision.common
+com.google.firebase.ml.vision.document
+com.google.firebase.ml.vision.face
+com.google.firebase.ml.vision.label
+com.google.firebase.ml.vision.objects
+com.google.firebase.ml.vision.text
+com.google.firebase.perf
+com.google.firebase.perf.metrics
+com.google.firebase.provider
+com.google.firebase.remoteconfig
+com.google.firebase.remoteconfig.ktx
+com.google.firebase.storage
+com.google.firebase.storage.ktx
+io.fabric.sdk.android.fabric
+io.fabric.sdk.android.fabric.services.concurrency
\ No newline at end of file
diff --git a/kotlindoc/src/main/AndroidManifest.xml b/kotlindoc/src/main/AndroidManifest.xml
deleted file mode 100644
index 68251e62779..00000000000
--- a/kotlindoc/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/subprojects.cfg b/subprojects.cfg
index b0bca90d9eb..a729a886a83 100644
--- a/subprojects.cfg
+++ b/subprojects.cfg
@@ -45,4 +45,3 @@ transport:transport-api
transport:transport-backend-cct
transport:transport-runtime
-kotlindoc
\ No newline at end of file