Skip to content

Commit fd62375

Browse files
committed
Rewrite test code but don't vendor in libaries.
Doing this avoids duplicate symbols when building test apk.
1 parent 70b873d commit fd62375

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

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

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ class VendorPlugin : Plugin<Project> {
6363
android.registerTransform(VendorTransform(
6464
vendor,
6565
JarJarTransformer(
66-
parentPackageProvider = { variantName ->
67-
android.libraryVariants.find { it.name == variantName }!!.applicationId
66+
parentPackageProvider = {
67+
android.libraryVariants.find { it.name == "release" }!!.applicationId
6868
},
6969
jarJarProvider = { jarJar.resolve() },
7070
project = project,
@@ -78,13 +78,13 @@ interface JarTransformer {
7878
}
7979

8080
class JarJarTransformer(
81-
private val parentPackageProvider: (String) -> String,
81+
private val parentPackageProvider: () -> String,
8282
private val jarJarProvider: () -> Collection<File>,
8383
private val project: Project,
8484
private val logger: Logger
8585
) : JarTransformer {
8686
override fun transform(variantName: String, input: File, output: File, ownPackageNames: Set<String>, externalPackageNames: Set<String>) {
87-
val parentPackage = parentPackageProvider(variantName)
87+
val parentPackage = parentPackageProvider()
8888
val rulesFile = File.createTempFile("$parentPackage-$variantName", ".jarjar")
8989
rulesFile.printWriter().use {
9090
for (packageName in ownPackageNames) {
@@ -162,22 +162,28 @@ class VendorTransform(
162162
private fun process(workDir: File, transformInvocation: TransformInvocation): File {
163163
transformInvocation.context.variantName
164164
val unzippedDir = File(workDir, "unzipped")
165+
val unzippedExcludedDir = File(workDir, "unzipped-excluded")
165166
unzippedDir.mkdirs()
167+
unzippedExcludedDir.mkdirs()
168+
169+
val externalCodeDir = if (
170+
transformInvocation.context.variantName.toLowerCase().contains("test"))
171+
unzippedExcludedDir else unzippedDir
166172

167173
for (input in transformInvocation.inputs) {
168174
for (directoryInput in input.directoryInputs) {
169175
directoryInput.file.copyRecursively(unzippedDir)
170176
}
171177
}
172-
val foo: List<String> = mutableListOf("Hello")
178+
173179
val ownPackageNames = inferPackages(unzippedDir)
174180

175181
for (jar in configuration.resolve()) {
176-
unzipJar(jar, unzippedDir)
182+
unzipJar(jar, externalCodeDir)
177183
}
178-
val externalPackageNames = inferPackages(unzippedDir) subtract ownPackageNames
179-
val java = File(unzippedDir, "java")
180-
val javax = File(unzippedDir, "javax")
184+
val externalPackageNames = inferPackages(externalCodeDir) subtract ownPackageNames
185+
val java = File(externalCodeDir, "java")
186+
val javax = File(externalCodeDir, "javax")
181187
if (java.exists() || javax.exists()) {
182188
// JarJar unconditionally skips any classes whose package name starts with "java" or "javax".
183189
throw GradleException("Vendoring java or javax packages is not supported. " +

0 commit comments

Comments
 (0)