# App Choferes (Flutter)

##### Todos los repositorios se guardan en:

```
C:\\overskull\\

```

---

#### 🧩 **1. Versiones necesarias para este proyecto**

<table id="bkmrk-herramienta-versi%C3%B3n-"><thead><tr><th>Herramienta</th><th>Versión</th></tr></thead><tbody><tr><td>**Flutter**</td><td>1.17.5</td></tr><tr><td>**Dart**</td><td>Incluido en Flutter 1.17.5</td></tr><tr><td>**JDK**</td><td>Amazon Corretto 8</td></tr><tr><td>**Gradle**</td><td>5.6.2 (wrapper del proyecto)</td></tr></tbody></table>

⚠️ **Este proyecto es LEGACY. No actualizar versiones.**

---

#### 🔽 **2. Descargar Flutter (versión obligatoria del proyecto)**

Descargar Flutter **1.17.5** desde el archivo histórico:

[https://docs.flutter.dev/release/archive](https://docs.flutter.dev/release/archive)

📌 Guardar Flutter en:

```
C:\\overskull\\SDKFlutter\\

```

Ejemplo:

```
C:\\overskull\\SDKFlutter\\sdk1.17.5\\flutter

```

📌 **No usar Flutter global del sistema.**

---

#### 🔧 **3. Instalar JDK 8 (Amazon Corretto)**

Descargar desde:

[https://docs.aws.amazon.com/corretto/latest/corretto-8-ug/downloads-list.html](https://docs.aws.amazon.com/corretto/latest/corretto-8-ug/downloads-list.html)

📌 Guardar Java en:

```
C:\\overskull\\java\\

```

Ejemplo:

```
C:\\overskull\\java\\amazon-corretto-8

```

---

#### 🚀 **4. Clonar el proyecto**

```bash
git clone git@storegit.overskull.com:shalom-over-app/shalom_choferes.git

```

Entrar al proyecto:

```bash
cd shalom_choferes

```

---

#### 📁 **5. build.gradle (nivel proyecto)**

Ruta:

```
C:\\overskull\\shalom_choferes\\android\\build.gradle

```

Ejemplo de referencia:

```bash
buildscript {
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.0'
        classpath 'com.google.gms:google-services:4.2.0'
    }

    subprojects {
        project.configurations.all {
            resolutionStrategy.eachDependency { details ->
                if (details.requested.group == 'com.android.support'
                        && !details.requested.name.contains('multidex') ) {
                    details.useVersion "27.1.1"
                }
                /*if (details.requested.group == 'androidx.core'
                        && !details.requested.name.contains('androidx') ) {
                    details.useVersion "1.0.1"
                }
                if (details.requested.group == 'androidx.lifecycle' &&
                        !details.requested.name.contains('androidx')) {
                    details.useVersion "2.0.0"
                }*/

                if (details.requested.group == 'androidx.core') {
                    details.useVersion "1.0.1"
                }
                if (details.requested.group == 'androidx.lifecycle') {
                    details.useVersion "2.0.0"
                }
                if (details.requested.group == 'androidx.versionedparcelable') {
                    details.useVersion "1.0.0"
                }
                if (details.requested.group == 'androidx.fragment') {
                    details.useVersion "1.0.0"
                }
                if (details.requested.group == 'androidx.appcompat') {
                    details.useVersion "1.0.1"
                }
            }
        }
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

rootProject.buildDir = '../build'
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
    project.evaluationDependsOn(':app')
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

```

📌 Este archivo **NO debe modificarse**.

Contiene:

- Android Gradle Plugin **3.5.0**
- Google Services **4.2.0**
- Resolución forzada de dependencias AndroidX y Support Library

⚠️ Cambios aquí pueden romper la compilación.

---

#### 📁 **6. build.gradle (nivel app)**

Ruta:

```
C:\\overskull\\shalom_choferes\\android\\app\\build.gradle

```

Ejemplo de referencia:

```bash
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.0'
}

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}

android { 
    compileSdkVersion 31

    lintOptions {
        disable 'InvalidPackage'
    }
 
    defaultConfig {
        // TODO: Specify your own unique Application ID (<https://developer.android.com/studio/build/application-id.html>).
        applicationId "com.overskull.shalomchoferes"
        minSdkVersion 21
        targetSdkVersion 34
        versionCode 233
        versionName '2.3.3'
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias'] 
            keyPassword keystoreProperties['keyPassword']
            storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
            storePassword keystoreProperties['storePassword']
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
    }
}

flutter {
    source '../..'
}

dependencies {
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}


```

📌 Verificar:

- `compileSdkVersion 31`
- `minSdkVersion 21`
- `targetSdkVersion 34`
- `applicationId "com.overskull.shalomchoferes"`

⚠️ No actualizar dependencias ni plugins.

---

#### ⚙️ **7. Gradle Wrapper (configuración obligatoria)**

Este proyecto **NO usa gradle.properties** para Java.

Editar:

```
C:\\overskull\\shalom_choferes\\android\\gradle\\wrapper\\gradle-wrapper.properties

```

Contenido de referencia:

```
#Fri May 09 09:34:57 PET 2025
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\\://services.gradle.org/distributions/gradle-5.6.2-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

```

📌 **No cambiar la versión de Gradle.**

---

#### 🧰 **8. Configurar la versión de Flutter usada por el proyecto**

Editar:

```
C:\\overskull\\shalom_choferes\\.vscode\\settings.json

```

Contenido:

```json
{
    "dart.flutterSdkPath": "C:\\\\SDKFlutter\\\\sdk1.17.5\\\\flutter"
}

```

---

#### 🧹 **9. Limpiar el proyecto**

```bash
cd android
gradlew clean

```

---

#### 📦 **10. Descargar dependencias**

```bash
flutter pub get

```

---

#### 🎉 **11. Ejecutar el proyecto**

```bash
flutter run

```

---

##### 📌 **Notas importantes**

- Este proyecto usa **Flutter 1.17.5 + Java 8**.
- ❌ No actualizar Flutter, Java ni Gradle.
- ❌ No migrar AndroidX ni cambiar versiones forzadas.
- El archivo `android/build.gradle` contiene resoluciones críticas.
- Proyecto recomendado **solo para mantenimiento**.

Si falla la compilación:

```bash
flutter clean
flutter pub get

```