#!/bin/bash # Script de compilation et archivage iOS sur Mac mini # Ce script doit être exécuté SUR le Mac mini # Usage: ./ios-build-mac.sh set -e # 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 echo -e "${BLUE}=========================================${NC}" echo -e "${BLUE} GEOSECTOR - Build iOS sur Mac mini${NC}" echo -e "${BLUE}=========================================${NC}" echo "" # Vérifier que nous sommes sur macOS if [[ "$OSTYPE" != "darwin"* ]]; then echo -e "${RED}Erreur: Ce script doit être exécuté sur macOS (Mac mini)${NC}" exit 1 fi # Vérifier que nous sommes dans le bon dossier if [ ! -f "pubspec.yaml" ]; then echo -e "${RED}Erreur: Ce script doit être exécuté depuis le dossier racine de l'application Flutter${NC}" echo -e "${RED}Fichier pubspec.yaml introuvable${NC}" exit 1 fi # Vérifier que Flutter est installé if ! command -v flutter &> /dev/null; then echo -e "${RED}Erreur: Flutter n'est pas installé ou n'est pas dans le PATH${NC}" exit 1 fi # Vérifier que Xcode est installé if ! command -v xcodebuild &> /dev/null; then echo -e "${RED}Erreur: Xcode Command Line Tools ne sont pas installés${NC}" echo -e "${YELLOW}Installation: xcode-select --install${NC}" exit 1 fi # Récupérer la version depuis pubspec.yaml VERSION=$(grep "^version:" pubspec.yaml | sed 's/version: //' | tr -d ' ') VERSION_NAME=$(echo $VERSION | cut -d'+' -f1) VERSION_CODE=$(echo $VERSION | cut -d'+' -f2) if [ -z "$VERSION_CODE" ]; then echo -e "${RED}Impossible de récupérer la version depuis pubspec.yaml${NC}" exit 1 fi echo -e "${YELLOW}Version détectée :${NC} $VERSION" echo -e "${YELLOW}Version name :${NC} $VERSION_NAME" echo -e "${YELLOW}Build number :${NC} $VERSION_CODE" echo "" # Afficher la version de Flutter echo -e "${BLUE}Version Flutter :${NC}" flutter --version echo "" # Étape 1 : Nettoyer le projet echo -e "${BLUE}Étape 1/5 : Nettoyage du projet...${NC}" flutter clean if [ $? -eq 0 ]; then echo -e "${GREEN}✓ Projet nettoyé${NC}" else echo -e "${RED}✗ Échec du nettoyage${NC}" exit 1 fi echo "" # Étape 2 : Récupérer les dépendances Flutter echo -e "${BLUE}Étape 2/5 : Récupération des dépendances Flutter...${NC}" flutter pub get if [ $? -eq 0 ]; then echo -e "${GREEN}✓ Dépendances Flutter récupérées${NC}" else echo -e "${RED}✗ Échec de la récupération des dépendances${NC}" exit 1 fi echo "" # Étape 3 : Installer les pods iOS echo -e "${BLUE}Étape 3/5 : Installation des CocoaPods...${NC}" cd ios pod install if [ $? -eq 0 ]; then echo -e "${GREEN}✓ Pods installés${NC}" cd .. else echo -e "${RED}✗ Échec de l'installation des pods${NC}" cd .. exit 1 fi echo "" # Étape 4 : Build iOS release echo -e "${BLUE}Étape 4/5 : Compilation iOS (release)...${NC}" echo -e "${YELLOW}Cette étape peut prendre 5-10 minutes...${NC}" flutter build ios --release --no-codesign if [ $? -eq 0 ]; then echo -e "${GREEN}✓ Compilation iOS réussie${NC}" else echo -e "${RED}✗ Échec de la compilation iOS${NC}" echo -e "${YELLOW}Consultez les logs ci-dessus pour plus de détails${NC}" exit 1 fi echo "" # Étape 5 : Ouvrir Xcode pour l'archive echo -e "${BLUE}Étape 5/5 : Ouverture de Xcode pour l'archive...${NC}" echo "" echo -e "${YELLOW}L'archive en ligne de commande peut échouer avec les certificats.${NC}" echo -e "${YELLOW}Xcode gère mieux la signature automatique.${NC}" echo "" # Ouvrir Xcode echo -e "${GREEN}Ouverture de Xcode...${NC}" open ios/Runner.xcworkspace echo "" echo -e "${GREEN}=========================================${NC}" echo -e "${GREEN} ✓ BUILD iOS TERMINÉ AVEC SUCCÈS !${NC}" echo -e "${GREEN}=========================================${NC}" echo "" echo -e "${YELLOW}Version :${NC} $VERSION_NAME ($VERSION_CODE)" echo "" echo -e "${BLUE}📱 PROCHAINES ÉTAPES DANS XCODE :${NC}" echo "" echo -e " ${GREEN}1.${NC} Attendre que Xcode charge le projet (quelques secondes)" echo -e " ${GREEN}2.${NC} Vérifier le Team : ${YELLOW}Runner > Signing & Capabilities > Team = 6WT84NWCTC${NC}" echo -e " ${GREEN}3.${NC} Menu : ${YELLOW}Product > Clean Build Folder${NC} (Cmd+Shift+K)" echo -e " ${GREEN}4.${NC} Menu : ${YELLOW}Product > Archive${NC}" echo -e " ${GREEN}5.${NC} Attendre la fin de l'archive (5-10 minutes)" echo -e " ${GREEN}6.${NC} Fenêtre Organizer s'ouvrira automatiquement" echo -e " ${GREEN}7.${NC} Clic sur ${YELLOW}Distribute App${NC}" echo -e " ${GREEN}8.${NC} Sélectionner ${YELLOW}App Store Connect${NC}" echo -e " ${GREEN}9.${NC} Suivre l'assistant d'upload" echo "" echo -e "${BLUE}💡 CONSEILS :${NC}" echo -e " • Si l'archive échoue, vérifier les certificats dans Signing & Capabilities" echo -e " • Automatic signing doit être coché" echo -e " • Team doit être 6WT84NWCTC (Pierre ROTROU)" echo "" echo -e "${YELLOW}Xcode est maintenant ouvert et prêt pour l'archive !${NC}" echo ""