#!/bin/bash # Script de correction automatique pour permission_handler_apple # Problème : Le package embarque ses propres headers Flutter qui créent des conflits # Solution : Supprimer le dossier Flutter/ et corriger les imports # Date : 14/10/2025 # Usage : ./fix-permission-handler.sh set -e # Arrêter en cas d'erreur # Détection de l'OS pour la syntaxe sed if [[ "$OSTYPE" == "darwin"* ]]; then # macOS (BSD sed) SED_INPLACE="sed -i ''" else # Linux (GNU sed) SED_INPLACE="sed -i" fi echo "🔧 Fix permission_handler_apple - Correction des conflits Flutter headers" echo "" # Couleurs pour les messages GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' # No Color # Trouver le chemin du package dans .pub-cache # Utilise $PUB_CACHE si défini (cache local projet), sinon $HOME/.pub-cache PUB_CACHE_BASE="${PUB_CACHE:-$HOME/.pub-cache}" PERMISSION_HANDLER_PATH=$(find "${PUB_CACHE_BASE}/hosted/pub.dev" -maxdepth 1 -name "permission_handler_apple-*" -type d | sort -V | tail -n 1) if [ -z "$PERMISSION_HANDLER_PATH" ]; then echo -e "${RED}❌ Erreur : Package permission_handler_apple introuvable dans .pub-cache${NC}" exit 1 fi echo -e "${YELLOW}📦 Package trouvé : $PERMISSION_HANDLER_PATH${NC}" echo "" CLASSES_PATH="$PERMISSION_HANDLER_PATH/ios/Classes" FLUTTER_DIR="$CLASSES_PATH/Flutter" # Étape 1 : Vérifier si le dossier Flutter existe if [ -d "$FLUTTER_DIR" ]; then echo -e "${YELLOW}🗑️ Suppression du dossier Flutter embarqué...${NC}" rm -rf "$FLUTTER_DIR" echo -e "${GREEN}✅ Dossier Flutter supprimé${NC}" else echo -e "${GREEN}✅ Dossier Flutter déjà supprimé${NC}" fi # Étape 2 : Corriger les imports dans PermissionHandlerPlugin.h PLUGIN_HEADER="$CLASSES_PATH/PermissionHandlerPlugin.h" if [ -f "$PLUGIN_HEADER" ]; then if grep -q '#import "Flutter/Flutter.h"' "$PLUGIN_HEADER"; then echo -e "${YELLOW}📝 Correction de PermissionHandlerPlugin.h...${NC}" eval "$SED_INPLACE 's|#import \"Flutter/Flutter.h\"|#import |g' \"$PLUGIN_HEADER\"" echo -e "${GREEN}✅ PermissionHandlerPlugin.h corrigé${NC}" else echo -e "${GREEN}✅ PermissionHandlerPlugin.h déjà corrigé${NC}" fi else echo -e "${RED}⚠️ Fichier PermissionHandlerPlugin.h introuvable${NC}" fi # Étape 3 : Corriger les imports dans PermissionManager.h MANAGER_HEADER="$CLASSES_PATH/PermissionManager.h" if [ -f "$MANAGER_HEADER" ]; then if grep -q '#import "Flutter/Flutter.h"' "$MANAGER_HEADER"; then echo -e "${YELLOW}📝 Correction de PermissionManager.h...${NC}" eval "$SED_INPLACE 's|#import \"Flutter/Flutter.h\"|#import |g' \"$MANAGER_HEADER\"" echo -e "${GREEN}✅ PermissionManager.h corrigé${NC}" else echo -e "${GREEN}✅ PermissionManager.h déjà corrigé${NC}" fi else echo -e "${RED}⚠️ Fichier PermissionManager.h introuvable${NC}" fi echo "" echo -e "${GREEN}🎉 Correction terminée avec succès !${NC}" echo "" echo -e "${YELLOW}ℹ️ Ce script doit être exécuté après chaque 'flutter pub get'${NC}" echo -e "${YELLOW}ℹ️ Raison : Le package permission_handler_apple embarque des headers Flutter qui créent des conflits${NC}" echo ""