feat: synchronisation mode deconnecte fin chat et stats
This commit is contained in:
204
app/android.sh
Executable file
204
app/android.sh
Executable file
@@ -0,0 +1,204 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script de génération du bundle Android pour GEOSECTOR
|
||||
# Usage: ./android.sh
|
||||
|
||||
set -e # Arrêter le script en cas d'erreur
|
||||
|
||||
# Couleurs pour les messages
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Fonction pour afficher les messages
|
||||
print_message() {
|
||||
echo -e "${BLUE}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
print_success() {
|
||||
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
print_warning() {
|
||||
echo -e "${YELLOW}[WARNING]${NC} $1"
|
||||
}
|
||||
|
||||
# Fonction pour gérer les erreurs
|
||||
handle_error() {
|
||||
print_error "Une erreur est survenue lors de l'exécution de la commande"
|
||||
print_error "Ligne $1"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Trap pour capturer les erreurs
|
||||
trap 'handle_error $LINENO' ERR
|
||||
|
||||
# Vérifier que nous sommes dans le bon dossier
|
||||
if [ ! -f "pubspec.yaml" ]; then
|
||||
print_error "Ce script doit être exécuté depuis le dossier racine de l'application Flutter"
|
||||
print_error "Fichier pubspec.yaml introuvable"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
print_message "========================================="
|
||||
print_message " GEOSECTOR - Génération Bundle Android"
|
||||
print_message "========================================="
|
||||
echo
|
||||
|
||||
# Vérifier que Flutter est installé
|
||||
if ! command -v flutter &> /dev/null; then
|
||||
print_error "Flutter n'est pas installé ou n'est pas dans le PATH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Récupérer la version depuis pubspec.yaml
|
||||
VERSION=$(grep "^version:" pubspec.yaml | sed 's/version: //' | sed 's/+/-/')
|
||||
if [ -z "$VERSION" ]; then
|
||||
print_error "Impossible de récupérer la version depuis pubspec.yaml"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Extraire le version code
|
||||
VERSION_CODE=$(echo $VERSION | cut -d'-' -f2)
|
||||
if [ -z "$VERSION_CODE" ]; then
|
||||
print_error "Impossible d'extraire le version code"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
print_message "Version détectée : $VERSION"
|
||||
print_message "Version code : $VERSION_CODE"
|
||||
echo
|
||||
|
||||
# Vérifier la présence du keystore
|
||||
if [ ! -f "android/app/geosector2025.jks" ]; then
|
||||
print_error "Fichier keystore introuvable : android/app/geosector2025.jks"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Vérifier la présence du fichier key.properties
|
||||
if [ ! -f "android/key.properties" ]; then
|
||||
print_error "Fichier key.properties introuvable"
|
||||
print_error "Ce fichier est nécessaire pour signer l'application"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
print_success "Configuration de signature vérifiée"
|
||||
echo
|
||||
|
||||
# Étape 1 : Nettoyer le projet
|
||||
print_message "Étape 1/4 : Nettoyage du projet..."
|
||||
flutter clean
|
||||
if [ $? -eq 0 ]; then
|
||||
print_success "Projet nettoyé"
|
||||
else
|
||||
print_error "Échec du nettoyage du projet"
|
||||
exit 1
|
||||
fi
|
||||
echo
|
||||
|
||||
# Étape 2 : Récupérer les dépendances
|
||||
print_message "Étape 2/4 : Récupération des dépendances..."
|
||||
flutter pub get
|
||||
if [ $? -eq 0 ]; then
|
||||
print_success "Dépendances récupérées"
|
||||
else
|
||||
print_error "Échec de la récupération des dépendances"
|
||||
exit 1
|
||||
fi
|
||||
echo
|
||||
|
||||
# Étape 3 : Analyser le code (optionnel mais recommandé)
|
||||
print_message "Étape 3/4 : Analyse du code Dart..."
|
||||
flutter analyze --no-fatal-infos --no-fatal-warnings || {
|
||||
print_warning "Des avertissements ont été détectés dans le code"
|
||||
read -p "Voulez-vous continuer malgré les avertissements ? (y/n) " -n 1 -r
|
||||
echo
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
print_message "Génération annulée par l'utilisateur"
|
||||
exit 0
|
||||
fi
|
||||
}
|
||||
print_success "Analyse du code terminée"
|
||||
echo
|
||||
|
||||
# Étape 4 : Générer le bundle
|
||||
print_message "Étape 4/4 : Génération du bundle Android..."
|
||||
print_message "Cette opération peut prendre plusieurs minutes..."
|
||||
flutter build appbundle --release
|
||||
if [ $? -eq 0 ]; then
|
||||
print_success "Bundle généré avec succès"
|
||||
else
|
||||
print_error "Échec de la génération du bundle"
|
||||
exit 1
|
||||
fi
|
||||
echo
|
||||
|
||||
# Vérifier que le bundle a été créé
|
||||
BUNDLE_PATH="build/app/outputs/bundle/release/app-release.aab"
|
||||
if [ ! -f "$BUNDLE_PATH" ]; then
|
||||
print_error "Bundle introuvable à l'emplacement attendu : $BUNDLE_PATH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Copier le bundle à la racine avec le nouveau nom
|
||||
FINAL_NAME="geosector-$VERSION_CODE.aab"
|
||||
print_message "Copie du bundle vers : $FINAL_NAME"
|
||||
cp "$BUNDLE_PATH" "$FINAL_NAME"
|
||||
|
||||
if [ -f "$FINAL_NAME" ]; then
|
||||
print_success "Bundle copié avec succès"
|
||||
|
||||
# Afficher la taille du fichier
|
||||
FILE_SIZE=$(du -h "$FINAL_NAME" | cut -f1)
|
||||
print_message "Taille du bundle : $FILE_SIZE"
|
||||
else
|
||||
print_error "Échec de la copie du bundle"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo
|
||||
print_message "========================================="
|
||||
print_success " GÉNÉRATION TERMINÉE AVEC SUCCÈS !"
|
||||
print_message "========================================="
|
||||
echo
|
||||
print_message "Bundle généré : ${GREEN}$FINAL_NAME${NC}"
|
||||
print_message "Version : $VERSION"
|
||||
print_message "Chemin : $(pwd)/$FINAL_NAME"
|
||||
echo
|
||||
print_message "Prochaines étapes :"
|
||||
print_message "1. Tester le bundle sur un appareil Android"
|
||||
print_message "2. Uploader sur Google Play Console"
|
||||
print_message "3. Soumettre pour review"
|
||||
echo
|
||||
|
||||
# Optionnel : Générer aussi l'APK
|
||||
read -p "Voulez-vous aussi générer l'APK pour des tests ? (y/n) " -n 1 -r
|
||||
echo
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
print_message "Génération de l'APK..."
|
||||
flutter build apk --release
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
APK_PATH="build/app/outputs/flutter-apk/app-release.apk"
|
||||
if [ -f "$APK_PATH" ]; then
|
||||
APK_NAME="geosector-$VERSION_CODE.apk"
|
||||
cp "$APK_PATH" "$APK_NAME"
|
||||
print_success "APK généré : $APK_NAME"
|
||||
|
||||
# Afficher la taille de l'APK
|
||||
APK_SIZE=$(du -h "$APK_NAME" | cut -f1)
|
||||
print_message "Taille de l'APK : $APK_SIZE"
|
||||
fi
|
||||
else
|
||||
print_warning "Échec de la génération de l'APK (le bundle a été créé avec succès)"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo
|
||||
print_success "Script terminé !"
|
||||
Reference in New Issue
Block a user