Skip to content

Commit e6226b7

Browse files
authored
Upgrade AGP to 7.2.2 (#3974)
* Upgrade AGP to 7.2.2 There is one adoption blocker for now, so this change will be on a branch until it's addressed. Namely, we have to migrate to the new version of Dokka as our old version is not compatible with Gradle 7+. * fix buildSrc presubmit * add build.gradle.kts * Remove obsolete build cache * fix * Fix fiam failures * fix buildSrc tests * Fix metalava tasks. * remove old metalava tasks * Fix buildSrc tests. * upgrade smoke tests agp * Fix smoke tests compileSdk to make androidx.browser work. * Remove redundant kotlin stdlib import, update api.txt files. * fix dev-app * Fix fiam vendoring issue. It looks like AGP has stopped "transforming" test classes, so switching to Provider instead of `dagger.Lazy` to avoid the problem. It's not an issue since the injected class is has FirebaseAppScope(which is singleton-like). * fix kotlin dep * fix tools:lint * fix kotlin stdlib dep * Metalava: allow HiddenAbstractMethod * fix api_info * fix * fix api info for java libs * properly depend on httpclient * Revert "properly depend on httpclient" This reverts commit 10fdc90. * Allow httpclient and commons * Replace Lazy with Provider to avoid vendoring issues. * Fix version handling and fix appcheck-ktx tests. * fix * Replace version name if releaseWith is used. * fix perf apps unit tests * fix * format appcheck ktx * Update dev-app deps to avoid lint error * Fix fiam tests, fiamd is still failing with missing resources. * fix vendor plugin * undo unnecessary changes * Try smoke tests without gradle metadata. * Address review comments.
1 parent 5892717 commit e6226b7

22 files changed

+172
-89
lines changed

build.gradle

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import com.google.firebase.gradle.plugins.license.LicenseResolverPlugin
1616
import com.google.firebase.gradle.MultiProjectReleasePlugin
1717

1818
buildscript {
19-
ext.kotlinVersion = '1.4.32'
19+
ext.kotlinVersion = '1.7.10'
2020
repositories {
2121
google()
2222
mavenCentral()
@@ -37,8 +37,6 @@ buildscript {
3737
classpath 'net.ltgt.gradle:gradle-errorprone-plugin:1.3.0'
3838
classpath 'gradle.plugin.com.github.sherter.google-java-format:google-java-format-gradle-plugin:0.9'
3939
classpath 'com.google.gms:google-services:4.3.3'
40-
classpath 'digital.wup:android-maven-publish:3.6.3'
41-
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
4240
classpath 'org.jlleitschuh.gradle:ktlint-gradle:9.2.1'
4341
}
4442
}

buildSrc/build.gradle.kts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,7 @@ dependencies {
4343

4444
implementation("com.google.auto.value:auto-value-annotations:1.8.1")
4545
annotationProcessor("com.google.auto.value:auto-value:1.6.5")
46-
implementation("digital.wup:android-maven-publish:3.6.3")
47-
implementation(kotlin("gradle-plugin", "1.4.32"))
46+
implementation(kotlin("gradle-plugin", "1.7.10"))
4847
implementation("org.json:json:20210307")
4948

5049
implementation("org.eclipse.aether:aether-api:1.0.0.v20140518")
@@ -57,7 +56,8 @@ dependencies {
5756
implementation("org.apache.maven:maven-aether-provider:3.1.0")
5857

5958
implementation("com.google.code.gson:gson:2.8.9")
60-
implementation("com.android.tools.build:gradle:3.4.3")
59+
implementation("com.android.tools.build:gradle:7.2.2")
60+
implementation("com.android.tools.build:builder-test-api:7.2.2")
6161
implementation("gradle.plugin.com.github.sherter.google-java-format:google-java-format-gradle-plugin:0.9")
6262

6363
testImplementation("junit:junit:4.13.2")

buildSrc/settings.gradle.kts

Lines changed: 0 additions & 13 deletions
This file was deleted.

buildSrc/src/main/java/com/google/firebase/gradle/plugins/FirebaseJavaLibraryPlugin.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import org.gradle.api.attributes.Attribute;
2626
import org.gradle.api.file.FileCollection;
2727
import org.gradle.api.plugins.JavaPluginConvention;
28+
import org.gradle.api.publish.PublishingExtension;
29+
import org.gradle.api.publish.maven.MavenPublication;
2830
import org.gradle.api.tasks.SourceSet;
2931
import org.gradle.api.tasks.TaskProvider;
3032
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile;
@@ -55,6 +57,7 @@ public void apply(Project project) {
5557
ImmutableList.of("-module-name", kotlinModuleName(project))));
5658

5759
setupStaticAnalysis(project, firebaseLibrary);
60+
configurePublishing(project, firebaseLibrary);
5861
project.getTasks().register("kotlindoc");
5962
}
6063

@@ -178,4 +181,34 @@ private static String kotlinModuleName(Project project) {
178181

179182
return project.getRootProject().getName() + fullyQualifiedProjectPath;
180183
}
184+
185+
private static void configurePublishing(
186+
Project project, FirebaseLibraryExtension firebaseLibrary) {
187+
project.apply(ImmutableMap.of("plugin", "maven-publish"));
188+
PublishingExtension publishing = project.getExtensions().getByType(PublishingExtension.class);
189+
publishing.repositories(
190+
repos ->
191+
repos.maven(
192+
repo -> {
193+
String s = project.getRootProject().getBuildDir() + "/m2repository";
194+
File file = new File(s);
195+
repo.setUrl(file.toURI());
196+
repo.setName("BuildDir");
197+
}));
198+
publishing.publications(
199+
publications ->
200+
publications.create(
201+
"mavenAar",
202+
MavenPublication.class,
203+
publication -> {
204+
publication.from(
205+
project.getComponents().findByName(firebaseLibrary.type.getComponentName()));
206+
project.afterEvaluate(
207+
p -> {
208+
publication.setArtifactId(firebaseLibrary.artifactId.get());
209+
publication.setGroupId(firebaseLibrary.groupId.get());
210+
firebaseLibrary.applyPomCustomization(publication.getPom());
211+
});
212+
}));
213+
}
181214
}

buildSrc/src/main/java/com/google/firebase/gradle/plugins/FirebaseLibraryExtension.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,14 @@ public void releaseWith(Project releaseWithProject) {
120120
releaseWithLibrary.librariesToCoRelease.add(this);
121121
this.project.setVersion(releaseWithProject.getVersion());
122122

123+
LibraryExtension android = project.getExtensions().findByType(LibraryExtension.class);
124+
if (android != null) {
125+
android.defaultConfig(
126+
cfg -> {
127+
cfg.buildConfigField("String", "VERSION_NAME", "\"" + project.getVersion() + "\"");
128+
});
129+
}
130+
123131
String latestRelease = "latestReleasedVersion";
124132
if (releaseWithProject.hasProperty(latestRelease)) {
125133
this.project

buildSrc/src/main/java/com/google/firebase/gradle/plugins/FirebaseLibraryPlugin.java

Lines changed: 66 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
import com.android.build.gradle.LibraryExtension;
2020
import com.android.build.gradle.api.AndroidSourceSet;
21+
import com.android.build.gradle.internal.dsl.BuildType;
22+
import com.android.build.gradle.internal.dsl.TestOptions;
2123
import com.github.sherter.googlejavaformatgradleplugin.GoogleJavaFormatExtension;
2224
import com.google.common.collect.ImmutableList;
2325
import com.google.common.collect.ImmutableMap;
@@ -26,11 +28,16 @@
2628
import com.google.firebase.gradle.plugins.license.LicenseResolverPlugin;
2729
import java.io.File;
2830
import java.nio.file.Paths;
31+
import kotlin.Unit;
2932
import org.gradle.api.JavaVersion;
33+
import org.gradle.api.NamedDomainObjectContainer;
3034
import org.gradle.api.Plugin;
3135
import org.gradle.api.Project;
3236
import org.gradle.api.attributes.Attribute;
3337
import org.gradle.api.file.FileCollection;
38+
import org.gradle.api.publish.PublishingExtension;
39+
import org.gradle.api.publish.maven.MavenPublication;
40+
import org.gradle.api.publish.tasks.GenerateModuleMetadata;
3441
import org.gradle.api.tasks.TaskProvider;
3542
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile;
3643

@@ -60,14 +67,18 @@ public void apply(Project project) {
6067
// In the case of and android library signing config only affects instrumentation test APK.
6168
// We need it signed with default debug credentials in order for FTL to accept the APK.
6269
android.buildTypes(
63-
types ->
70+
(NamedDomainObjectContainer<BuildType> types) ->
6471
types
6572
.getByName("release")
6673
.setSigningConfig(types.getByName("debug").getSigningConfig()));
74+
android.defaultConfig(
75+
cfg -> {
76+
cfg.buildConfigField("String", "VERSION_NAME", "\"" + project.getVersion() + "\"");
77+
});
6778

6879
// see https://github.com/robolectric/robolectric/issues/5456
6980
android.testOptions(
70-
options ->
81+
(TestOptions options) ->
7182
options
7283
.getUnitTests()
7384
.all(
@@ -98,6 +109,8 @@ public void apply(Project project) {
98109

99110
setupStaticAnalysis(project, firebaseLibrary);
100111

112+
configurePublishing(project, firebaseLibrary, android);
113+
101114
// reduce the likelihood of kotlin module files colliding.
102115
project
103116
.getTasks()
@@ -182,7 +195,8 @@ private static void setupApiInformationAnalysis(Project project, LibraryExtensio
182195
config.attributes(
183196
container ->
184197
container.attribute(
185-
Attribute.of("artifactType", String.class), "jar")))
198+
Attribute.of("artifactType", String.class),
199+
"android-classes")))
186200
.getArtifacts()
187201
.getArtifactFiles();
188202
apiInfo.configure(t -> t.setClassPath(jars));
@@ -226,4 +240,53 @@ private static String kotlinModuleName(Project project) {
226240

227241
return project.getRootProject().getName() + fullyQualifiedProjectPath;
228242
}
243+
244+
private static void configurePublishing(
245+
Project project, FirebaseLibraryExtension firebaseLibrary, LibraryExtension android) {
246+
android.publishing(
247+
p -> {
248+
p.singleVariant(
249+
"release",
250+
v -> {
251+
v.withSourcesJar();
252+
return Unit.INSTANCE;
253+
});
254+
});
255+
project
256+
.getTasks()
257+
.withType(
258+
GenerateModuleMetadata.class,
259+
task -> {
260+
task.setEnabled(false);
261+
});
262+
project.afterEvaluate(
263+
p -> {
264+
project.apply(ImmutableMap.of("plugin", "maven-publish"));
265+
PublishingExtension publishing =
266+
project.getExtensions().getByType(PublishingExtension.class);
267+
publishing.repositories(
268+
repos ->
269+
repos.maven(
270+
repo -> {
271+
String s = project.getRootProject().getBuildDir() + "/m2repository";
272+
File file = new File(s);
273+
repo.setUrl(file.toURI());
274+
repo.setName("BuildDir");
275+
}));
276+
publishing.publications(
277+
publications ->
278+
publications.create(
279+
"mavenAar",
280+
MavenPublication.class,
281+
publication -> {
282+
publication.from(
283+
project
284+
.getComponents()
285+
.findByName(firebaseLibrary.type.getComponentName()));
286+
publication.setArtifactId(firebaseLibrary.artifactId.get());
287+
publication.setGroupId(firebaseLibrary.groupId.get());
288+
firebaseLibrary.applyPomCustomization(publication.getPom());
289+
}));
290+
});
291+
}
229292
}

buildSrc/src/main/java/com/google/firebase/gradle/plugins/JavadocPlugin.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,9 @@ private static FileCollection getJars(Configuration configuration) {
302302
.artifactView(
303303
view ->
304304
view.attributes(
305-
attrs -> attrs.attribute(Attribute.of("artifactType", String.class), "jar")))
305+
attrs ->
306+
attrs.attribute(
307+
Attribute.of("artifactType", String.class), "android-classes")))
306308
.getArtifacts()
307309
.getArtifactFiles();
308310
}

buildSrc/src/main/java/com/google/firebase/gradle/plugins/LibraryType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public String getComponentName() {
3535
// https://github.com/wupdigital/android-maven-publish ?).
3636
// So we explicitly choose the "Release" variant for android libraries.
3737
if (this == ANDROID) {
38-
return name().toLowerCase() + "Release";
38+
return "release";
3939
}
4040
return name().toLowerCase();
4141
}

buildSrc/src/main/java/com/google/firebase/gradle/plugins/license/GenerateLicensesTask.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ abstract class GenerateLicensesTask extends DefaultTask {
4343
public abstract void setAdditionalLicenses(
4444
List<ThirdPartyLicensesExtension.CustomLicense> additionalLicenses);
4545

46-
@OutputDirectory
4746
public abstract void setOutputDir(File outputDir);
4847

48+
@OutputDirectory
4949
public abstract File getOutputDir();
5050

5151
@Inject

buildSrc/src/main/java/com/google/firebase/gradle/plugins/publish/PublishingPlugin.java

Lines changed: 5 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@
1414

1515
package com.google.firebase.gradle.plugins.publish;
1616

17-
import com.google.common.collect.ImmutableMap;
1817
import com.google.firebase.gradle.plugins.FirebaseLibraryExtension;
19-
import digital.wup.android_maven_publish.AndroidMavenPublishPlugin;
2018
import java.io.File;
2119
import java.util.Arrays;
2220
import java.util.Set;
@@ -26,7 +24,6 @@
2624
import org.gradle.api.Task;
2725
import org.gradle.api.publish.PublishingExtension;
2826
import org.gradle.api.publish.maven.MavenPublication;
29-
import org.gradle.api.tasks.bundling.Jar;
3027
import org.gradle.api.tasks.bundling.Zip;
3128

3229
/**
@@ -110,8 +107,6 @@ public void apply(Project project) {
110107
if (firebaseLibrary == null) {
111108
return;
112109
}
113-
114-
sub.apply(ImmutableMap.of("plugin", AndroidMavenPublishPlugin.class));
115110
PublishingExtension publishing =
116111
sub.getExtensions().getByType(PublishingExtension.class);
117112
publishing.repositories(
@@ -124,30 +119,11 @@ public void apply(Project project) {
124119
repo.setName("BuildDir");
125120
}));
126121
publishing.publications(
127-
publications ->
128-
publications.create(
129-
"mavenAar",
130-
MavenPublication.class,
131-
publication -> {
132-
publication.from(
133-
sub.getComponents()
134-
.findByName(firebaseLibrary.type.getComponentName()));
135-
publication.setArtifactId(firebaseLibrary.artifactId.get());
136-
publication.setGroupId(firebaseLibrary.groupId.get());
137-
if (firebaseLibrary.publishSources) {
138-
publication.artifact(
139-
sub.getTasks()
140-
.create(
141-
"sourceJar",
142-
Jar.class,
143-
jar -> {
144-
jar.from(firebaseLibrary.getSrcDirs());
145-
jar.getArchiveClassifier().set("sources");
146-
}));
147-
}
148-
firebaseLibrary.applyPomCustomization(publication.getPom());
149-
publisher.decorate(firebaseLibrary, publication);
150-
}));
122+
publications -> {
123+
MavenPublication publication =
124+
(MavenPublication) publications.getByName("mavenAar");
125+
publisher.decorate(firebaseLibrary, publication);
126+
});
151127
publishAllToLocal.dependsOn(
152128
sub.getPath() + ":publishMavenAarPublicationToMavenLocal");
153129
publishAllToBuildDir.dependsOn(

encoders/protoc-gen-firebase-encoders/protoc-gen-firebase-encoders.gradle

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ plugins {
1717
id "java-library"
1818
id "com.github.johnrengelman.shadow" version "5.2.0"
1919
id "com.google.protobuf"
20-
id "org.jetbrains.kotlin.kapt"
20+
id "kotlin-kapt"
2121
}
2222

2323
protobuf {
@@ -26,18 +26,22 @@ protobuf {
2626
}
2727
}
2828

29+
kapt {
30+
generateStubs = false
31+
correctErrorTypes = true
32+
}
33+
2934
jar {
3035
manifest.attributes "Main-Class": "com.google.firebase.encoders.proto.codegen.MainKt"
3136
}
3237

3338
dependencies {
34-
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion"
3539

3640
implementation "com.google.protobuf:protobuf-java:3.14.0"
3741
implementation 'com.squareup:javapoet:1.13.0'
3842
implementation 'com.google.guava:guava:30.0-jre'
39-
implementation 'com.google.dagger:dagger:2.39.1'
40-
kapt 'com.google.dagger:dagger-compiler:2.39.1'
43+
implementation 'com.google.dagger:dagger:2.43.2'
44+
kapt 'com.google.dagger:dagger-compiler:2.43.2'
4145

4246
testImplementation 'junit:junit:4.13.1'
4347
testImplementation "com.google.truth:truth:1.0.1"

firebase-firestore/firebase-firestore.gradle

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -111,16 +111,6 @@ android.libraryVariants.all { variant ->
111111
}
112112
}
113113

114-
configurations.all {
115-
if(it.name.contains('AndroidTestRuntimeClasspath')) {
116-
it.resolutionStrategy {
117-
force 'org.checkerframework:checker-compat-qual:2.5.5'
118-
force 'com.google.guava:guava:30.1.1-android'
119-
}
120-
}
121-
exclude group: "com.google.protobuf", module: "protobuf-java"
122-
}
123-
124114
googleJavaFormat {
125115
exclude 'src/testUtil/java/com/google/firebase/firestore/testutil/Assert.java'
126116
exclude 'src/testUtil/java/com/google/firebase/firestore/testutil/ThrowingRunnable.java'

firebase-firestore/ktx/ktx.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ plugins {
1717
id 'kotlin-android'
1818
}
1919

20+
group = "com.google.firebase"
21+
2022
firebaseLibrary {
2123
releaseWith project(':firebase-firestore')
2224
publishSources = true

0 commit comments

Comments
 (0)