react / react/react-native

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

Aperta Adatta ai principianti
#56,287 6 commenti 2 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Needs: Attention Needs: Repro
Lingua principale
C++
Stelle
127k
Fork
25.3k
Merge medio
1g 23h
PR unite (30g)
4

Descrizione

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

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia da settings.gradle.kts in @react-native/gradle-plugin e gradle/wrapper/gradle-wrapper.properties per confermare le versioni di Gradle e foojay. Riproduci il problema con i comandi Expo Android dopo aver cancellato le cache di Gradle, quindi verifica che un progetto nuovo venga compilato con Gradle 9.0.0 e la configurazione aggiornata del resolver; controlla anche il requisito segnalato --no-configure-on-demand.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
kotlin, react-native
Ambito
build-system, mobile-dev
Tipo di issue
Bug
Difficoltà
2/5
Tempo stimato
1-3 ore
Stato di attività
Tranquilla
Chiarezza
Specificata chiaramente
Idoneità per principianti
72/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.