From 510adc22dd5232af1a99f3a00e418662b767de22 Mon Sep 17 00:00:00 2001 From: D N <4661784+retyui@users.noreply.github.com> Date: Wed, 4 Nov 2026 11:09:35 +0100 Subject: [PATCH] Allow version downgrade on install for React Native apps in RNGP Add configureInstallOptionsForApp to AgpConfiguratorUtils, which adds the '-d' adb install option to every module that applies com.android.application. --- .../src/main/kotlin/com/facebook/react/ReactPlugin.kt | 2 ++ .../com/facebook/react/utils/AgpConfiguratorUtils.kt | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/packages/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactPlugin.kt b/packages/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactPlugin.kt index 5924836d2245..d241861c4198 100644 --- a/packages/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactPlugin.kt +++ b/packages/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactPlugin.kt @@ -21,6 +21,7 @@ import com.facebook.react.utils.AgpConfiguratorUtils.configureBuildConfigFieldsF import com.facebook.react.utils.AgpConfiguratorUtils.configureBuildConfigFieldsForLibraries import com.facebook.react.utils.AgpConfiguratorUtils.configureBuildTypesForApp import com.facebook.react.utils.AgpConfiguratorUtils.configureDevServerLocation +import com.facebook.react.utils.AgpConfiguratorUtils.configureInstallOptionsForApp import com.facebook.react.utils.AgpConfiguratorUtils.configureNamespaceForLibraries import com.facebook.react.utils.BackwardCompatUtils.configureBackwardCompatibilityReactMap import com.facebook.react.utils.DependencyUtils.configureDependencies @@ -117,6 +118,7 @@ class ReactPlugin : Plugin { configureCodegen(project, extension, rootExtension, isLibrary = false) configureResources(project, extension) configureBuildTypesForApp(project) + configureInstallOptionsForApp(project) // Apply the namespace fallback to every Android library in the build, including third-party // libraries that don't apply the `com.facebook.react` plugin and still rely on the manifest diff --git a/packages/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/utils/AgpConfiguratorUtils.kt b/packages/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/utils/AgpConfiguratorUtils.kt index a7581e039324..95a9631d9bc5 100644 --- a/packages/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/utils/AgpConfiguratorUtils.kt +++ b/packages/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/utils/AgpConfiguratorUtils.kt @@ -51,6 +51,16 @@ internal object AgpConfiguratorUtils { project.pluginManager.withPlugin("com.android.application", action) } + fun configureInstallOptionsForApp(project: Project) { + val action = + Action { + project.extensions + .getByType(ApplicationAndroidComponentsExtension::class.java) + .finalizeDsl { ext -> ext.installation.installOptions += "-d" } + } + project.pluginManager.withPlugin("com.android.application", action) + } + fun configureBuildConfigFieldsForApp(project: Project, extension: ReactExtension) { val action = Action {