#!/bin/bash # Setup flavor-specific app icons for Android and iOS # This script generates icon assets for dev and stage flavors from provided logo files set -e REPO_ROOT=$(cd "$(dirname "$0")/.." && pwd) cd "$REPO_ROOT" # Color output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' echo "${YELLOW}Setting up flavor-specific app icons...${NC}" # Check if ImageMagick is installed if ! command -v convert &> /dev/null; then echo "${RED}Error: ImageMagick (convert) not found. Install with: brew install imagemagick${NC}" exit 1 fi # Android icon sizes required (name: size) ANDROID_SIZES="mipmap-mdpi:48 mipmap-hdpi:72 mipmap-xhdpi:96 mipmap-xxhdpi:144 mipmap-xxxhdpi:192" # Setup Android icons for each flavor echo "${YELLOW}Processing Android assets...${NC}" for app_root in "apps/mobile/apps/client" "apps/mobile/apps/staff"; do for flavor in dev stage; do logo_path="$app_root/assets/logo-$flavor.png" if [[ ! -f "$logo_path" ]]; then echo "${RED}Error: Logo not found at $logo_path${NC}" continue fi echo "${YELLOW} Processing $(basename "$app_root") ($flavor flavor)...${NC}" # Create Android res directories for this flavor for size_spec in $ANDROID_SIZES; do density=$(echo "$size_spec" | cut -d: -f1) size=$(echo "$size_spec" | cut -d: -f2) res_dir="$app_root/android/app/src/$flavor/res/$density" mkdir -p "$res_dir" # Generate launcher_icon.png icon_path="$res_dir/launcher_icon.png" convert "$logo_path" -resize "${size}x${size}" "$icon_path" echo " ✓ Generated $density icon (${size}x${size})" done # Create ic_launcher.xml for adaptive icon (Android 8.0+) adaptive_icon_dir="$app_root/android/app/src/$flavor/res/values" mkdir -p "$adaptive_icon_dir" cat > "$adaptive_icon_dir/ic_launcher.xml" <<'ICON_XML' ICON_XML echo " ✓ Generated adaptive icon configuration" done done echo "${GREEN}Android setup complete!${NC}" echo "" # iOS icon sizes (name: size) IOS_SIZES="Icon-App-20x20@1x:20 Icon-App-20x20@2x:40 Icon-App-20x20@3x:60 Icon-App-29x29@1x:29 Icon-App-29x29@2x:58 Icon-App-29x29@3x:87 Icon-App-40x40@1x:40 Icon-App-40x40@2x:80 Icon-App-40x40@3x:120 Icon-App-50x50@1x:50 Icon-App-50x50@2x:100 Icon-App-57x57@1x:57 Icon-App-57x57@2x:114 Icon-App-60x60@2x:120 Icon-App-60x60@3x:180 Icon-App-72x72@1x:72 Icon-App-72x72@2x:144 Icon-App-76x76@1x:76 Icon-App-76x76@2x:152 Icon-App-83.5x83.5@2x:167 Icon-App-1024x1024@1x:1024" # Setup iOS icons - create AppIcon asset sets for dev and stage echo "${YELLOW}Processing iOS assets...${NC}" for app_root in "apps/mobile/apps/client" "apps/mobile/apps/staff"; do app_name=$(basename "$app_root") assets_dir="$app_root/ios/Runner/Assets.xcassets" echo "${YELLOW} Setting up iOS for $app_name...${NC}" for flavor in dev stage; do logo_path="$app_root/assets/logo-$flavor.png" asset_set_name="AppIcon-$flavor" asset_dir="$assets_dir/$asset_set_name.appiconset" mkdir -p "$asset_dir" # Create Contents.json template for iOS AppIcon cp "$assets_dir/AppIcon.appiconset/Contents.json" "$asset_dir/Contents.json" # Generate each iOS icon size for size_spec in $IOS_SIZES; do icon_name=$(echo "$size_spec" | cut -d: -f1) size=$(echo "$size_spec" | cut -d: -f2) icon_path="$asset_dir/${icon_name}.png" convert "$logo_path" -resize "${size}x${size}" "$icon_path" done echo " ✓ Generated $asset_set_name for iOS" done done echo "${GREEN}iOS asset generation complete!${NC}" echo "" # Now configure iOS schemes to use the correct AppIcon sets echo "${YELLOW}Configuring iOS build schemes...${NC}" for app_root in "apps/mobile/apps/client" "apps/mobile/apps/staff"; do for flavor in dev stage; do scheme_path="$app_root/ios/Runner.xcodeproj/xcshareddata/xcschemes/${flavor}.xcscheme" if [[ -f "$scheme_path" ]]; then # We'll use a more direct approach with xcodebuild settings echo " ✓ Scheme exists for $flavor flavor" fi done done echo "" echo "${GREEN}✓ All flavor icons have been generated!${NC}" echo "" echo "${YELLOW}Next steps for iOS:${NC}" echo "1. Open the Xcode project in Xcode:" echo " open $app_root/ios/Runner.xcworkspace" echo "" echo "2. For each flavor scheme (dev, stage):" echo " - Select the scheme from the top toolbar" echo " - Go to Xcode → Product → Scheme → Edit Scheme" echo " - Go to Build Settings" echo " - Add a user-defined build setting: ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon-dev (or AppIcon-stage)" echo "" echo "3. Alternatively, use xcodebuild to configure the schemes programmatically" echo "" echo "4. Version control: Add the generated icons to git"