Saltar al contenido principal

$FLUTTER_ROOT/bin/cache/flutter.version.json reemplaza a $FLUTTER_ROOT/version

La salida de archivo de herramienta obsoleta '$FLUTTER_ROOT/version' ha sido reemplazada por '$FLUTTER_ROOT/bin/cache/flutter.version.json', y cualquier script de compilación o referencia a ella también debe actualizarse.

Resumen

#

La herramienta flutter ya no generará el archivo de metadatos $FLUTTER_ROOT/version, y solo generará $FLUTTER_ROOT/bin/cache/flutter.version.json.

Las herramientas y scripts de compilación que dependen de la presencia de $FLUTTER_ROOT/version deben actualizarse.

Contexto

#

En 2023, se añadió $FLUTTER_ROOT/bin/cache/flutter.version.json como un formato de archivo más nuevo que reemplaza a $FLUTTER_ROOT/version.

Así que un archivo que se veía algo así:

version
3.33.0-1.0.pre-1070

Fue reemplazado por algo como esto:

flutter.version.json
json
{
  "frameworkVersion": "3.33.0-1.0.pre-1070",
  "channel": "master",
  "repositoryUrl": "unknown source",
  "frameworkRevision": "be9526fbaaaab9474e95d196b70c41297eeda2d0",
  "frameworkCommitDate": "2025-07-22 11:34:11 -0700",
  "engineRevision": "be9526fbaaaab9474e95d196b70c41297eeda2d0",
  "engineCommitDate": "2025-07-22 18:34:11.000Z",
  "engineContentHash": "70fb28dde094789120421d4e807a9c37a0131296",
  "engineBuildDate": "2025-07-22 11:47:42.829",
  "dartSdkVersion": "3.10.0 (build 3.10.0-15.0.dev)",
  "devToolsVersion": "2.48.0",
  "flutterVersion": "3.33.0-1.0.pre-1070"
}

Generar ambos archivos es una fuente de deuda técnica.

Guía de migración

#

La mayoría de los desarrolladores de Flutter no analizan ni usan este archivo, pero las herramientas personalizadas o las configuraciones de CI podrían hacerlo.

Por ejemplo, el propio script de generación de api.flutter.dev del equipo de Flutter:

post_process_docs.dart
dart
final File versionFile = File('version');
final String version = versionFile.readAsStringSync();

Se actualizó en 172601 a:

dart
final File versionFile = File(path.join(checkoutPath, 'bin', 'cache', 'flutter.version.json'));
final String version = () {
  final Map<String, Object?> json =
      jsonDecode(versionFile.readAsStringSync()) as Map<String, Object?>;
  return json['flutterVersion']! as String;
}();

Para optar por no participar temporalmente de la exclusión de $FLUTTER_ROOT/version:

sh
flutter config --no-enable-omit-legacy-version-file

Timeline

#

Introducido en la versión: 3.33.0-1.0.pre-1416
Lanzamiento estable: Aún no publicado

Una versión estable después de que este cambio se introduzca, se eliminará --no-enable-omit-legacy-version-file.

Referencias

#

Issues relevantes:

  • Issue 171900, donde se programó la eliminación de FLUTTER_ROOT/version

PRs relevantes:

  • PR 124558, donde se añadió flutter.version.json como el nuevo formato
  • PR 172601, un ejemplo de migración de un script para usar flutter.version.json