Skip to content

Commit 81c06b9

Browse files
authored
Merge pull request #35 from gradle/lptr/support-android-3.1.0-beta1
Support Android 3.1.0-beta1 and Gradle 4.5
2 parents 78856ab + f1d3ffa commit 81c06b9

File tree

9 files changed

+62
-19
lines changed

9 files changed

+62
-19
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ cache:
1515
android:
1616
components:
1717
- build-tools-26.0.2
18-
- build-tools-27.0.1
18+
- build-tools-27.0.3
1919
- android-26
2020

2121
notifications:

README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44

55
Some Android plugin versions have issues with Gradle's build cache feature. When applied to an Android project this plugin applies workarounds for these issues based on the Android plugin and Gradle versions.
66

7-
* Supported Gradle versions: 4.1 to 4.4.1, 4.5-rc-2
8-
* Supported Android versions: 3.0.0, 3.0.1, 3.1.0-alpha09
7+
* Supported Gradle versions: 4.1 to 4.4.1, 4.5
8+
* Supported Android versions: 3.0.0, 3.0.1, 3.1.0-beta1
9+
10+
**Note:** With Android 3.1.x the cache-fix plugin is only required if you are using Android's data binding feature.
911

1012
## List of issues
1113

build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ version = ["git", "describe", "--match", "[0-9]*", "--dirty"].execute().text.tri
2222

2323
// Maps supported Android plugin versions to the versions of Gradle that support it
2424
def supportedVersions = [
25-
"3.1.0-alpha09": ["4.4", "4.4.1", "4.5-rc-2"],
26-
"3.0.0": ["4.1", "4.2", "4.2.1", "4.3", "4.3.1", "4.4", "4.4.1", "4.5-rc-2"],
27-
"3.0.1": ["4.1", "4.2", "4.2.1", "4.3", "4.3.1", "4.4", "4.4.1", "4.5-rc-2"],
25+
"3.1.0-beta1": ["4.4", "4.4.1", "4.5"],
26+
"3.0.0": ["4.1", "4.2", "4.2.1", "4.3", "4.3.1", "4.4", "4.4.1", "4.5"],
27+
"3.0.1": ["4.1", "4.2", "4.2.1", "4.3", "4.3.1", "4.4", "4.4.1", "4.5"],
2828
]
2929

3030
repositories {

src/main/groovy/org/gradle/android/AndroidCacheFixPlugin.groovy

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.gradle.android
22

3+
import com.android.build.gradle.AndroidConfig
34
import com.android.build.gradle.internal.pipeline.StreamBasedTask
45
import com.android.build.gradle.internal.tasks.CheckManifest
56
import com.android.build.gradle.internal.tasks.IncrementalTask
@@ -64,6 +65,14 @@ class AndroidCacheFixPlugin implements Plugin<Project> {
6465
LOGGER.debug("Applying Android workaround {} to {}", workaround.getClass().simpleName, project)
6566
workaround.apply(context)
6667
}
68+
69+
if (currentAndroidVersion.baseVersion >= android("3.1.0-alpha06")) {
70+
project.afterEvaluate {
71+
if (!project.getExtensions().getByType(AndroidConfig).dataBinding.enabled) {
72+
LOGGER.warn("WARNING: Android cache-fix plugin is not required when using Android plugin {} or later, unless Android data binding is used.", currentAndroidVersion)
73+
}
74+
}
75+
}
6776
}
6877

6978
static List<Workaround> getWorkaroundsToApply(VersionNumber androidVersion) {

src/main/groovy/org/gradle/android/Versions.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class Versions {
1717

1818
static {
1919
def versions = new JsonSlurper().parse(AndroidCacheFixPlugin.classLoader.getResource("versions.json"))
20-
PLUGIN_VERSION = android(versions.version)
20+
PLUGIN_VERSION = VersionNumber.parse(versions.version)
2121

2222
def builder = ImmutableMultimap.<VersionNumber, GradleVersion>builder()
2323
versions.supportedVersions.each { androidVersion, gradleVersions ->

src/test/groovy/org/gradle/android/PluginApplicationTest.groovy

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class PluginApplicationTest extends AbstractTest {
99
@Unroll
1010
def "does not apply workarounds with Gradle #gradleVersion"() {
1111
def projectDir = temporaryFolder.newFolder()
12-
new SimpleAndroidApp(projectDir, cacheDir, "3.0.0").writeProject()
12+
new SimpleAndroidApp(projectDir, cacheDir, "3.0.0", true).writeProject()
1313
expect:
1414
def result = withGradleVersion(gradleVersion)
1515
.withProjectDir(projectDir)
@@ -24,7 +24,7 @@ class PluginApplicationTest extends AbstractTest {
2424
@Unroll
2525
def "does not apply workarounds with Android #androidVersion"() {
2626
def projectDir = temporaryFolder.newFolder()
27-
new SimpleAndroidApp(projectDir, cacheDir, androidVersion).writeProject()
27+
new SimpleAndroidApp(projectDir, cacheDir, androidVersion, true).writeProject()
2828
expect:
2929
def result = withGradleVersion("4.1")
3030
.withProjectDir(projectDir)
@@ -35,4 +35,33 @@ class PluginApplicationTest extends AbstractTest {
3535
where:
3636
androidVersion << ["2.3.0", "3.1.0-alpha01"]
3737
}
38+
39+
@Unroll
40+
def "does #description about being useless for Android version #androidVersion (data binding: #dataBinding)"() {
41+
def projectDir = temporaryFolder.newFolder()
42+
new SimpleAndroidApp(projectDir, cacheDir, androidVersion, dataBinding).writeProject()
43+
def message = "WARNING: Android cache-fix plugin is not required when using Android plugin $androidVersion or later, unless Android data binding is used."
44+
45+
expect:
46+
def result = withGradleVersion("4.5")
47+
.withProjectDir(projectDir)
48+
.withArguments("tasks")
49+
.withDebug(true)
50+
.build()
51+
if (warns) {
52+
assert result.output.contains(message)
53+
} else {
54+
assert !(result.output.contains(message))
55+
}
56+
57+
where:
58+
warns | dataBinding | androidVersion
59+
false | true | "3.0.0"
60+
false | false | "3.0.0"
61+
false | true | "3.0.1"
62+
false | false | "3.0.1"
63+
false | true | "3.1.0-beta1"
64+
true | false | "3.1.0-beta1"
65+
description = warns ? "warn" : "not warn"
66+
}
3867
}

src/test/groovy/org/gradle/android/RelocationTest.groovy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ class RelocationTest extends AbstractTest {
2525
println "> Running with $gradleVersion"
2626

2727
def originalDir = temporaryFolder.newFolder()
28-
new SimpleAndroidApp(originalDir, cacheDir, androidVersion).writeProject()
28+
new SimpleAndroidApp(originalDir, cacheDir, androidVersion, true).writeProject()
2929

3030
def relocatedDir = temporaryFolder.newFolder()
31-
new SimpleAndroidApp(relocatedDir, cacheDir, androidVersion).writeProject()
31+
new SimpleAndroidApp(relocatedDir, cacheDir, androidVersion, true).writeProject()
3232

3333
def expectedResults = expectedResults(androidVersion, gradleVersion)
3434

src/test/groovy/org/gradle/android/SimpleAndroidApp.groovy

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@ class SimpleAndroidApp {
88
final File projectDir
99
private final File cacheDir
1010
final VersionNumber androidVersion
11+
private final boolean dataBindingEnabled
1112

12-
SimpleAndroidApp(File projectDir, File cacheDir, String androidVersion) {
13-
this(projectDir, cacheDir, android(androidVersion))
13+
SimpleAndroidApp(File projectDir, File cacheDir, String androidVersion, boolean dataBindingEnabled) {
14+
this(projectDir, cacheDir, android(androidVersion), dataBindingEnabled)
1415
}
1516

16-
SimpleAndroidApp(File projectDir, File cacheDir, VersionNumber androidVersion) {
17+
SimpleAndroidApp(File projectDir, File cacheDir, VersionNumber androidVersion, boolean dataBindingEnabled) {
18+
this.dataBindingEnabled = dataBindingEnabled
1719
this.projectDir = projectDir
1820
this.cacheDir = cacheDir
1921
this.androidVersion = androidVersion
@@ -34,7 +36,7 @@ class SimpleAndroidApp {
3436
directory = "${cacheDir.absolutePath.replace(File.separatorChar, '/' as char)}"
3537
}
3638
}
37-
"""
39+
""".stripIndent()
3840

3941
file("build.gradle") << """
4042
buildscript {
@@ -50,7 +52,7 @@ class SimpleAndroidApp {
5052
classpath "org.gradle.android:android-cache-fix-gradle-plugin:${Versions.PLUGIN_VERSION}"
5153
}
5254
}
53-
"""
55+
""".stripIndent()
5456

5557
writeActivity(library, libPackage, libraryActivity)
5658
file("${library}/src/main/AndroidManifest.xml") << """<?xml version="1.0" encoding="utf-8"?>
@@ -88,7 +90,7 @@ class SimpleAndroidApp {
8890
file('settings.gradle') << """
8991
include ':${app}'
9092
include ':${library}'
91-
"""
93+
""".stripIndent()
9294

9395
file("${app}/build.gradle") << subprojectConfiguration("com.android.application") << """
9496
android.defaultConfig.applicationId "org.gradle.android.test.app"
@@ -104,7 +106,7 @@ class SimpleAndroidApp {
104106
configureAndroidSdkHome()
105107
}
106108

107-
private static subprojectConfiguration(String androidPlugin) {
109+
private subprojectConfiguration(String androidPlugin) {
108110
"""
109111
apply plugin: "$androidPlugin"
110112
apply plugin: "org.gradle.android.cache-fix"
@@ -117,7 +119,7 @@ class SimpleAndroidApp {
117119
android {
118120
compileSdkVersion 26
119121
buildToolsVersion "26.0.2"
120-
dataBinding.enabled = true
122+
dataBinding.enabled = $dataBindingEnabled
121123
defaultConfig {
122124
minSdkVersion 26
123125
targetSdkVersion 26

src/test/groovy/org/gradle/android/WorkaroundTest.groovy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,6 @@ class WorkaroundTest extends Specification {
2323
"3.1.0-alpha07" | ["DataBindingDependencyArtifacts"]
2424
"3.1.0-alpha08" | ["DataBindingDependencyArtifacts"]
2525
"3.1.0-alpha09" | ["DataBindingDependencyArtifacts"]
26+
"3.1.0-beta1" | ["DataBindingDependencyArtifacts"]
2627
}
2728
}

0 commit comments

Comments
 (0)