react / react/react-native

foojay-resolver-convention 0.5.0 in gradle-plugin is incompatible with Gradle 9.0.0

Abierto Apto para principiantes
#56,287 6 comentarios 2 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Needs: Attention Needs: Repro
Lenguaje dominante
C++
Estrellas
127k
Forks
25.3k
Merge medio
1 d 23 h
PR fusionados (30 d)
4

Descripción

Description

The @react-native/gradle-plugin bundles settings.gradle.kts with:

plugins { id("org.gradle.toolchains.foojay-resolver-convention").version("0.5.0") }

React Native 0.83.x uses Gradle 9.0.0 (set in gradle/wrapper/gradle-wrapper.properties), but foojay-resolver-convention 0.5.0 depends on FoojayToolchainsPlugin, a class that was removed in Gradle 9.0.0.

This causes a build failure on any fresh project or after clearing Gradle caches.

Steps to reproduce

npx create-expo-app@latest --template default@sdk-55
cd <project>
rm -rf ~/.gradle/caches
npx expo run:android

Error

FAILURE: Build failed with an exception.

* Where:
Settings file 'android/settings.gradle' line: 21

* What went wrong:
Error resolving plugin [id: 'com.facebook.react.settings']
> org/gradle/toolchains/foojay/FoojayToolchainsPlugin

Full stacktrace:

Caused by: java.lang.NoClassDefFoundError: org/gradle/toolchains/foojay/FoojayToolchainsPlugin
    at org.gradle.toolchains.foojay.FoojayToolchainsConventionPlugin.apply(FoojayToolchainsConventionPlugin.kt:11)

Root cause

Component Version
react-native 0.83.4
@react-native/gradle-plugin 0.83.4
Gradle 9.0.0
foojay-resolver-convention 0.5.0

Gradle 9.0.0 removed the FoojayToolchainsPlugin class that foojay 0.5.0 depends on. Versions 0.8.0+ of foojay-resolver-convention are compatible with Gradle 9.0.0.

Verified fix

Updating settings.gradle.kts in @react-native/gradle-plugin from:

plugins { id("org.gradle.toolchains.foojay-resolver-convention").version("0.5.0") }

to:

plugins { id("org.gradle.toolchains.foojay-resolver-convention").version("0.9.0") }

resolves the issue. The build also requires --no-configure-on-demand to avoid a related metadata.bin generation failure.

Affected versions

  • react-native 0.83.0 through 0.84.1 (all ship foojay 0.5.0 with Gradle 9.0.0)
  • Expo SDK 55 (uses react-native 0.83.x)
  • Reproducible on macOS (ARM64) with Java 17 and Node 24

Environment

System: macOS 26.3.1 (arm64)
Node: v24.14.0
Java: OpenJDK 17.0.18 (Zulu)
Gradle: 9.0.0
react-native: 0.83.4
Expo SDK: 55.0.9

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza con settings.gradle.kts en @react-native/gradle-plugin y gradle/wrapper/gradle-wrapper.properties para confirmar las versiones de Gradle y foojay. Reproduce el problema con los comandos de Expo para Android después de borrar las cachés de Gradle; luego verifica que un proyecto nuevo se compile con Gradle 9.0.0 y la configuración del resolver actualizada; comprueba también el requisito indicado de --no-configure-on-demand.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
kotlin, react-native
Área
build-system, mobile-dev
Tipo de issue
Error
Dificultad
2/5
Tiempo estimado
1-3 horas
Estado de actividad
Tranquilo
Claridad
Bien especificado
Aptitud para principiantes
72/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.