Bump minimal supported AGP to 4.1.3

^KT-53013 In Progress
This commit is contained in:
Yahor Berdnikau
2022-09-27 17:41:22 +02:00
committed by Space Team
parent b01411544a
commit faf3638c58
21 changed files with 59 additions and 88 deletions
@@ -23,9 +23,9 @@ import kotlin.test.assertNotNull
import kotlin.test.assertNull
import kotlin.test.assertTrue
open class KotlinAndroid36GradleIT : KotlinAndroid3GradleIT() {
open class KotlinAndroid41GradleIT : KotlinAndroid4GradleIT() {
override val androidGradlePluginVersion: AGPVersion
get() = AGPVersion.v3_6_0
get() = AGPVersion.v4_1_0
// AGP 3.+ is not working well with Gradle 7+
override val defaultGradleVersion: GradleVersionRequired
@@ -603,7 +603,7 @@ open class KotlinAndroid36GradleIT : KotlinAndroid3GradleIT() {
}
}
open class KotlinAndroid70GradleIT : KotlinAndroid36GradleIT() {
open class KotlinAndroid70GradleIT : KotlinAndroid41GradleIT() {
override val androidGradlePluginVersion: AGPVersion
get() = AGPVersion.v7_0_0
@@ -787,7 +787,7 @@ open class KotlinAndroid71GradleIT : KotlinAndroid70GradleIT() {
}
}
abstract class KotlinAndroid3GradleIT : AbstractKotlinAndroidGradleTests() {
abstract class KotlinAndroid4GradleIT : AbstractKotlinAndroidGradleTests() {
@Test
fun testAfterEvaluateOrdering() = with(Project("AndroidProject")) {
setupWorkingDir()
@@ -953,11 +953,7 @@ Finished executing task ':$taskName'|
//The feature of failing the build on deprecation warnings is introduced in gradle 5.6
val supportFailingBuildOnWarning =
GradleVersion.version(chooseWrapperVersionOrFinishTest()) >= GradleVersion.version("5.6")
// Agp uses Gradle internal API constructor DefaultDomainObjectSet(Class<T>) until Agp 3.6.0 which is deprecated by Gradle,
// so we don't run with --warning-mode=fail when Agp 3.6 or less is used.
val notUsingAgpWithWarnings =
options.androidGradlePluginVersion == null || options.androidGradlePluginVersion > AGPVersion.v3_6_0
if (supportFailingBuildOnWarning && notUsingAgpWithWarnings && options.warningMode == WarningMode.Fail) {
if (supportFailingBuildOnWarning && options.warningMode == WarningMode.Fail) {
add("--warning-mode=${WarningMode.Fail.name.lowercase(Locale.getDefault())}")
}
addAll(options.freeCommandLineArgs)
@@ -11,9 +11,9 @@ import org.junit.Ignore
import org.junit.Test
import java.io.File
open class Kapt3Android36IT : Kapt3AndroidIT() {
open class Kapt3Android41IT : Kapt3AndroidIT() {
override val androidGradlePluginVersion: AGPVersion
get() = AGPVersion.v3_6_0
get() = AGPVersion.v4_1_0
// AGP 3.+ is not working with Gradle 7+
override val defaultGradleVersion: GradleVersionRequired
@@ -318,10 +318,16 @@ abstract class Kapt3AndroidIT : BaseGradleIT() {
@Test
open fun testDatabinding() {
val javaHome = File(System.getProperty("jdk11Home")!!)
Assume.assumeTrue("JDK 11 should be available", javaHome.isDirectory)
val project = Project("android-databinding", directoryPrefix = "kapt2")
setupDataBinding(project)
project.build("assembleDebug", "assembleAndroidTest") {
project.build(
"assembleDebug", "assembleAndroidTest",
options = defaultBuildOptions().copy(javaHome = javaHome)
) {
assertSuccessful()
assertKaptSuccessful()
assertFileExists("app/build/generated/source/kapt/debug/com/example/databinding/BR.java")
@@ -110,7 +110,6 @@ class KotlinSpecificDependenciesIT : KGPBaseTest() {
gradleVersion,
buildOptions = defaultBuildOptions.copy(
androidVersion = agpVersion,
warningMode = if (agpVersion == TestVersions.AGP.AGP_36) WarningMode.Summary else defaultBuildOptions.warningMode
),
buildJdk = jdkVersion.location
) {
@@ -132,7 +131,6 @@ class KotlinSpecificDependenciesIT : KGPBaseTest() {
gradleVersion,
buildOptions = defaultBuildOptions.copy(
androidVersion = agpVersion,
warningMode = if (agpVersion == TestVersions.AGP.AGP_36) WarningMode.Summary else defaultBuildOptions.warningMode
),
buildJdk = jdkVersion.location
) {
@@ -299,7 +297,6 @@ class KotlinSpecificDependenciesIT : KGPBaseTest() {
gradleVersion,
buildOptions = defaultBuildOptions.copy(
androidVersion = agpVersion,
warningMode = if (agpVersion == TestVersions.AGP.AGP_36) WarningMode.Summary else defaultBuildOptions.warningMode
),
buildJdk = jdkVersion.location
) {
@@ -326,7 +323,6 @@ class KotlinSpecificDependenciesIT : KGPBaseTest() {
gradleVersion,
buildOptions = defaultBuildOptions.copy(
androidVersion = agpVersion,
warningMode = if (agpVersion == TestVersions.AGP.AGP_36) WarningMode.Summary else defaultBuildOptions.warningMode
),
buildJdk = jdkVersion.location
) {
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.gradle.model
import org.gradle.api.logging.configuration.WarningMode
import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.gradle.testbase.*
import org.junit.jupiter.api.DisplayName
@@ -17,9 +16,6 @@ import kotlin.test.assertTrue
@DisplayName("Kotlin plugin model")
@OtherGradlePluginTests
class KotlinProjectIT : KGPBaseTest() {
override val defaultBuildOptions = super.defaultBuildOptions.copy(
androidVersion = TestVersions.AGP.AGP_36,
)
@DisplayName("Valid model is available in Kotlin only project")
@GradleTest
@@ -27,7 +27,7 @@ class AppleFrameworkIT : BaseGradleIT() {
override val defaultGradleVersion = GradleVersionRequired.FOR_MPP_SUPPORT
override fun defaultBuildOptions() = super.defaultBuildOptions().copy(
androidHome = KtTestUtil.findAndroidSdk(),
androidGradlePluginVersion = AGPVersion.v3_6_0
androidGradlePluginVersion = AGPVersion.v4_1_0
)
@Test
@@ -27,7 +27,7 @@ class XCFrameworkIT : BaseGradleIT() {
override val defaultGradleVersion = GradleVersionRequired.FOR_MPP_SUPPORT
override fun defaultBuildOptions() = super.defaultBuildOptions().copy(
androidHome = KtTestUtil.findAndroidSdk(),
androidGradlePluginVersion = AGPVersion.v3_6_0
androidGradlePluginVersion = AGPVersion.v4_1_0
)
@Test
@@ -33,8 +33,6 @@ interface TestVersions {
}
object AGP {
const val AGP_36 = "3.6.4"
const val AGP_40 = "4.0.2"
const val AGP_41 = "4.1.3"
const val AGP_42 = "4.2.2"
const val AGP_70 = "7.0.4"
@@ -42,7 +40,7 @@ interface TestVersions {
const val AGP_72 = "7.2.1"
const val AGP_73 = "7.3.0"
const val MIN_SUPPORTED = AGP_36 // KotlinAndroidPlugin.MINIMAL_SUPPORTED_AGP_VERSION
const val MIN_SUPPORTED = AGP_41 // KotlinAndroidPlugin.MINIMAL_SUPPORTED_AGP_VERSION
const val MAX_SUPPORTED = AGP_70 // Update once Gradle MAX_SUPPORTED version will be bumped to 7.2+
}
@@ -52,8 +50,6 @@ interface TestVersions {
val maxSupportedGradleVersion: GradleVersion,
val requiredJdkVersion: JavaVersion
) {
AGP_36(AGP.AGP_36, GradleVersion.version(Gradle.MIN_SUPPORTED), GradleVersion.version(Gradle.G_6_9), JavaVersion.VERSION_1_8),
AGP_40(AGP.AGP_40, GradleVersion.version(Gradle.MIN_SUPPORTED), GradleVersion.version(Gradle.G_6_9), JavaVersion.VERSION_1_8),
AGP_41(AGP.AGP_41, GradleVersion.version(Gradle.MIN_SUPPORTED), GradleVersion.version(Gradle.G_6_9), JavaVersion.VERSION_1_8),
AGP_42(AGP.AGP_42, GradleVersion.version(Gradle.MIN_SUPPORTED), GradleVersion.version(Gradle.G_6_9), JavaVersion.VERSION_1_8),
AGP_70(AGP.AGP_70, GradleVersion.version(Gradle.G_7_0), GradleVersion.version(Gradle.G_7_4), JavaVersion.VERSION_11),
@@ -18,7 +18,6 @@ class AGPVersion private constructor(private val versionNumber: VersionNumber) {
fun fromString(versionString: String): AGPVersion =
AGPVersion(VersionNumber.parse(versionString))
val v3_6_0 = fromString("3.6.4")
val v4_1_0 = fromString("4.1.3")
val v4_2_0 = fromString("4.2.2")
val v7_0_0 = fromString("7.0.4")
@@ -26,6 +25,6 @@ class AGPVersion private constructor(private val versionNumber: VersionNumber) {
val v7_2_2 = fromString("7.2.2")
val v7_3_0 = fromString("7.3.0")
val testedVersions = listOf(v3_6_0, v4_1_0, v4_2_0, v7_0_0, v7_1_0, v7_2_2, v7_3_0)
val testedVersions = listOf(v4_1_0, v4_2_0, v7_0_0, v7_1_0, v7_2_2, v7_3_0)
}
}
@@ -3,16 +3,21 @@ apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
android {
compileSdkVersion 24
buildToolsVersion "25.0.2"
compileSdkVersion 32
defaultConfig {
applicationId "com.example.databinding"
minSdkVersion 21
targetSdkVersion 24
targetSdkVersion 32
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildFeatures {
dataBinding true
}
buildTypes {
release {
minifyEnabled false
@@ -24,17 +29,10 @@ android {
sourceCompatibility 1.8
targetCompatibility 1.8
}
dataBinding {
enabled = true
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
kapt "com.android.databinding:compiler:$android_tools_version"
kaptAndroidTest "junit:junit:4.13.2"
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
testImplementation'junit:junit:4.13.2'
}
@@ -2,9 +2,9 @@ package com.example.databinding
import android.content.Context
import android.content.res.Resources
import android.databinding.*
import android.databinding.adapters.AdapterViewBindingAdapter
import android.support.annotation.IntegerRes
import androidx.databinding.*
import androidx.databinding.adapters.AdapterViewBindingAdapter
import androidx.annotation.IntegerRes
import android.util.Log
import android.view.*
import android.widget.*
@@ -1,7 +1,7 @@
package com.example.databinding
import android.app.Activity
import android.databinding.DataBindingUtil
import androidx.databinding.DataBindingUtil
import android.os.Bundle
import android.view.MotionEvent
import android.widget.Toast
@@ -1,7 +1,7 @@
package com.example.databinding
import android.content.res.Resources
import android.databinding.BaseObservable
import androidx.databinding.BaseObservable
class UserProfile : BaseObservable() {
open var gender: Gender = Gender.Female
@@ -1,13 +1,10 @@
import org.gradle.util.VersionNumber
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
mavenLocal()
maven { url 'https://maven.google.com' }
google()
mavenCentral()
maven { url = uri("https://jcenter.bintray.com/") }
}
dependencies {
classpath "com.android.tools.build:gradle:$android_tools_version"
@@ -21,22 +18,7 @@ buildscript {
allprojects {
repositories {
mavenLocal()
maven { url 'https://maven.google.com' }
google()
mavenCentral()
maven { url = uri("https://jcenter.bintray.com/") }
}
if (VersionNumber.parse(android_tools_version) >= VersionNumber.parse("3.3.0")) {
// Workaround: the AGP 3.3.2 databinding library depends on these exact versions, and the espresso test library
// transitively brings newer incompatible ones. Force these versions:
configurations.all {
resolutionStrategy {
force 'com.android.support:support-annotations:26.1.0'
force 'com.android.support:support-core-utils:26.1.0'
force 'com.android.support:support-compat:26.1.0'
force 'android.arch.lifecycle:common:1.0.3'
force 'android.arch.core:common:1.0.0'
}
}
}
}
}
@@ -3,15 +3,18 @@ apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
android {
compileSdkVersion 27
buildToolsVersion "27.0.3"
compileSdkVersion 32
defaultConfig {
minSdkVersion 21
targetSdkVersion 27
targetSdkVersion 32
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildFeatures {
dataBinding true
}
buildTypes {
@@ -25,17 +28,15 @@ android {
targetCompatibility 1.8
}
dataBinding { enabled = true }
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
api "androidx.annotation:annotation:1.5.0"
testImplementation 'junit:junit:4.13.2'
kapt "com.android.databinding:compiler:$android_tools_version"
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation "com.android.support.test:rules:1.0.2"
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.2'
androidTestImplementation 'androidx.appcompat:appcompat:1.5.1'
androidTestImplementation 'androidx.test:runner:1.4.0'
androidTestImplementation 'androidx.test:rules:1.4.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
@@ -1,6 +1,6 @@
package org.maw.library
import android.support.v7.app.AppCompatActivity
import androidx.appcompat.app.AppCompatActivity
class BlankActivity : AppCompatActivity() {
}
@@ -1,8 +1,8 @@
package org.maw.library
import android.support.test.annotation.UiThreadTest
import android.support.test.rule.ActivityTestRule
import android.support.test.runner.AndroidJUnit4
import androidx.test.annotation.UiThreadTest
import androidx.test.rule.ActivityTestRule
import androidx.test.runner.AndroidJUnit4
import android.view.ViewGroup
import org.junit.Rule
import org.junit.Test
@@ -1,9 +1,9 @@
package org.maw.library
import android.content.Context
import android.databinding.BindingAdapter
import android.databinding.DataBindingComponent
import android.databinding.DataBindingUtil
import androidx.databinding.BindingAdapter
import androidx.databinding.DataBindingComponent
import androidx.databinding.DataBindingUtil
import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.FrameLayout
@@ -17,7 +17,7 @@ import java.util.concurrent.atomic.AtomicBoolean
internal object KotlinMultiplatformAndroidGradlePluginCompatibilityHealthCheck {
val compatibleAndroidGradlePluginVersionRange = AndroidGradlePluginVersionRange(
minSupportedVersion = AndroidGradlePluginVersionRange.Version(4, 0),
minSupportedVersion = AndroidGradlePluginVersionRange.Version(4, 1),
maxSupportedVersion = AndroidGradlePluginVersionRange.Version(7, 3)
)
@@ -734,7 +734,7 @@ internal open class KotlinAndroidPlugin(
}
companion object {
private val minimalSupportedAgpVersion = AndroidGradlePluginVersion(3, 6, 4)
private val minimalSupportedAgpVersion = AndroidGradlePluginVersion(4, 1, 3)
fun androidTargetHandler(): AndroidProjectHandler {
val tasksProvider = KotlinTasksProvider()
val androidGradlePluginVersion = AndroidGradlePluginVersion.currentOrNull