Skip to content

Commit 91aea06

Browse files
committed
WIP
1 parent f7b1e81 commit 91aea06

File tree

34 files changed

+162
-51
lines changed

34 files changed

+162
-51
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ buildscript {
2929
}
3030

3131
dependencies {
32-
classpath 'com.android.tools.build:gradle:4.0.0'
32+
classpath 'com.android.tools.build:gradle:4.1.0-rc01'
3333
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.12'
3434
classpath 'net.ltgt.gradle:gradle-errorprone-plugin:1.2.1'
3535
classpath 'org.jsoup:jsoup:1.13.1'

buildSrc/build.gradle

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
// limitations under the License.
1414

1515
plugins {
16-
id "org.gradle.kotlin.kotlin-dsl" version "1.2.6"
16+
id "org.gradle.kotlin.kotlin-dsl" version "1.3.6"
1717
id "org.jlleitschuh.gradle.ktlint" version "9.2.1"
1818
}
1919

@@ -47,7 +47,7 @@ dependencies {
4747
runtime 'io.opencensus:opencensus-impl:0.18.0'
4848
implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.6'
4949
implementation 'org.jetbrains.dokka:dokka-android-gradle-plugin:0.9.17-g013-9b8280a'
50-
implementation 'com.android.tools.build:gradle:3.4.2'
50+
implementation 'com.android.tools.build:gradle:4.1.0-rc01'
5151

5252
testImplementation 'junit:junit:4.13-rc-1'
5353
testImplementation group: 'com.google.code.gson', name: 'gson', version: '2.8.6'
@@ -92,3 +92,7 @@ test {
9292
}
9393
enabled = rootProject.properties.get('enablePluginTests', false).toBoolean()
9494
}
95+
96+
tasks.named("validatePlugins") {
97+
failOnWarning = false
98+
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import com.android.build.gradle.LibraryExtension;
2020
import com.android.build.gradle.api.AndroidSourceSet;
21+
import com.android.build.gradle.internal.dsl.TestOptions;
2122
import com.google.common.collect.ImmutableList;
2223
import com.google.common.collect.ImmutableMap;
2324
import com.google.firebase.gradle.plugins.apiinfo.ApiInformationTask;
@@ -59,7 +60,7 @@ public void apply(Project project) {
5960

6061
// see https://github.com/robolectric/robolectric/issues/5456
6162
android.testOptions(
62-
options ->
63+
(TestOptions options) ->
6364
options
6465
.getUnitTests()
6566
.all(

buildSrc/src/main/java/com/google/firebase/gradle/plugins/VendorPlugin.kt

Lines changed: 48 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import org.gradle.api.GradleException
3232
import org.gradle.api.Plugin
3333
import org.gradle.api.Project
3434
import org.gradle.api.artifacts.Configuration
35+
import org.gradle.api.attributes.Attribute
3536
import org.gradle.api.logging.Logger
3637

3738
class VendorPlugin : Plugin<Project> {
@@ -60,35 +61,34 @@ class VendorPlugin : Plugin<Project> {
6061
android.registerTransform(VendorTransform(
6162
vendor,
6263
JarJarTransformer(
63-
parentPackageProvider = { variantName ->
64-
val packageName = android.libraryVariants.find {
65-
it.name == "release"
66-
}!!.applicationId
67-
if (variantName.endsWith("AndroidTest"))
68-
"$packageName.$variantName"
69-
else packageName
64+
parentPackageProvider = {
65+
android.libraryVariants.find { it.name == "release" }!!.applicationId
7066
},
7167
jarJarProvider = { jarJar.resolve() },
7268
project = project,
7369
logger = project.logger),
74-
logger = project.logger))
70+
logger = project.logger,
71+
android = android))
7572
}
7673
}
7774

7875
interface JarTransformer {
79-
fun transform(variantName: String, input: File, output: File, ownPackageNames: Set<String>, externalPackageNames: Set<String>)
76+
fun transform(variantName: String, input: File, output: File, ownPackageNames: Set<String>, externalPackageNames: Set<String>, classesToExclude: Set<String>)
8077
}
8178

8279
class JarJarTransformer(
83-
private val parentPackageProvider: (String) -> String,
80+
private val parentPackageProvider: () -> String,
8481
private val jarJarProvider: () -> Collection<File>,
8582
private val project: Project,
8683
private val logger: Logger
8784
) : JarTransformer {
88-
override fun transform(variantName: String, input: File, output: File, ownPackageNames: Set<String>, externalPackageNames: Set<String>) {
89-
val parentPackage = parentPackageProvider(variantName)
85+
override fun transform(variantName: String, input: File, output: File, ownPackageNames: Set<String>, externalPackageNames: Set<String>, classesToExclude: Set<String>) {
86+
val parentPackage = parentPackageProvider()
9087
val rulesFile = File.createTempFile("$parentPackage-$variantName", ".jarjar")
9188
rulesFile.printWriter().use {
89+
for (classToExclude in classesToExclude) {
90+
it.println("zap $classToExclude")
91+
}
9292
for (packageName in ownPackageNames) {
9393
it.println("keep $packageName.**")
9494
}
@@ -111,7 +111,8 @@ class JarJarTransformer(
111111
class VendorTransform(
112112
private val configuration: Configuration,
113113
private val jarTransformer: JarTransformer,
114-
private val logger: Logger
114+
private val logger: Logger,
115+
private val android: LibraryExtension
115116
) :
116117
Transform() {
117118
override fun getName() = "firebaseVendorTransform"
@@ -190,13 +191,46 @@ class VendorTransform(
190191
val jar = File(workDir, "intermediate.jar")
191192
zipAll(unzippedDir, jar)
192193
val jar2 = File(workDir, "output.jar")
193-
jarTransformer.transform(transformInvocation.context.variantName, jar, jar2, ownPackageNames, externalPackageNames)
194+
val classesToExclude = classesToExclude(transformInvocation.context.variantName)
195+
println(classesToExclude.joinToString("\n"))
196+
197+
jarTransformer.transform(transformInvocation.context.variantName, jar, jar2, ownPackageNames, externalPackageNames, classesToExclude)
194198
return jar2
195199
}
196200

197201
private fun inferPackages(dir: File): Set<String> {
198202
return dir.walk().filter { it.name.endsWith(".class") }.map { it.parentFile.toRelativeString(dir).replace('/', '.') }.toSet()
199203
}
204+
205+
private fun classesToExclude(variantName: String): Set<String> {
206+
val testedVariant = android.testVariants.find { it.name == variantName }
207+
if (testedVariant == null) {
208+
return setOf()
209+
}
210+
val dependencyJars = testedVariant.runtimeConfiguration.incoming.artifactView {
211+
attributes {
212+
attribute(Attribute.of("artifactType", String::class.java), "jar")
213+
}
214+
}.artifacts.artifactFiles
215+
return dependencyJars.asSequence().map {
216+
println("Checking $it")
217+
if (!it.path.contains("intermediates/full_jar")) {
218+
println("Skipping $it")
219+
return@map it
220+
}
221+
println("Replacing $it")
222+
return@map File(it.path.replace(Regex("(.+)/intermediates/full_jar/(.+)/full.jar$")) { match ->
223+
"${match.groups[1]?.value}/intermediates/runtime_library_classes_jar/${match.groups[2]?.value}/classes.jar"
224+
})
225+
}.flatMap {
226+
val entries = ZipFile(it).entries()
227+
entries.asIterator().asSequence()
228+
}.filter {
229+
!it.isDirectory && it.name.endsWith(".class")
230+
}.map {
231+
it.name.replace('/', '.').removeSuffix(".class")
232+
}.toSet()
233+
}
200234
}
201235

202236
fun unzipJar(jar: File, directory: File) {

buildSrc/src/main/java/com/google/firebase/gradle/plugins/ci/Coverage.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public static void apply(FirebaseLibraryExtension firebaseLibrary) {
6666
.add("**Manifest*.*")
6767
.build();
6868

69-
task.setClassDirectories(
69+
task.getClassDirectories().from(
7070
project.files(
7171
project.fileTree(
7272
ImmutableMap.of(
@@ -80,8 +80,8 @@ public static void apply(FirebaseLibraryExtension firebaseLibrary) {
8080
project.getBuildDir() + "/tmp/kotlin-classes/release",
8181
"excludes",
8282
excludes))));
83-
task.setSourceDirectories(project.files("src/main/java", "src/main/kotlin"));
84-
task.setExecutionData(
83+
task.getSourceDirectories().from(project.files("src/main/java", "src/main/kotlin"));
84+
task.getExecutionData().from(
8585
project.fileTree(
8686
ImmutableMap.of(
8787
"dir",

firebase-common/firebase-common.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ android {
3333
versionName version
3434
multiDexEnabled true
3535
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
36+
testInstrumentationRunnerArguments 'hello': 'world', 'foo': 'bar'
3637
}
3738
sourceSets {
3839
androidTest {

firebase-common/gradle.properties

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
11
version=19.3.1
22
latestReleasedVersion=19.3.0
3-
android.enableUnitTestBinaryResources=true

firebase-common/ktx/gradle.properties

Lines changed: 0 additions & 1 deletion
This file was deleted.

firebase-config/gradle.properties

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,3 @@
1616

1717
version=19.2.1
1818
latestReleasedVersion=19.2.0
19-
android.enableUnitTestBinaryResources=true
20-

firebase-config/ktx/gradle.properties

Lines changed: 0 additions & 2 deletions
This file was deleted.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"ndk": "/Users/vkryachko/Library/Android/sdk/ndk/21.1.6352462",
3+
"revision": {
4+
"mMajor": 21,
5+
"mMinor": 1,
6+
"mMicro": 6352462,
7+
"mPreview": 0,
8+
"mPrecision": "MICRO",
9+
"mPreviewSeparator": " "
10+
}
11+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
[
2+
{
3+
"level": "INFO",
4+
"message": "android.ndkVersion from module build.gradle is [not set]"
5+
},
6+
{
7+
"level": "INFO",
8+
"message": "android.ndkPath from module build.gradle is not set"
9+
},
10+
{
11+
"level": "INFO",
12+
"message": "ndk.dir in local.properties is not set"
13+
},
14+
{
15+
"level": "INFO",
16+
"message": "Not considering ANDROID_NDK_HOME because support was removed after deprecation period."
17+
},
18+
{
19+
"level": "INFO",
20+
"message": "sdkFolder is /Users/vkryachko/Library/Android/sdk"
21+
},
22+
{
23+
"level": "INFO",
24+
"message": "Because no explicit NDK was requested, the default version [21.1.6352462] for this Android Gradle Plugin will be used"
25+
}
26+
]
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"sdkFolder": "/Users/vkryachko/Library/Android/sdk",
3+
"sideBySideNdkFolderNames": [
4+
"17.2.4988734",
5+
"21.1.6352462"
6+
]
7+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"ndk": "/Users/vkryachko/Library/Android/sdk/ndk/21.1.6352462",
3+
"revision": {
4+
"mMajor": 21,
5+
"mMinor": 1,
6+
"mMicro": 6352462,
7+
"mPreview": 0,
8+
"mPrecision": "MICRO",
9+
"mPreviewSeparator": " "
10+
}
11+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
[
2+
{
3+
"level": "INFO",
4+
"message": "android.ndkVersion from module build.gradle is [not set]"
5+
},
6+
{
7+
"level": "INFO",
8+
"message": "android.ndkPath from module build.gradle is not set"
9+
},
10+
{
11+
"level": "INFO",
12+
"message": "ndk.dir in local.properties is not set"
13+
},
14+
{
15+
"level": "INFO",
16+
"message": "Not considering ANDROID_NDK_HOME because support was removed after deprecation period."
17+
},
18+
{
19+
"level": "INFO",
20+
"message": "sdkFolder is /Users/vkryachko/Library/Android/sdk"
21+
},
22+
{
23+
"level": "INFO",
24+
"message": "Because no explicit NDK was requested, the default version [21.1.6352462] for this Android Gradle Plugin will be used"
25+
},
26+
{
27+
"level": "INFO",
28+
"message": "Folder /Users/vkryachko/Library/Android/sdk/ndk/21.1.6352462 does not exist. Ignoring."
29+
},
30+
{
31+
"level": "INFO",
32+
"message": "No NDK was found. Trying to download it now."
33+
},
34+
{
35+
"level": "INFO",
36+
"message": "NDK 21.1.6352462 was downloaded to /Users/vkryachko/Library/Android/sdk/ndk/21.1.6352462. Using that."
37+
}
38+
]
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"sdkFolder": "/Users/vkryachko/Library/Android/sdk",
3+
"sideBySideNdkFolderNames": [
4+
"17.2.4988734"
5+
]
6+
}

firebase-crashlytics/ktx/gradle.properties

Lines changed: 0 additions & 1 deletion
This file was deleted.

firebase-database/gradle.properties

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,3 @@
1414

1515
version=19.3.2
1616
latestReleasedVersion=19.3.1
17-
android.enableUnitTestBinaryResources=true
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +0,0 @@
1-
android.enableUnitTestBinaryResources=true
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
11
version=17.0.7
22
latestReleasedVersion=17.0.6
3-
android.enableUnitTestBinaryResources=true

firebase-dynamic-links/gradle.properties

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,3 @@
1414

1515
version=19.1.1
1616
latestReleasedVersion=19.1.0
17-
android.enableUnitTestBinaryResources=true

firebase-dynamic-links/ktx/gradle.properties

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

firebase-firestore/ktx/gradle.properties

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

firebase-functions/gradle.properties

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
11
version=19.0.3
22
latestReleasedVersion=19.0.2
3-
android.enableUnitTestBinaryResources=true

firebase-functions/ktx/gradle.properties

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

firebase-inappmessaging-display/ktx/gradle.properties

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

firebase-inappmessaging/ktx/gradle.properties

Lines changed: 0 additions & 2 deletions
This file was deleted.
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
11
version=20.2.5
22
latestReleasedVersion=20.2.4
3-
android.enableUnitTestBinaryResources=true

firebase-messaging-directboot/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
-->
1616
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
1717
package="com.google.firebase.messaging.directboot">
18-
<uses-sdk android:minSdkVersion="16"/>
18+
<!-- <uses-sdk android:minSdkVersion="16"/>-->
1919

2020
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2121
<uses-permission android:name="android.permission.INTERNET" />

firebase-messaging/gradle.properties

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
11
version=20.2.5
22
latestReleasedVersion=20.2.4
3-
android.enableUnitTestBinaryResources=true

firebase-storage/gradle.properties

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,3 @@
1414

1515
version=19.1.2
1616
latestReleasedVersion=19.1.1
17-
android.enableUnitTestBinaryResources=true

firebase-storage/ktx/gradle.properties

Lines changed: 0 additions & 2 deletions
This file was deleted.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5.1-all.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists

transport/transport-runtime/gradle.properties

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,3 @@
1414

1515
version=2.2.4
1616
latestReleasedVersion=2.2.3
17-
android.enableUnitTestBinaryResources=true

0 commit comments

Comments
 (0)