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