Move minSdkVersion default into AndroidX plugin
This changes the beahvior to set the minimum to the default (currently 14) and allow overriding using the normal mechanism of the android.defaultConfig { } DSL.
Library with default:
$ cat ../../out/host/gradle/frameworks/support/core/build/intermediates/merged_manifests/release/processReleaseManifest/merged/AndroidManifest.xml | \grep minSdk
<uses-sdk android:minSdkVersion="14" />
Library with custom value:
$ cat ../../out/host/gradle/frameworks/support/heifwriter/build/intermediates/merged_manifests/release/processReleaseManifest/merged/AndroidManifest.xml | \grep minSdk
<uses-sdk android:minSdkVersion="28" />
Test: ./gradlew :core:assemble :heifwriter:assemble (and manual verification above)
Change-Id: I5dfac73f480b49b697aff4bc3243b845e1449f98
diff --git a/browser/build.gradle b/browser/build.gradle
index ec2f1dc..1336b63 100644
--- a/browser/build.gradle
+++ b/browser/build.gradle
@@ -6,6 +6,12 @@
id("SupportAndroidLibraryPlugin")
}
+android {
+ defaultConfig {
+ minSdkVersion 15
+ }
+}
+
dependencies {
api(project(":core"))
api(project(":annotation"))
@@ -26,5 +32,4 @@
mavenGroup = LibraryGroups.BROWSER
inceptionYear = "2015"
description = "Android Support Custom Tabs"
- minSdkVersion = 15
}
diff --git a/buildSrc/src/main/kotlin/androidx/build/AndroidXPlugin.kt b/buildSrc/src/main/kotlin/androidx/build/AndroidXPlugin.kt
index ec222fd..0e00a35 100644
--- a/buildSrc/src/main/kotlin/androidx/build/AndroidXPlugin.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/AndroidXPlugin.kt
@@ -16,10 +16,12 @@
package androidx.build
+import androidx.build.SupportConfig.DEFAULT_MIN_SDK_VERSION
import androidx.build.gradle.getByType
import androidx.build.license.configureExternalDependencyLicenseCheck
import com.android.build.gradle.AppExtension
import com.android.build.gradle.AppPlugin
+import com.android.build.gradle.BaseExtension
import com.android.build.gradle.LibraryExtension
import com.android.build.gradle.LibraryPlugin
import org.gradle.api.JavaVersion.VERSION_1_7
@@ -56,6 +58,7 @@
project.configureErrorProneForAndroid(extension.libraryVariants)
project.configureSourceJarForAndroid(extension)
+ project.configureDefaultMinSdkVersion(extension)
extension.compileOptions.apply {
setSourceCompatibility(VERSION_1_7)
@@ -78,6 +81,7 @@
is AppPlugin -> {
val extension = project.extensions.getByType<AppExtension>()
project.configureErrorProneForAndroid(extension.applicationVariants)
+ project.configureDefaultMinSdkVersion(extension)
}
}
}
@@ -91,4 +95,15 @@
isPreserveFileTimestamps = false
}
}
+
+ private fun Project.configureDefaultMinSdkVersion(extension: BaseExtension) {
+ extension.defaultConfig.minSdkVersion(DEFAULT_MIN_SDK_VERSION)
+
+ afterEvaluate {
+ val minSdkVersion = extension.defaultConfig.minSdkVersion.apiLevel
+ check(minSdkVersion >= DEFAULT_MIN_SDK_VERSION) {
+ "minSdkVersion $minSdkVersion lower than the default of $DEFAULT_MIN_SDK_VERSION"
+ }
+ }
+ }
}
diff --git a/buildSrc/src/main/kotlin/androidx/build/SupportAndroidLibraryPlugin.kt b/buildSrc/src/main/kotlin/androidx/build/SupportAndroidLibraryPlugin.kt
index 9d7fb83..b51af64 100644
--- a/buildSrc/src/main/kotlin/androidx/build/SupportAndroidLibraryPlugin.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/SupportAndroidLibraryPlugin.kt
@@ -19,6 +19,7 @@
import androidx.build.SupportConfig.INSTRUMENTATION_RUNNER
import androidx.build.metalava.Metalava
import com.android.build.gradle.LibraryExtension
+import com.android.build.gradle.LibraryPlugin
import com.android.build.gradle.tasks.GenerateBuildConfig
import org.gradle.api.Plugin
import org.gradle.api.Project
@@ -42,8 +43,6 @@
val library = project.extensions.findByType(LibraryExtension::class.java)
?: return@afterEvaluate
- library.defaultConfig.minSdkVersion(supportLibraryExtension.minSdkVersion)
-
VersionFileWriterTask.setUpAndroidLibrary(project, library)
if (supportLibraryExtension.useMetalava) {
@@ -67,7 +66,7 @@
}
}
- project.apply(mapOf("plugin" to "com.android.library"))
+ project.apply<LibraryPlugin>()
project.afterEvaluate {
project.tasks.all({
diff --git a/buildSrc/src/main/kotlin/androidx/build/SupportAndroidTestAppExtension.kt b/buildSrc/src/main/kotlin/androidx/build/SupportAndroidTestAppExtension.kt
deleted file mode 100644
index f908a02..0000000
--- a/buildSrc/src/main/kotlin/androidx/build/SupportAndroidTestAppExtension.kt
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright 2018 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
-
-import androidx.build.SupportConfig.DEFAULT_MIN_SDK_VERSION
-import org.gradle.api.Project
-
-/**
- * Extension for [SupportAndroidTestAppPlugin].
- */
-open class SupportAndroidTestAppExtension(val project: Project) {
- /**
- * If unset minSdkVersion will be [DEFAULT_MIN_SDK_VERSION].
- */
- var minSdkVersion: Int = DEFAULT_MIN_SDK_VERSION
-}
diff --git a/buildSrc/src/main/kotlin/androidx/build/SupportAndroidTestAppPlugin.kt b/buildSrc/src/main/kotlin/androidx/build/SupportAndroidTestAppPlugin.kt
index 8c4055f..efaff72 100644
--- a/buildSrc/src/main/kotlin/androidx/build/SupportAndroidTestAppPlugin.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/SupportAndroidTestAppPlugin.kt
@@ -18,6 +18,7 @@
import androidx.build.SupportConfig.INSTRUMENTATION_RUNNER
import com.android.build.gradle.AppExtension
+import com.android.build.gradle.AppPlugin
import org.gradle.api.JavaVersion
import org.gradle.api.Plugin
import org.gradle.api.Project
@@ -30,16 +31,7 @@
class SupportAndroidTestAppPlugin : Plugin<Project> {
override fun apply(project: Project) {
project.apply<AndroidXPlugin>()
-
- val testAppExtension = project.extensions.create("supportTestApp",
- SupportAndroidTestAppExtension::class.java, project)
- project.afterEvaluate {
- val application = project.extensions.findByType(AppExtension::class.java)
- ?: throw Exception("Failed to find Android extension")
- application.defaultConfig.minSdkVersion(testAppExtension.minSdkVersion)
- }
-
- project.apply(mapOf("plugin" to "com.android.application"))
+ project.apply<AppPlugin>()
val application = project.extensions.findByType(AppExtension::class.java)
?: throw Exception("Failed to find Android extension")
diff --git a/buildSrc/src/main/kotlin/androidx/build/SupportLibraryExtension.kt b/buildSrc/src/main/kotlin/androidx/build/SupportLibraryExtension.kt
index dbdef64..7886ebb 100644
--- a/buildSrc/src/main/kotlin/androidx/build/SupportLibraryExtension.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/SupportLibraryExtension.kt
@@ -16,7 +16,6 @@
package androidx.build
-import androidx.build.SupportConfig.DEFAULT_MIN_SDK_VERSION
import groovy.lang.Closure
import org.gradle.api.Project
import java.util.ArrayList
@@ -45,11 +44,6 @@
*/
var toolingProject = false
- /**
- * If unset minSdkVersion will be [DEFAULT_MIN_SDK_VERSION].
- */
- var minSdkVersion: Int = DEFAULT_MIN_SDK_VERSION
-
fun license(closure: Closure<*>): License {
val license = project.configure(License(), closure) as License
licenses.add(license)
diff --git a/car/build.gradle b/car/build.gradle
index 398a434..3b7c964 100644
--- a/car/build.gradle
+++ b/car/build.gradle
@@ -34,6 +34,10 @@
}
android {
+ defaultConfig {
+ minSdkVersion 24
+ }
+
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
@@ -51,6 +55,5 @@
mavenGroup = LibraryGroups.CAR
inceptionYear = "2017"
description = "Android Car Support UI"
- minSdkVersion = 24
failOnUncheckedWarnings = false
}
diff --git a/docs-fake/build.gradle b/docs-fake/build.gradle
index ea70dfa..9c9dd5a 100644
--- a/docs-fake/build.gradle
+++ b/docs-fake/build.gradle
@@ -34,6 +34,10 @@
}
android {
+ defaultConfig {
+ minSdkVersion SupportConfig.CURRENT_SDK_VERSION
+ }
+
sourceSets {
main {
manifest.srcFile "AndroidManifest.xml"
@@ -41,8 +45,3 @@
}
flavorDimensions("library-group")
}
-
-
-supportTestApp {
- minSdkVersion = SupportConfig.CURRENT_SDK_VERSION
-}
\ No newline at end of file
diff --git a/heifwriter/build.gradle b/heifwriter/build.gradle
index 810c395..7728023 100644
--- a/heifwriter/build.gradle
+++ b/heifwriter/build.gradle
@@ -6,6 +6,12 @@
id("SupportAndroidLibraryPlugin")
}
+android {
+ defaultConfig {
+ minSdkVersion 28
+ }
+}
+
dependencies {
api(project(":annotation"))
@@ -20,6 +26,5 @@
mavenVersion = LibraryVersions.SUPPORT_LIBRARY
mavenGroup = LibraryGroups.HEIFWRITER
inceptionYear = "2018"
- minSdkVersion = 28
description = "Android Support HeifWriter for writing HEIF still images"
}
diff --git a/leanback-preference/build.gradle b/leanback-preference/build.gradle
index 4f49bef..7dd6e53 100644
--- a/leanback-preference/build.gradle
+++ b/leanback-preference/build.gradle
@@ -15,6 +15,10 @@
}
android {
+ defaultConfig {
+ minSdkVersion 17
+ }
+
sourceSets {
main.java.srcDirs += [
'api21'
@@ -29,6 +33,5 @@
mavenGroup = LibraryGroups.LEANBACK
inceptionYear = "2015"
description = "Android Support Leanback Preference v17"
- minSdkVersion = 17
failOnDeprecationWarnings = false
-}
\ No newline at end of file
+}
diff --git a/leanback/build.gradle b/leanback/build.gradle
index 5cd60f6..1d4b834 100644
--- a/leanback/build.gradle
+++ b/leanback/build.gradle
@@ -21,6 +21,10 @@
}
android {
+ defaultConfig {
+ minSdkVersion 17
+ }
+
sourceSets {
main.java.srcDirs += [
'common',
@@ -37,7 +41,6 @@
mavenGroup = LibraryGroups.LEANBACK
inceptionYear = "2014"
description = "Android Support Leanback v17"
- minSdkVersion = 17
failOnUncheckedWarnings = false
failOnDeprecationWarnings = false
}
diff --git a/media-widget/build.gradle b/media-widget/build.gradle
index d6fb71a..b8e2aa9 100644
--- a/media-widget/build.gradle
+++ b/media-widget/build.gradle
@@ -36,6 +36,12 @@
androidTestImplementation project(':internal-testutils')
}
+android {
+ defaultConfig {
+ minSdkVersion 19
+ }
+}
+
supportLibrary {
name = "Android Support Media Widget"
publish = true
@@ -43,7 +49,6 @@
mavenGroup = LibraryGroups.MEDIA
inceptionYear = "2011"
description = "Android Support Media Widget"
- minSdkVersion = 19
failOnDeprecationWarnings = false
failOnDeprecationWarnings = false
}
diff --git a/recommendation/build.gradle b/recommendation/build.gradle
index 684726e..3b4ea70 100644
--- a/recommendation/build.gradle
+++ b/recommendation/build.gradle
@@ -9,6 +9,12 @@
api(project(":annotation"))
}
+android {
+ defaultConfig {
+ minSdkVersion 21
+ }
+}
+
supportLibrary {
name = "Android Support Recommendation"
publish = true
@@ -16,6 +22,5 @@
mavenGroup = LibraryGroups.RECOMMENDATION
inceptionYear = "2015"
description = "Android Support Recommendation"
- minSdkVersion = 21
failOnDeprecationWarnings = false
}
diff --git a/samples/SupportCarDemos/build.gradle b/samples/SupportCarDemos/build.gradle
index bb553b2..c0817f1 100644
--- a/samples/SupportCarDemos/build.gradle
+++ b/samples/SupportCarDemos/build.gradle
@@ -8,6 +8,8 @@
compileOnly fileTree(dir: '../../car/car-stubs', include: ['android.car.jar'])
}
-supportTestApp {
- minSdkVersion = 24
+android {
+ defaultConfig {
+ minSdkVersion 24
+ }
}
diff --git a/samples/SupportLeanbackDemos/build.gradle b/samples/SupportLeanbackDemos/build.gradle
index 89faeb2..556d511 100644
--- a/samples/SupportLeanbackDemos/build.gradle
+++ b/samples/SupportLeanbackDemos/build.gradle
@@ -8,6 +8,8 @@
implementation 'com.google.code.gson:gson:2.6.2'
}
-supportTestApp {
- minSdkVersion = 17
+android {
+ defaultConfig {
+ minSdkVersion 17
+ }
}
diff --git a/samples/SupportMediaDemos/build.gradle b/samples/SupportMediaDemos/build.gradle
index fecf2a5..4291cf8 100644
--- a/samples/SupportMediaDemos/build.gradle
+++ b/samples/SupportMediaDemos/build.gradle
@@ -25,7 +25,6 @@
android {
defaultConfig {
- minSdkVersion = 19
- targetSdkVersion = 26
+ minSdkVersion 19
}
}
diff --git a/samples/SupportSliceDemos/build.gradle b/samples/SupportSliceDemos/build.gradle
index bcffb46..658080d2 100644
--- a/samples/SupportSliceDemos/build.gradle
+++ b/samples/SupportSliceDemos/build.gradle
@@ -38,11 +38,7 @@
android {
defaultConfig {
- minSdkVersion = 19
+ minSdkVersion 19
applicationId "com.example.androidx.slice.demos"
}
}
-
-supportTestApp {
- minSdkVersion = 19
-}
diff --git a/samples/SupportWearDemos/build.gradle b/samples/SupportWearDemos/build.gradle
index 15cf35c..281fa02 100644
--- a/samples/SupportWearDemos/build.gradle
+++ b/samples/SupportWearDemos/build.gradle
@@ -23,6 +23,8 @@
implementation project(path: ':appcompat')
}
-supportTestApp {
- minSdkVersion = 24
+android {
+ defaultConfig {
+ minSdkVersion 24
+ }
}
diff --git a/slices/builders/build.gradle b/slices/builders/build.gradle
index 139220b5..6cff98a 100644
--- a/slices/builders/build.gradle
+++ b/slices/builders/build.gradle
@@ -35,7 +35,6 @@
mavenGroup = LibraryGroups.SLICE
inceptionYear = "2017"
description = "A set of builders to create templates using SliceProvider APIs"
- minSdkVersion = 14
failOnUncheckedWarnings = false
failOnDeprecationWarnings = false
}
diff --git a/slices/builders/ktx/build.gradle b/slices/builders/ktx/build.gradle
index ec08ded..bd15782 100644
--- a/slices/builders/ktx/build.gradle
+++ b/slices/builders/ktx/build.gradle
@@ -24,6 +24,10 @@
}
android {
+ defaultConfig {
+ minSdkVersion 19
+ }
+
buildTypes {
debug {
testCoverageEnabled = false // Breaks Kotlin compiler.
@@ -49,7 +53,6 @@
mavenGroup = LibraryGroups.SLICE
inceptionYear = "2018"
description = "A set of Kotlin extension methods built on top of slice-builders APIs."
- minSdkVersion = 19
failOnUncheckedWarnings = false
failOnDeprecationWarnings = false
useMetalava = true
diff --git a/slices/core/build.gradle b/slices/core/build.gradle
index 70d2b08..586bda2 100644
--- a/slices/core/build.gradle
+++ b/slices/core/build.gradle
@@ -41,7 +41,6 @@
mavenGroup = LibraryGroups.SLICE
inceptionYear = "2017"
description = "The slices core library provides utilities for the slices view and provider libraries"
- minSdkVersion = 14
failOnUncheckedWarnings = false
failOnDeprecationWarnings = false
}
diff --git a/slices/test/build.gradle b/slices/test/build.gradle
index e4da09f..a0d6494 100644
--- a/slices/test/build.gradle
+++ b/slices/test/build.gradle
@@ -41,7 +41,6 @@
mavenGroup = LibraryGroups.SLICE
inceptionYear = "2017"
description = "A library that holds common code for testing slices"
- minSdkVersion = 14
failOnUncheckedWarnings = false
failOnDeprecationWarnings = false
}
diff --git a/slices/view/build.gradle b/slices/view/build.gradle
index 69648f4..dfdc8d4 100644
--- a/slices/view/build.gradle
+++ b/slices/view/build.gradle
@@ -43,7 +43,6 @@
mavenGroup = LibraryGroups.SLICE
inceptionYear = "2017"
description = "A library that handles rendering of slice content into supported templates"
- minSdkVersion = 14
failOnUncheckedWarnings = false
failOnDeprecationWarnings = false
}
diff --git a/textclassifier/build.gradle b/textclassifier/build.gradle
index ac86cc1..6c50702 100644
--- a/textclassifier/build.gradle
+++ b/textclassifier/build.gradle
@@ -18,6 +18,12 @@
androidTestImplementation(DEXMAKER_MOCKITO, libs.exclude_bytebuddy)
}
+android {
+ defaultConfig {
+ minSdkVersion 19
+ }
+}
+
supportLibrary {
name = "Android TextClassifier Support Library"
publish = false
@@ -25,6 +31,5 @@
mavenGroup = LibraryGroups.TEXTCLASSIFIER
inceptionYear = "2018"
description = "The TextClassifier Support Library can be added to an Android application in order to use the TextClassifier API introduced in Android O on all devices with API level 14 or later."
- minSdkVersion = 19
failOnUncheckedWarnings = false
}
diff --git a/tv-provider/build.gradle b/tv-provider/build.gradle
index 1df3a5b..7bb5478 100644
--- a/tv-provider/build.gradle
+++ b/tv-provider/build.gradle
@@ -15,6 +15,12 @@
androidTestImplementation(MOCKITO_CORE)
}
+android {
+ defaultConfig {
+ minSdkVersion 21
+ }
+}
+
supportLibrary {
name = "Android Support TV Provider"
publish = true
@@ -22,7 +28,6 @@
mavenGroup = LibraryGroups.TVPROVIDER
inceptionYear = "2017"
description = "Android Support Library for TV Provider"
- minSdkVersion = 21
failOnUncheckedWarnings = false
failOnDeprecationWarnings = false
-}
\ No newline at end of file
+}
diff --git a/versionedparcelable/build.gradle b/versionedparcelable/build.gradle
index ab40747..5ea3116 100644
--- a/versionedparcelable/build.gradle
+++ b/versionedparcelable/build.gradle
@@ -45,7 +45,6 @@
mavenGroup = LibraryGroups.VERSIONEDPARCELABLE
inceptionYear = "2018"
description = "Provides a stable but relatively compact binary serialization format that can be passed across processes or persisted safely."
- minSdkVersion = 14
failOnUncheckedWarnings = false
failOnDeprecationWarnings = false
}
diff --git a/wear/build.gradle b/wear/build.gradle
index 4dfb67d..278ce0c 100644
--- a/wear/build.gradle
+++ b/wear/build.gradle
@@ -23,6 +23,10 @@
}
android {
+ defaultConfig {
+ minSdkVersion 23
+ }
+
sourceSets {
main.res.srcDirs 'res', 'res-public'
main.resources {
@@ -38,6 +42,5 @@
mavenGroup = LibraryGroups.WEAR
inceptionYear = "2016"
description = "Android Wear Support UI"
- minSdkVersion = 23
failOnDeprecationWarnings = false
}