Skip to content

Commit 055ea9c

Browse files
geraintwhitefacebook-github-bot
authored andcommitted
Fix devDisabledInStaging not working with multiple productFlavors (#30606)
Summary: Fixes #27052 Since react-native 0.62, the `devDisabledIn${buildType}` syntax has stopped working for apps with multiple `productFlavors`. This PR adds the `disableDevForVariant` lambda to allow dev mode to be disabled for different variants. ## Changelog <!-- Help reviewers and the release process by writing your own changelog entry. For an example, see: https://github.com/facebook/react-native/wiki/Changelog --> [Android] [Fixed] - Fix devDisabledIn not working with multiple productFlavors Pull Request resolved: #30606 Test Plan: I added the following log into `react.gradle` and ran the Android build for my app: ``` println("devEnabled: ${targetName}, ${devEnabled}") ``` ``` # build.gradle project.ext.react = [ entryFile: "index.android.js", enableHermes: true, // clean and rebuild if changing bundleInLive: true, disableDevForVariant: { def variant -> variant.name.toLowerCase().contains('release') || variant.name.toLowerCase().contains('live') }, ] ... flavorDimensions 'branding' productFlavors { cve { dimension 'branding' } whce { dimension 'branding' } } ``` Console output: ``` Reading env from: env/cve/live devEnabled: CveDebug, true devEnabled: CveRelease, false devEnabled: CveLive, false devEnabled: WhceDebug, true devEnabled: WhceRelease, false devEnabled: WhceLive, false ``` Reviewed By: cortinico Differential Revision: D31649977 Pulled By: ShikaSD fbshipit-source-id: 520734314f4bca7608b8dca67c7c5ce0be6d31a5
1 parent 64711b0 commit 055ea9c

File tree

3 files changed

+16
-3
lines changed

3 files changed

+16
-3
lines changed

packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactExtension.kt

+8
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,14 @@ abstract class ReactExtension @Inject constructor(project: Project) {
114114
val devDisabledInVariants: ListProperty<String> =
115115
objects.listProperty(String::class.java).convention(emptyList())
116116

117+
/**
118+
* Functional interface to disable dev mode only on specific [BaseVariant] Default: will check
119+
* [devDisabledInVariants] or return True for Release variants and False for Debug variants.
120+
*/
121+
var disableDevForVariant: (BaseVariant) -> Boolean = { variant ->
122+
variant.name in devDisabledInVariants.get() || variant.isRelease
123+
}
124+
117125
/**
118126
* Variant Name to Boolean map that allows to toggle the bundle command for a specific variant.
119127
* Default: {}

packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/TaskConfiguration.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ internal fun Project.configureReactTasks(variant: BaseVariant, config: ReactExte
6464
}
6565
it.execCommand = execCommand
6666
it.bundleCommand = config.bundleCommand.get()
67-
it.devEnabled = !(variant.name in config.devDisabledInVariants.get() || isRelease)
67+
it.devEnabled = !config.disableDevForVariant(variant)
6868
it.entryFile = detectedEntryFile(config)
6969

7070
val extraArgs = mutableListOf<String>()

react.gradle

+7-2
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,12 @@ def hermesFlagsForVariant = config.hermesFlagsForVariant ?: {
9999
return hermesFlags
100100
}
101101

102+
// Set disableDevForVariant to a function to configure per variant,
103+
// defaults to `devDisabledIn${targetName}` or True for Release variants and False for debug variants
104+
def disableDevForVariant = config.disableDevForVariant ?: {
105+
def variant -> config."devDisabledIn${variant.name.capitalize()}" || variant.name.toLowerCase().contains("release")
106+
}
107+
102108
// Set deleteDebugFilesForVariant to a function to configure per variant,
103109
// defaults to True for Release variants and False for debug variants
104110
def deleteDebugFilesForVariant = config.deleteDebugFilesForVariant ?: {
@@ -172,8 +178,7 @@ afterEvaluate {
172178
workingDir(reactRoot)
173179

174180
// Set up dev mode
175-
def devEnabled = !(config."devDisabledIn${targetName}"
176-
|| targetName.toLowerCase().contains("release"))
181+
def devEnabled = !disableDevForVariant(variant)
177182

178183
def extraArgs = []
179184

0 commit comments

Comments
 (0)