Skip to content

Commit eff503c

Browse files
committed
Disable dead code elimination in transport-runtime.
1 parent 35b89ab commit eff503c

File tree

2 files changed

+29
-6
lines changed

2 files changed

+29
-6
lines changed

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

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,31 @@ import org.gradle.api.Plugin
3333
import org.gradle.api.Project
3434
import org.gradle.api.artifacts.Configuration
3535
import org.gradle.api.logging.Logger
36+
import org.gradle.api.provider.Property
37+
import org.gradle.api.provider.Provider
3638
import org.gradle.kotlin.dsl.apply
39+
import org.gradle.kotlin.dsl.create
40+
41+
abstract class VendorExtension {
42+
/** Controls dead code elimination, enabled if true. */
43+
abstract val optimize: Property<Boolean>
44+
45+
init {
46+
optimize.convention(true)
47+
}
48+
}
3749

3850
class VendorPlugin : Plugin<Project> {
3951
override fun apply(project: Project) {
52+
val vendorConfig = project.extensions.create<VendorExtension>("vendor")
4053
project.plugins.all {
4154
when (this) {
42-
is LibraryPlugin -> configureAndroid(project)
55+
is LibraryPlugin -> configureAndroid(project, vendorConfig)
4356
}
4457
}
4558
}
4659

47-
fun configureAndroid(project: Project) {
60+
fun configureAndroid(project: Project, vendorConfig: VendorExtension) {
4861
project.apply(plugin = "LicenseResolverPlugin")
4962

5063
val vendor = project.configurations.create("vendor")
@@ -71,7 +84,8 @@ class VendorPlugin : Plugin<Project> {
7184
},
7285
jarJarProvider = { jarJar.resolve() },
7386
project = project,
74-
logger = project.logger
87+
logger = project.logger,
88+
optimize = vendorConfig.optimize
7589
),
7690
logger = project.logger
7791
)
@@ -92,7 +106,8 @@ class JarJarTransformer(
92106
private val parentPackageProvider: () -> String,
93107
private val jarJarProvider: () -> Collection<File>,
94108
private val project: Project,
95-
private val logger: Logger
109+
private val logger: Logger,
110+
private val optimize: Provider<Boolean>
96111
) : JarTransformer {
97112
override fun transform(
98113
inputJar: File,
@@ -103,8 +118,10 @@ class JarJarTransformer(
103118
val parentPackage = parentPackageProvider()
104119
val rulesFile = File.createTempFile(parentPackage, ".jarjar")
105120
rulesFile.printWriter().use {
106-
for (packageName in ownPackages) {
107-
it.println("keep $packageName.**")
121+
if (optimize.get()) {
122+
for (packageName in ownPackages) {
123+
it.println("keep $packageName.**")
124+
}
108125
}
109126
for (externalPackageName in packagesToVendor) {
110127
it.println("rule $externalPackageName.** $parentPackage.@0")

transport/transport-runtime/transport-runtime.gradle

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,12 @@ firebaseLibrary {
6767
}
6868
}
6969

70+
vendor {
71+
// Integration tests use dagger classes that are not used in the main SDK,
72+
// so we disable dead code elimination to ensure those classes are preserved.
73+
optimize = false
74+
}
75+
7076
android {
7177
compileSdkVersion project.targetSdkVersion
7278
defaultConfig {

0 commit comments

Comments
 (0)