Añadir 02-version.md
461
02-version.md.-.md
Normal file
461
02-version.md.-.md
Normal file
@@ -0,0 +1,461 @@
|
|||||||
|
# Problemas de Versiones
|
||||||
|
|
||||||
|
Soluciones a conflictos de versiones de SDK, librerías y herramientas.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Flutter / Dart SDK
|
||||||
|
|
||||||
|
### Equipo usa versiones diferentes
|
||||||
|
|
||||||
|
**Síntoma:**
|
||||||
|
```
|
||||||
|
pubspec.lock tiene conflictos en cada git pull
|
||||||
|
```
|
||||||
|
|
||||||
|
**Causa:** Algunos usan Flutter 3.44, otros 3.22, etc.
|
||||||
|
|
||||||
|
**Solución:** **Usar FVM para sincronizar versiones.**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# En la raíz del proyecto (una sola vez por el líder)
|
||||||
|
fvm use 3.44.0
|
||||||
|
# Esto crea .fvm/fvm_config.json
|
||||||
|
|
||||||
|
# Commitear el archivo
|
||||||
|
git add .fvm/fvm_config.json
|
||||||
|
git commit -m "Fijar versión de Flutter a 3.44.0"
|
||||||
|
git push
|
||||||
|
|
||||||
|
# Todos los demás:
|
||||||
|
git pull
|
||||||
|
fvm install # instala la versión del proyecto
|
||||||
|
fvm flutter pub get
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ventaja:** Todos usan exactamente la misma versión sin conflictos.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Error: "The current Dart SDK version is X but Y is required"
|
||||||
|
|
||||||
|
**Síntoma:**
|
||||||
|
```
|
||||||
|
The current Dart SDK version is 3.12.0.
|
||||||
|
Because basura_app requires SDK version >=3.8.0 <4.0.0, version solving failed.
|
||||||
|
```
|
||||||
|
|
||||||
|
**Causa:** Tu `pubspec.yaml` pide una versión que no tienes.
|
||||||
|
|
||||||
|
**Solución:**
|
||||||
|
|
||||||
|
**Opción 1:** Ajustar `pubspec.yaml` a tu versión:
|
||||||
|
```yaml
|
||||||
|
environment:
|
||||||
|
sdk: '>=3.4.0 <4.0.0' # compatible con Flutter 3.22+
|
||||||
|
```
|
||||||
|
|
||||||
|
**Opción 2:** Actualizar Flutter:
|
||||||
|
```bash
|
||||||
|
fvm install 3.44.0
|
||||||
|
fvm use 3.44.0
|
||||||
|
fvm flutter pub get
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Error: "Unsupported Dart SDK constraint"
|
||||||
|
|
||||||
|
**Síntoma:**
|
||||||
|
```
|
||||||
|
The lower bound of "sdk: '>=3.8.0 <4.0.0'" must be 2.12.0 or higher
|
||||||
|
```
|
||||||
|
|
||||||
|
**Causa:** Versión muy antigua de Flutter.
|
||||||
|
|
||||||
|
**Solución:**
|
||||||
|
```bash
|
||||||
|
# Actualizar Flutter
|
||||||
|
flutter upgrade
|
||||||
|
|
||||||
|
# O usar FVM
|
||||||
|
fvm install 3.44.0
|
||||||
|
fvm use 3.44.0
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Java JDK
|
||||||
|
|
||||||
|
### Error: "Gradle requires Java 11 or higher"
|
||||||
|
|
||||||
|
**Síntoma:**
|
||||||
|
```
|
||||||
|
ERROR: JAVA_HOME is set to an invalid directory
|
||||||
|
```
|
||||||
|
|
||||||
|
**Causa:** Java muy antiguo o `JAVA_HOME` mal configurado.
|
||||||
|
|
||||||
|
**Solución:**
|
||||||
|
```bash
|
||||||
|
# 1. Instalar Java 17 (recomendado)
|
||||||
|
# Linux:
|
||||||
|
sudo apt install openjdk-17-jdk
|
||||||
|
|
||||||
|
# macOS:
|
||||||
|
brew install openjdk@17
|
||||||
|
|
||||||
|
# Windows:
|
||||||
|
# Descargar desde adoptium.net
|
||||||
|
|
||||||
|
# 2. Verificar
|
||||||
|
java -version # debe mostrar "17.x.x"
|
||||||
|
|
||||||
|
# 3. Configurar JAVA_HOME
|
||||||
|
# Linux/macOS (.bashrc o .zshrc):
|
||||||
|
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
|
||||||
|
|
||||||
|
# Windows (System Properties → Environment Variables):
|
||||||
|
JAVA_HOME=C:\Program Files\Java\jdk-17
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Error: "Unsupported class file major version 65"
|
||||||
|
|
||||||
|
**Síntoma:**
|
||||||
|
```
|
||||||
|
Unsupported class file major version 65
|
||||||
|
```
|
||||||
|
|
||||||
|
**Causa:** Estás usando Java 21 (version 65) pero Gradle necesita Java 17 (version 61).
|
||||||
|
|
||||||
|
**Solución:**
|
||||||
|
```bash
|
||||||
|
# Cambiar a Java 17
|
||||||
|
# Linux:
|
||||||
|
sudo update-alternatives --config java
|
||||||
|
# Selecciona java-17-openjdk
|
||||||
|
|
||||||
|
# macOS:
|
||||||
|
export JAVA_HOME=/usr/local/opt/openjdk@17
|
||||||
|
|
||||||
|
# Windows:
|
||||||
|
# Desinstalar Java 21
|
||||||
|
# Instalar Java 17 desde adoptium.net
|
||||||
|
|
||||||
|
# Verificar
|
||||||
|
java -version # DEBE mostrar "17.x.x"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Python / pip
|
||||||
|
|
||||||
|
### Error: "No module named 'fastapi'"
|
||||||
|
|
||||||
|
**Síntoma:**
|
||||||
|
```
|
||||||
|
ModuleNotFoundError: No module named 'fastapi'
|
||||||
|
```
|
||||||
|
|
||||||
|
**Causa:** Dependencias no instaladas o virtualenv no activado.
|
||||||
|
|
||||||
|
**Solución:**
|
||||||
|
```bash
|
||||||
|
# 1. Activar virtualenv
|
||||||
|
source venv/bin/activate # Linux/macOS
|
||||||
|
venv\Scripts\activate # Windows
|
||||||
|
|
||||||
|
# 2. Instalar dependencias
|
||||||
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
# 3. Verificar
|
||||||
|
pip list | grep fastapi
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Error: "externally-managed-environment"
|
||||||
|
|
||||||
|
**Síntoma:**
|
||||||
|
```
|
||||||
|
error: externally-managed-environment
|
||||||
|
This environment is externally managed
|
||||||
|
```
|
||||||
|
|
||||||
|
**Causa:** Python 3.11+ en algunas distros bloquea `pip install` global.
|
||||||
|
|
||||||
|
**Solución:**
|
||||||
|
```bash
|
||||||
|
# Opción 1: Usar virtualenv (recomendado)
|
||||||
|
python -m venv venv
|
||||||
|
source venv/bin/activate
|
||||||
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
# Opción 2: Forzar (no recomendado)
|
||||||
|
pip install --break-system-packages -r requirements.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Versiones de paquetes incompatibles
|
||||||
|
|
||||||
|
**Síntoma:**
|
||||||
|
```
|
||||||
|
ERROR: pip's dependency resolver does not currently take into account
|
||||||
|
all the packages that are installed
|
||||||
|
```
|
||||||
|
|
||||||
|
**Causa:** Conflicto entre versiones de dependencias.
|
||||||
|
|
||||||
|
**Solución:**
|
||||||
|
```bash
|
||||||
|
# 1. Limpiar caché de pip
|
||||||
|
pip cache purge
|
||||||
|
|
||||||
|
# 2. Reinstalar desde cero
|
||||||
|
pip uninstall -y -r requirements.txt
|
||||||
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
# 3. Si persiste, fijar versiones exactas en requirements.txt
|
||||||
|
fastapi==0.111.0 # en lugar de fastapi>=0.111.0
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Dependencias de Flutter
|
||||||
|
|
||||||
|
### Error: "version solving failed"
|
||||||
|
|
||||||
|
**Síntoma:**
|
||||||
|
```
|
||||||
|
Because basura_app depends on flutter_riverpod ^2.6.1 which requires SDK version >=3.0.0,
|
||||||
|
version solving failed.
|
||||||
|
```
|
||||||
|
|
||||||
|
**Causa:** Paquete incompatible con tu versión de Flutter.
|
||||||
|
|
||||||
|
**Solución:**
|
||||||
|
|
||||||
|
**Opción 1:** Actualizar Flutter:
|
||||||
|
```bash
|
||||||
|
fvm install 3.44.0
|
||||||
|
fvm use 3.44.0
|
||||||
|
```
|
||||||
|
|
||||||
|
**Opción 2:** Bajar la versión del paquete:
|
||||||
|
```yaml
|
||||||
|
dependencies:
|
||||||
|
flutter_riverpod: ^2.4.0 # versión más antigua compatible
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Error: "pubspec.lock differs from pubspec.yaml"
|
||||||
|
|
||||||
|
**Síntoma:**
|
||||||
|
```
|
||||||
|
The pubspec.lock file has changed since the last pub get
|
||||||
|
```
|
||||||
|
|
||||||
|
**Causa:** Alguien modificó `pubspec.yaml` pero no corrió `pub get`.
|
||||||
|
|
||||||
|
**Solución:**
|
||||||
|
```bash
|
||||||
|
fvm flutter pub get
|
||||||
|
|
||||||
|
# Commitear pubspec.lock
|
||||||
|
git add pubspec.lock
|
||||||
|
git commit -m "Actualizar pubspec.lock"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Error: "package has incompatible Dart SDK constraint"
|
||||||
|
|
||||||
|
**Síntoma:**
|
||||||
|
```
|
||||||
|
The current Dart SDK version is 3.12.0.
|
||||||
|
Package 'some_package' requires SDK version ^2.17.0.
|
||||||
|
```
|
||||||
|
|
||||||
|
**Causa:** Un paquete viejo no soporta Dart 3.x.
|
||||||
|
|
||||||
|
**Solución:**
|
||||||
|
```bash
|
||||||
|
# 1. Buscar versión actualizada del paquete
|
||||||
|
flutter pub upgrade some_package
|
||||||
|
|
||||||
|
# 2. Si no existe, usar versión compatible
|
||||||
|
# En pubspec.yaml:
|
||||||
|
some_package: ^1.0.0 # versión vieja que funcione
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Git merge de pubspec.lock
|
||||||
|
|
||||||
|
### Conflicto en pubspec.lock
|
||||||
|
|
||||||
|
**Síntoma:**
|
||||||
|
```
|
||||||
|
CONFLICT (content): Merge conflict in pubspec.lock
|
||||||
|
```
|
||||||
|
|
||||||
|
**Causa:** Dos personas agregaron dependencias diferentes.
|
||||||
|
|
||||||
|
**Solución:**
|
||||||
|
```bash
|
||||||
|
# NO resolver manualmente — dejar que Flutter lo regenere
|
||||||
|
|
||||||
|
# 1. Quedarte con una versión (la tuya o la de ellos)
|
||||||
|
git checkout --theirs pubspec.lock
|
||||||
|
# o
|
||||||
|
git checkout --ours pubspec.lock
|
||||||
|
|
||||||
|
# 2. Regenerar desde pubspec.yaml
|
||||||
|
fvm flutter pub get
|
||||||
|
|
||||||
|
# 3. Commitear el nuevo lock
|
||||||
|
git add pubspec.lock
|
||||||
|
git commit -m "Regenerado pubspec.lock"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Problemas con FVM
|
||||||
|
|
||||||
|
### Error: "fvm: command not found"
|
||||||
|
|
||||||
|
**Síntoma:**
|
||||||
|
```
|
||||||
|
zsh: command not found: fvm
|
||||||
|
```
|
||||||
|
|
||||||
|
**Causa:** FVM no está en el PATH.
|
||||||
|
|
||||||
|
**Solución:**
|
||||||
|
```bash
|
||||||
|
# Agregar al PATH
|
||||||
|
# Linux/macOS (.bashrc o .zshrc):
|
||||||
|
export PATH="$PATH":"$HOME/.pub-cache/bin"
|
||||||
|
|
||||||
|
# Reiniciar terminal
|
||||||
|
source ~/.zshrc # o ~/.bashrc
|
||||||
|
|
||||||
|
# Verificar
|
||||||
|
fvm --version
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Error: "Flutter SDK not found"
|
||||||
|
|
||||||
|
**Síntoma:**
|
||||||
|
```
|
||||||
|
FVM: Flutter SDK not found at /Users/you/.fvm/versions/3.44.0
|
||||||
|
```
|
||||||
|
|
||||||
|
**Causa:** La versión no está instalada.
|
||||||
|
|
||||||
|
**Solución:**
|
||||||
|
```bash
|
||||||
|
# Instalar la versión
|
||||||
|
fvm install 3.44.0
|
||||||
|
|
||||||
|
# Listar versiones instaladas
|
||||||
|
fvm list
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### IDE no reconoce el SDK de FVM
|
||||||
|
|
||||||
|
**Síntoma:** Android Studio usa Flutter global en lugar de `.fvm/flutter_sdk`.
|
||||||
|
|
||||||
|
**Solución:**
|
||||||
|
|
||||||
|
**Android Studio:**
|
||||||
|
1. Settings → Languages & Frameworks → Flutter
|
||||||
|
2. Flutter SDK path: `<proyecto>/.fvm/flutter_sdk`
|
||||||
|
|
||||||
|
**VS Code:**
|
||||||
|
```json
|
||||||
|
// .vscode/settings.json
|
||||||
|
{
|
||||||
|
"dart.flutterSdkPath": ".fvm/flutter_sdk"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Downgrade de versiones
|
||||||
|
|
||||||
|
### Bajar de Flutter 3.44 a 3.22
|
||||||
|
|
||||||
|
**Razón:** Linux tiene problemas con Java 21 + Flutter 3.44.
|
||||||
|
|
||||||
|
**Proceso:**
|
||||||
|
```bash
|
||||||
|
# 1. Instalar la versión LTS
|
||||||
|
fvm install 3.22.0
|
||||||
|
fvm use 3.22.0
|
||||||
|
|
||||||
|
# 2. Actualizar pubspec.yaml
|
||||||
|
# environment:
|
||||||
|
# sdk: '>=3.4.0 <4.0.0'
|
||||||
|
# flutter: '>=3.22.0'
|
||||||
|
|
||||||
|
# 3. Actualizar dependencias
|
||||||
|
fvm flutter pub get
|
||||||
|
|
||||||
|
# 4. Commitear cambios
|
||||||
|
git add .fvm/fvm_config.json pubspec.yaml pubspec.lock
|
||||||
|
git commit -m "Downgrade a Flutter 3.22 LTS"
|
||||||
|
|
||||||
|
# 5. Notificar al equipo para que todos hagan:
|
||||||
|
fvm install 3.22.0
|
||||||
|
fvm flutter pub get
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Tabla de compatibilidad
|
||||||
|
|
||||||
|
| Flutter | Dart | Java | Riverpod | Dio |
|
||||||
|
|---------|------|------|----------|-----|
|
||||||
|
| 3.44.0 | 3.8 | 17 | ^2.6.1 | ^5.4.0 |
|
||||||
|
| 3.22.0 | 3.4 | 17 | ^2.4.0 | ^5.3.0 |
|
||||||
|
| 3.19.0 | 3.3 | 17 | ^2.3.0 | ^5.2.0 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Verificar versiones actuales
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Flutter y Dart
|
||||||
|
flutter --version
|
||||||
|
|
||||||
|
# Java
|
||||||
|
java -version
|
||||||
|
|
||||||
|
# Python
|
||||||
|
python --version
|
||||||
|
|
||||||
|
# pip
|
||||||
|
pip --version
|
||||||
|
|
||||||
|
# Git
|
||||||
|
git --version
|
||||||
|
|
||||||
|
# FVM (si lo usas)
|
||||||
|
fvm --version
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Siguiente paso
|
||||||
|
|
||||||
|
- [Debug del simulador](03-debug-simulador.md) — verificar estado del backend
|
||||||
|
- [Errores comunes](01-errores-comunes.md) — volver a problemas generales
|
||||||
Reference in New Issue
Block a user