Skip to content

Commit 35b89ab

Browse files
committed
Enable dead code elimination for vendored deps.
1 parent f115693 commit 35b89ab

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

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

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,12 @@ class VendorPlugin : Plugin<Project> {
8080
}
8181

8282
interface JarTransformer {
83-
fun transform(inputJar: File, outputJar: File, packagesToVendor: Set<String>)
83+
fun transform(
84+
inputJar: File,
85+
outputJar: File,
86+
ownPackages: Set<String>,
87+
packagesToVendor: Set<String>
88+
)
8489
}
8590

8691
class JarJarTransformer(
@@ -89,10 +94,18 @@ class JarJarTransformer(
8994
private val project: Project,
9095
private val logger: Logger
9196
) : JarTransformer {
92-
override fun transform(inputJar: File, outputJar: File, packagesToVendor: Set<String>) {
97+
override fun transform(
98+
inputJar: File,
99+
outputJar: File,
100+
ownPackages: Set<String>,
101+
packagesToVendor: Set<String>
102+
) {
93103
val parentPackage = parentPackageProvider()
94104
val rulesFile = File.createTempFile(parentPackage, ".jarjar")
95105
rulesFile.printWriter().use {
106+
for (packageName in ownPackages) {
107+
it.println("keep $packageName.**")
108+
}
96109
for (externalPackageName in packagesToVendor) {
97110
it.println("rule $externalPackageName.** $parentPackage.@0")
98111
}
@@ -227,7 +240,7 @@ class VendorTransform(
227240
zipAll(unzippedDir, jar)
228241
val outputJar = File(workDir, "output.jar")
229242

230-
jarTransformer.transform(jar, outputJar, externalPackageNames)
243+
jarTransformer.transform(jar, outputJar, ownPackageNames, externalPackageNames)
231244
return outputJar
232245
}
233246

buildSrc/src/test/kotlin/com/google/firebase/gradle/plugins/VendorTests.kt

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,11 @@ class VendorPluginTests {
8686
)
8787

8888
// ImmutableList is not used, so it should be stripped out.
89-
assertThat(classes).doesNotContain("com/google/common/collect/ImmutableList.class")
89+
assertThat(classes).doesNotContain("com/example/com/google/common/collect/ImmutableList.class")
9090
}
9191

9292
@Test
93-
fun `vendor dagger excluding javax transitive deps and not using it should include dagger`() {
93+
fun `vendor dagger excluding javax transitive deps and not using it should not include dagger`() {
9494
val classes =
9595
buildWith(
9696
"""
@@ -113,12 +113,7 @@ class VendorPluginTests {
113113
)
114114
)
115115
// expected classes
116-
assertThat(classes)
117-
.containsAtLeast(
118-
"com/example/Hello.class",
119-
"com/example/BuildConfig.class",
120-
"com/example/dagger/Lazy.class"
121-
)
116+
assertThat(classes).containsExactly("com/example/Hello.class", "com/example/BuildConfig.class")
122117
}
123118

124119
@Test

0 commit comments

Comments
 (0)