Unify top-level API task configuration
Explicitly disables API tasks for camera modules that are missing API
files -- filed b/161377155 to track fix.
Bug: 129362030
Test: ./gradlew bOS
Change-Id: Ibf71bb38177f3cbdc1078cfddf3f4488d176ad5c
diff --git a/buildSrc/src/main/kotlin/androidx/build/AndroidXExtension.kt b/buildSrc/src/main/kotlin/androidx/build/AndroidXExtension.kt
index 4bbab44..3204992 100644
--- a/buildSrc/src/main/kotlin/androidx/build/AndroidXExtension.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/AndroidXExtension.kt
@@ -96,6 +96,12 @@
}
private var licenses: MutableCollection<License> = ArrayList()
var publish: Publish = Publish.NONE
+
+ /**
+ * Whether to run API tasks such as tracking and linting. The default value is
+ * [RunApiTasks.Auto], which automatically picks based on the project's properties.
+ */
+ var runApiTasks: RunApiTasks = RunApiTasks.Auto
var failOnDeprecationWarnings = true
var compilationTarget: CompilationTarget = CompilationTarget.DEVICE
@@ -154,6 +160,15 @@
fun shouldPublish() = this == SNAPSHOT_ONLY || this == SNAPSHOT_AND_RELEASE
}
+sealed class RunApiTasks {
+ /** Automatically determine whether API tasks should be run. */
+ object Auto : RunApiTasks()
+ /** Always run API tasks regardless of other project properties. */
+ data class Yes(val reason: String? = null) : RunApiTasks()
+ /** Do not run any API tasks. */
+ data class No(val reason: String) : RunApiTasks()
+}
+
class License {
var name: String? = null
var url: String? = null
diff --git a/buildSrc/src/main/kotlin/androidx/build/AndroidXPlugin.kt b/buildSrc/src/main/kotlin/androidx/build/AndroidXPlugin.kt
index 0781d14..c0555f6c 100644
--- a/buildSrc/src/main/kotlin/androidx/build/AndroidXPlugin.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/AndroidXPlugin.kt
@@ -31,9 +31,9 @@
import androidx.build.gradle.isRoot
import androidx.build.jacoco.Jacoco
import androidx.build.license.configureExternalDependencyLicenseCheck
-import androidx.build.metalava.MetalavaTasks.configureAndroidProjectForMetalava
-import androidx.build.metalava.MetalavaTasks.configureJavaProjectForMetalava
-import androidx.build.resources.ResourceTasks.configureAndroidProjectForResourceTasks
+import androidx.build.checkapi.JavaApiTaskConfig
+import androidx.build.checkapi.LibraryApiTaskConfig
+import androidx.build.checkapi.configureProjectForApiTasks
import androidx.build.studio.StudioTask
import com.android.build.gradle.AppExtension
import com.android.build.gradle.AppPlugin
@@ -276,8 +276,11 @@
if (project.isDocumentationEnabled()) {
project.configureAndroidProjectForDokka(libraryExtension, androidXExtension)
}
- project.configureAndroidProjectForMetalava(libraryExtension, androidXExtension)
- project.configureAndroidProjectForResourceTasks(libraryExtension, androidXExtension)
+
+ project.configureProjectForApiTasks(
+ LibraryApiTaskConfig(libraryExtension),
+ androidXExtension
+ )
project.addToProjectMap(androidXExtension)
}
@@ -314,7 +317,11 @@
if (project.isDocumentationEnabled()) {
project.configureJavaProjectForDokka(extension)
}
- project.configureJavaProjectForMetalava(extension)
+
+ project.configureProjectForApiTasks(
+ JavaApiTaskConfig,
+ extension
+ )
project.afterEvaluate {
if (extension.publish.shouldRelease()) {
diff --git a/buildSrc/src/main/kotlin/androidx/build/checkapi/ApiTasks.kt b/buildSrc/src/main/kotlin/androidx/build/checkapi/ApiTasks.kt
new file mode 100644
index 0000000..ac67782
--- /dev/null
+++ b/buildSrc/src/main/kotlin/androidx/build/checkapi/ApiTasks.kt
@@ -0,0 +1,158 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * 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 androidx.build.checkapi
+
+import androidx.build.AndroidXExtension
+import androidx.build.Release
+import androidx.build.RunApiTasks
+import androidx.build.isVersionedApiFileWritingEnabled
+import androidx.build.java.JavaCompileInputs
+import androidx.build.metalava.MetalavaTasks
+import androidx.build.resources.ResourceTasks
+import com.android.build.gradle.LibraryExtension
+import com.android.build.gradle.tasks.ProcessLibraryManifest
+import org.gradle.api.GradleException
+import org.gradle.api.Project
+import org.gradle.api.plugins.JavaPluginConvention
+import org.gradle.kotlin.dsl.getPlugin
+
+sealed class ApiTaskConfig
+data class LibraryApiTaskConfig(val library: LibraryExtension) : ApiTaskConfig()
+object JavaApiTaskConfig : ApiTaskConfig()
+
+private fun AndroidXExtension.shouldConfigureApiTasks(): Boolean {
+ if (!project.state.executed) {
+ throw GradleException("Project ${project.name} has not been evaluated. Extension" +
+ "properties may only be accessed after the project has been evaluated.")
+ }
+
+ when (runApiTasks) {
+ is RunApiTasks.No -> {
+ project.logger.info("Project ${project.name} has explicitly disabled API tasks with " +
+ "reason: ${(runApiTasks as RunApiTasks.No).reason}")
+ return false
+ }
+ is RunApiTasks.Yes -> {
+ (runApiTasks as RunApiTasks.Yes).reason?.let { reason ->
+ project.logger.info("Project ${project.name} has explicitly enabled API tasks " +
+ "with reason: $reason")
+ }
+ return true
+ }
+ else -> {}
+ }
+
+ // Tooling projects cannot track APIs.
+ if (toolingProject) {
+ project.logger.info("Project ${project.name} is tooling project, ignoring API tasks.")
+ return false
+ }
+
+ if (mavenVersion == null) {
+ project.logger.info("Project ${project.name} has no version set, ignoring API tasks.")
+ return false
+ }
+
+ // If the project has an "api" directory, either because they used to track APIs or they
+ // added one manually to force tracking (as recommended below), continue tracking APIs.
+ if (project.hasApiFileDirectory() && !publish.shouldRelease()) {
+ project.logger.error("Project ${project.name} is not published, but has an existing API " +
+ "directory. Forcing API tasks enabled. Please migrate to runApiTasks=Yes.")
+ return true
+ }
+
+ if (!publish.shouldRelease()) {
+ project.logger.info("Project ${project.name} is not published, ignoring API tasks. " +
+ "If you still want to track APIs, create an \"api\" directory in your project" +
+ " root and run the updateApi task.")
+ return false
+ }
+
+ if (publish.shouldRelease() && mavenVersion!!.isFinalApi()) {
+ throw GradleException("Project ${project.name} must track APIs before stabilizing " +
+ "for release. To do that, create an \"api\" directory in your project root " +
+ "and run the updateApi task.")
+ }
+
+ return true
+}
+
+fun Project.configureProjectForApiTasks(
+ config: ApiTaskConfig,
+ extension: AndroidXExtension
+) {
+ // afterEvaluate required to read extension properties
+ afterEvaluate {
+ if (!extension.shouldConfigureApiTasks()) {
+ return@afterEvaluate
+ }
+
+ val builtApiLocation = project.getBuiltApiLocation()
+ val versionedApiLocation = project.getVersionedApiLocation()
+ val currentApiLocation = project.getCurrentApiLocation()
+ val outputApiLocations = if (project.isVersionedApiFileWritingEnabled()) {
+ listOf(
+ versionedApiLocation,
+ currentApiLocation
+ )
+ } else {
+ listOf(
+ currentApiLocation
+ )
+ }
+
+ val javaInputs: JavaCompileInputs
+ val processManifest: ProcessLibraryManifest?
+ when (config) {
+ is LibraryApiTaskConfig -> {
+ val variant = config.library.libraryVariants.find {
+ it.name == Release.DEFAULT_PUBLISH_CONFIG
+ } ?: return@afterEvaluate
+
+ javaInputs = JavaCompileInputs.fromLibraryVariant(
+ config.library,
+ variant,
+ project
+ )
+ processManifest = config.library.buildOutputs.getByName(variant.name)
+ .processManifestProvider.get() as ProcessLibraryManifest
+ }
+ is JavaApiTaskConfig -> {
+ val javaPluginConvention = convention.getPlugin<JavaPluginConvention>()
+ val mainSourceSet = javaPluginConvention.sourceSets.getByName("main")
+ javaInputs = JavaCompileInputs.fromSourceSet(mainSourceSet, this)
+ processManifest = null
+ }
+ }
+
+ // Note that the use of a versioned baseline file conflicts with the "don't generate
+ // versioned API files" bit. We'll cross the bridge when we get to it.
+ val baselinesApiLocation = ApiBaselinesLocation.fromApiLocation(versionedApiLocation)
+
+ MetalavaTasks.setupProject(
+ project, javaInputs, extension, processManifest, baselinesApiLocation,
+ builtApiLocation, outputApiLocations
+ )
+
+ if (config is LibraryApiTaskConfig) {
+ ResourceTasks.setupProject(
+ project, Release.DEFAULT_PUBLISH_CONFIG,
+ builtApiLocation, outputApiLocations
+ )
+ }
+ }
+}
diff --git a/buildSrc/src/main/kotlin/androidx/build/checkapi/CheckApi.kt b/buildSrc/src/main/kotlin/androidx/build/checkapi/CheckApi.kt
index bbe37d5..9f499d5 100644
--- a/buildSrc/src/main/kotlin/androidx/build/checkapi/CheckApi.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/checkapi/CheckApi.kt
@@ -16,7 +16,6 @@
package androidx.build.checkapi
-import androidx.build.AndroidXExtension
import androidx.build.Version
import androidx.build.checkapi.ApiLocation.Companion.isResourceApiFile
import androidx.build.version
@@ -29,30 +28,6 @@
RESOURCEAPI
}
-fun hasApiTasks(project: Project, extension: AndroidXExtension): Boolean {
- if (extension.toolingProject) {
- project.logger.info("Project ${project.name} is tooling project ignoring API tasks.")
- return false
- }
-
- if (project.hasApiFileDirectory()) {
- return true
- }
-
- if (!extension.publish.shouldRelease()) {
- project.logger.info("Project ${project.name} is not published, ignoring API tasks." +
- "If you still want to trackApi, simply create \"api\" folder in your project path")
- return false
- }
-
- if (extension.publish.shouldRelease() && project.version().isFinalApi()) {
- throw GradleException("Project ${project.name} must track API before stabilizing API\n." +
- "To do that create \"api\" in your project directory and " +
- "run \"./gradlew updateApi\" command")
- }
- return false
-}
-
/**
* Returns the API file containing the public API that this library promises to support
* This is API file that checkApiRelease validates against
diff --git a/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaTasks.kt b/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaTasks.kt
index 9575ebb..a331afc 100644
--- a/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaTasks.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaTasks.kt
@@ -20,109 +20,32 @@
import androidx.build.addToBuildOnServer
import androidx.build.addToCheckTask
import androidx.build.checkapi.ApiBaselinesLocation
-import androidx.build.checkapi.getBuiltApiLocation
-import androidx.build.checkapi.getVersionedApiLocation
-import androidx.build.checkapi.getCurrentApiLocation
+import androidx.build.checkapi.ApiLocation
import androidx.build.checkapi.getRequiredCompatibilityApiLocation
-import androidx.build.checkapi.hasApiFileDirectory
-import androidx.build.checkapi.hasApiTasks
-import androidx.build.defaultPublishVariant
import androidx.build.java.JavaCompileInputs
-import androidx.build.isVersionedApiFileWritingEnabled
import androidx.build.uptodatedness.cacheEvenIfNoOutputs
-import com.android.build.gradle.LibraryExtension
import com.android.build.gradle.api.LibraryVariant
import com.android.build.gradle.tasks.ProcessLibraryManifest
import org.gradle.api.Project
-import org.gradle.api.plugins.JavaPluginConvention
import org.gradle.api.tasks.TaskProvider
import org.gradle.api.tasks.bundling.Zip
import org.gradle.api.tasks.compile.JavaCompile
-import org.gradle.kotlin.dsl.getPlugin
import java.io.File
const val CREATE_STUB_API_JAR_TASK = "createStubApiJar"
object MetalavaTasks {
- fun Project.configureAndroidProjectForMetalava(
- library: LibraryExtension,
- extension: AndroidXExtension
- ) {
- afterEvaluate {
- if (!hasApiTasks(this, extension)) {
- return@afterEvaluate
- }
-
- library.defaultPublishVariant { variant ->
- if (!project.hasApiFileDirectory()) {
- logger.info(
- "Project $name doesn't have an api folder, ignoring API tasks."
- )
- return@defaultPublishVariant
- }
-
- val javaInputs = JavaCompileInputs.fromLibraryVariant(library, variant, project)
- val processManifest = library.buildOutputs.getByName(variant.name)
- .processManifestProvider.get() as ProcessLibraryManifest
- setupProject(this, javaInputs, extension, processManifest)
- // TODO(aurimas): reenable this when kotlin stubs generation is working.
- // setupStubs(this, javaInputs, variant)
- }
- }
- }
-
- fun Project.configureJavaProjectForMetalava(
- extension: AndroidXExtension
- ) {
- afterEvaluate {
- if (!hasApiTasks(this, extension)) {
- return@afterEvaluate
- }
- if (!project.hasApiFileDirectory()) {
- logger.info(
- "Project $name doesn't have an api folder, ignoring API tasks."
- )
- return@afterEvaluate
- }
-
- val javaPluginConvention = convention.getPlugin<JavaPluginConvention>()
- val mainSourceSet = javaPluginConvention.sourceSets.getByName("main")
- val javaInputs = JavaCompileInputs.fromSourceSet(mainSourceSet, this)
- setupProject(this, javaInputs, extension)
- }
- }
-
- fun applyInputs(inputs: JavaCompileInputs, task: MetalavaTask) {
- task.sourcePaths = inputs.sourcePaths.files
- task.dependsOn(inputs.sourcePaths)
- task.dependencyClasspath = inputs.dependencyClasspath
- task.bootClasspath = inputs.bootClasspath
- }
-
fun setupProject(
project: Project,
javaCompileInputs: JavaCompileInputs,
extension: AndroidXExtension,
- processManifest: ProcessLibraryManifest? = null
+ processManifest: ProcessLibraryManifest? = null,
+ baselinesApiLocation: ApiBaselinesLocation,
+ builtApiLocation: ApiLocation,
+ outputApiLocations: List<ApiLocation>
) {
val metalavaConfiguration = project.getMetalavaConfiguration()
- val versionedApiLocation = project.getVersionedApiLocation()
- val currentApiLocation = project.getCurrentApiLocation()
- val builtApiLocation = project.getBuiltApiLocation()
-
- val outputApiLocations = if (project.isVersionedApiFileWritingEnabled()) {
- listOf(
- versionedApiLocation,
- currentApiLocation
- )
- } else {
- listOf(
- currentApiLocation
- )
- }
-
- val baselines = ApiBaselinesLocation.fromApiLocation(versionedApiLocation)
// Policy: If the artifact belongs to an atomic (e.g. same-version) group, we don't enforce
// binary compatibility for APIs annotated with @RestrictTo(LIBRARY_GROUP). This is
@@ -135,7 +58,7 @@
task.apiLocation.set(builtApiLocation)
task.configuration = metalavaConfiguration
task.generateRestrictToLibraryGroupAPIs = generateRestrictToLibraryGroupAPIs
- task.baselines.set(baselines)
+ task.baselines.set(baselinesApiLocation)
task.dependsOn(metalavaConfiguration)
processManifest?.let {
task.manifestPath.set(processManifest.manifestOutputFile)
@@ -154,7 +77,7 @@
) { task ->
task.configuration = metalavaConfiguration
task.referenceApi.set(lastReleasedApiFile)
- task.baselines.set(baselines)
+ task.baselines.set(baselinesApiLocation)
task.dependsOn(metalavaConfiguration)
task.api.set(builtApiLocation)
task.dependencyClasspath = javaCompileInputs.dependencyClasspath
@@ -179,7 +102,7 @@
UpdateApiLintBaselineTask::class.java
) { task ->
task.configuration = metalavaConfiguration
- task.baselines.set(baselines)
+ task.baselines.set(baselinesApiLocation)
processManifest?.let {
task.manifestPath.set(processManifest.manifestOutputFile)
}
@@ -249,6 +172,13 @@
project.addToBuildOnServer(checkApi)
}
+ private fun applyInputs(inputs: JavaCompileInputs, task: MetalavaTask) {
+ task.sourcePaths = inputs.sourcePaths.files
+ task.dependsOn(inputs.sourcePaths)
+ task.dependencyClasspath = inputs.dependencyClasspath
+ task.bootClasspath = inputs.bootClasspath
+ }
+
@Suppress("unused")
private fun setupStubs(
project: Project,
diff --git a/buildSrc/src/main/kotlin/androidx/build/resources/ResourceTasks.kt b/buildSrc/src/main/kotlin/androidx/build/resources/ResourceTasks.kt
index dcb0014..69f4e8e 100644
--- a/buildSrc/src/main/kotlin/androidx/build/resources/ResourceTasks.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/resources/ResourceTasks.kt
@@ -16,21 +16,13 @@
package androidx.build.resources
-import androidx.build.AndroidXExtension
import androidx.build.AndroidXPlugin.Companion.TASK_GROUP_API
import androidx.build.addToBuildOnServer
import androidx.build.addToCheckTask
-import androidx.build.checkapi.getBuiltApiLocation
-import androidx.build.checkapi.getCurrentApiLocation
+import androidx.build.checkapi.ApiLocation
import androidx.build.checkapi.getRequiredCompatibilityApiLocation
-import androidx.build.checkapi.getVersionedApiLocation
-import androidx.build.checkapi.hasApiFileDirectory
-import androidx.build.checkapi.hasApiTasks
-import androidx.build.defaultPublishVariant
-import androidx.build.isVersionedApiFileWritingEnabled
import androidx.build.metalava.UpdateApiTask
import androidx.build.uptodatedness.cacheEvenIfNoOutputs
-import com.android.build.gradle.LibraryExtension
import org.gradle.api.Project
import java.util.Locale
@@ -40,32 +32,11 @@
private const val CHECK_RESOURCE_API_TASK = "checkResourceApi"
private const val UPDATE_RESOURCE_API_TASK = "updateResourceApi"
- @Suppress("UnstableApiUsage")
- fun Project.configureAndroidProjectForResourceTasks(
- library: LibraryExtension,
- extension: AndroidXExtension
- ) {
- afterEvaluate { project ->
- if (!hasApiTasks(this, extension)) {
- return@afterEvaluate
- }
-
- library.defaultPublishVariant { variant ->
- if (!project.hasApiFileDirectory()) {
- logger.info(
- "Project $name doesn't have an api folder, ignoring API tasks."
- )
- return@defaultPublishVariant
- }
-
- setupProject(project, variant.name)
- }
- }
- }
-
- private fun setupProject(
+ fun setupProject(
project: Project,
- variantName: String
+ variantName: String,
+ builtApiLocation: ApiLocation,
+ outputApiLocations: List<ApiLocation>
) {
@OptIn(ExperimentalStdlibApi::class)
val packageResTask = project.tasks
@@ -75,21 +46,6 @@
(task as com.android.build.gradle.tasks.MergeResources).publicFile
}
- val versionedApiLocation = project.getVersionedApiLocation()
- val currentApiLocation = project.getCurrentApiLocation()
- val builtApiLocation = project.getBuiltApiLocation()
-
- val outputApiLocations = if (project.isVersionedApiFileWritingEnabled()) {
- listOf(
- versionedApiLocation,
- currentApiLocation
- )
- } else {
- listOf(
- currentApiLocation
- )
- }
-
val outputApiFiles = outputApiLocations.map { location ->
location.resourceFile
}
diff --git a/camera/camera-extensions/build.gradle b/camera/camera-extensions/build.gradle
index b0401cc..0633ff5 100644
--- a/camera/camera-extensions/build.gradle
+++ b/camera/camera-extensions/build.gradle
@@ -18,6 +18,7 @@
import androidx.build.LibraryVersions
import androidx.build.LibraryGroups
import androidx.build.Publish
+import androidx.build.RunApiTasks
plugins {
id("AndroidXPlugin")
@@ -73,6 +74,7 @@
androidx {
name = "Jetpack Camera Library OEM Extensions"
publish = Publish.SNAPSHOT_AND_RELEASE
+ runApiTasks = new RunApiTasks.No("Temporary policy violation, see b/161377155")
mavenVersion = LibraryVersions.CAMERA_EXTENSIONS
mavenGroup = LibraryGroups.CAMERA
inceptionYear = "2019"
diff --git a/camera/camera-view/build.gradle b/camera/camera-view/build.gradle
index 5b88118..2c08f9a 100644
--- a/camera/camera-view/build.gradle
+++ b/camera/camera-view/build.gradle
@@ -18,6 +18,7 @@
import androidx.build.LibraryVersions
import androidx.build.LibraryGroups
import androidx.build.Publish
+import androidx.build.RunApiTasks
plugins {
id("AndroidXPlugin")
@@ -64,6 +65,7 @@
androidx {
name = "Jetpack Camera View Library"
publish = Publish.SNAPSHOT_AND_RELEASE
+ runApiTasks = new RunApiTasks.No("Temporary policy violation, see b/161377155")
mavenVersion = LibraryVersions.CAMERA_VIEW
mavenGroup = LibraryGroups.CAMERA
inceptionYear = "2019"
diff --git a/lifecycle/lifecycle-extensions/build.gradle b/lifecycle/lifecycle-extensions/build.gradle
index 95a24ba..12f7761 100644
--- a/lifecycle/lifecycle-extensions/build.gradle
+++ b/lifecycle/lifecycle-extensions/build.gradle
@@ -15,10 +15,11 @@
*/
import static androidx.build.dependencies.DependenciesKt.*
+
import androidx.build.LibraryGroups
import androidx.build.LibraryVersions
-import androidx.build.AndroidXExtension
import androidx.build.Publish
+import androidx.build.RunApiTasks
plugins {
id("AndroidXPlugin")
@@ -55,6 +56,7 @@
androidx {
name = "Android Lifecycle Extensions"
publish = Publish.NONE
+ runApiTasks = new RunApiTasks.Yes("Need to track API surface before moving to publish")
mavenVersion = LibraryVersions.LIFECYCLE_EXTENSIONS
mavenGroup = LibraryGroups.LIFECYCLE
inceptionYear = "2017"
diff --git a/security/identity-credential/build.gradle b/security/identity-credential/build.gradle
index d580e44..20bfd56 100644
--- a/security/identity-credential/build.gradle
+++ b/security/identity-credential/build.gradle
@@ -14,10 +14,10 @@
* limitations under the License.
*/
-import static androidx.build.dependencies.DependenciesKt.*
import androidx.build.LibraryGroups
import androidx.build.LibraryVersions
import androidx.build.Publish
+import androidx.build.RunApiTasks
plugins {
id("AndroidXPlugin")
@@ -38,6 +38,7 @@
androidx {
name = "AndroidX Security"
publish = Publish.NONE
+ runApiTasks = new RunApiTasks.Yes("Need to track API surface before moving to publish")
mavenVersion = LibraryVersions.SECURITY_IDENTITY_CREDENTIAL
mavenGroup = LibraryGroups.SECURITY
inceptionYear = "2019"
diff --git a/window/window-extensions/build.gradle b/window/window-extensions/build.gradle
index 67bcdc5..799b82e 100644
--- a/window/window-extensions/build.gradle
+++ b/window/window-extensions/build.gradle
@@ -17,9 +17,7 @@
import androidx.build.LibraryGroups
import androidx.build.LibraryVersions
import androidx.build.Publish
-
-import static androidx.build.dependencies.DependenciesKt.AUTO_VALUE
-import static androidx.build.dependencies.DependenciesKt.AUTO_VALUE_ANNOTATIONS
+import androidx.build.RunApiTasks
plugins {
id("AndroidXPlugin")
@@ -39,6 +37,7 @@
androidx {
name = "Jetpack WindowManager library Extensions"
publish = Publish.NONE
+ runApiTasks = new RunApiTasks.Yes("Need to track API surface before moving to publish")
mavenGroup = LibraryGroups.WINDOW
mavenVersion = LibraryVersions.WINDOW
inceptionYear = "2020"
diff --git a/window/window-sidecar/build.gradle b/window/window-sidecar/build.gradle
index 930dca2..5c704f4 100644
--- a/window/window-sidecar/build.gradle
+++ b/window/window-sidecar/build.gradle
@@ -17,9 +17,7 @@
import androidx.build.LibraryGroups
import androidx.build.LibraryVersions
import androidx.build.Publish
-
-import static androidx.build.dependencies.DependenciesKt.AUTO_VALUE
-import static androidx.build.dependencies.DependenciesKt.AUTO_VALUE_ANNOTATIONS
+import androidx.build.RunApiTasks
plugins {
id("AndroidXPlugin")
@@ -39,6 +37,7 @@
androidx {
name = "Jetpack WindowManager library Sidecar"
publish = Publish.NONE
+ runApiTasks = new RunApiTasks.Yes("Need to track API surface but should never publish")
mavenGroup = LibraryGroups.WINDOW
mavenVersion = LibraryVersions.WINDOW_SIDECAR
inceptionYear = "2020"