From 3926f9289d063dbe424ba580e32f8a5bf384ad42 Mon Sep 17 00:00:00 2001 From: Matthew Raymer Date: Wed, 13 Aug 2025 06:42:32 +0000 Subject: [PATCH] fix(build): update ImageMagick commands to use modern v7 syntax - Replace deprecated 'convert' commands with 'magick' for ImageMagick v7+ - Add automatic version detection with fallback to 'convert' for v6 compatibility - Update generate-android-icons.sh and generate-icons.sh scripts - Eliminate deprecation warnings during Android builds - Maintain backward compatibility for older ImageMagick installations The scripts now automatically detect ImageMagick version and use the appropriate command syntax, eliminating the "convert command is deprecated" warnings while preserving functionality across different ImageMagick versions. --- scripts/generate-android-icons.sh | 50 +++++++++++++----- scripts/generate-icons.sh | 87 +++++++++++++++++++++++++------ 2 files changed, 108 insertions(+), 29 deletions(-) diff --git a/scripts/generate-android-icons.sh b/scripts/generate-android-icons.sh index b2279a98..aa2775ca 100755 --- a/scripts/generate-android-icons.sh +++ b/scripts/generate-android-icons.sh @@ -20,9 +20,16 @@ if [ ! -f "$ASSETS_DIR/icon.png" ]; then exit 1 fi -# Check if ImageMagick is available -if ! command -v convert &> /dev/null; then - echo "[ERROR] ImageMagick (convert) not found. Please install ImageMagick." +# Check if ImageMagick is available and determine the correct command +IMAGEMAGICK_CMD="" +if command -v magick &> /dev/null; then + IMAGEMAGICK_CMD="magick" + echo "[INFO] Using ImageMagick v7+ (magick command)" +elif command -v convert &> /dev/null; then + IMAGEMAGICK_CMD="convert" + echo "[INFO] Using ImageMagick v6 (convert command)" +else + echo "[ERROR] ImageMagick not found. Please install ImageMagick." echo " Arch: sudo pacman -S imagemagick" echo " Ubuntu: sudo apt-get install imagemagick" echo " macOS: brew install imagemagick" @@ -39,20 +46,35 @@ mkdir -p "$ANDROID_RES_DIR/mipmap-anydpi-v26" echo "[INFO] Generating launcher icons..." +# Function to resize image using the appropriate ImageMagick command +resize_image() { + local input="$1" + local output="$2" + local size="$3" + + if [ "$IMAGEMAGICK_CMD" = "magick" ]; then + # ImageMagick v7+ syntax + magick "$input" -resize "${size}x${size}" "$output" + else + # ImageMagick v6 syntax + convert "$input" -resize "${size}x${size}" "$output" + fi +} + # Generate launcher icons for different densities # Android launcher icon sizes: mdpi=48, hdpi=72, xhdpi=96, xxhdpi=144, xxxhdpi=192 -convert "$ASSETS_DIR/icon.png" -resize 48x48 "$ANDROID_RES_DIR/mipmap-mdpi/ic_launcher.png" -convert "$ASSETS_DIR/icon.png" -resize 72x72 "$ANDROID_RES_DIR/mipmap-hdpi/ic_launcher.png" -convert "$ASSETS_DIR/icon.png" -resize 96x96 "$ANDROID_RES_DIR/mipmap-xhdpi/ic_launcher.png" -convert "$ASSETS_DIR/icon.png" -resize 144x144 "$ANDROID_RES_DIR/mipmap-xxhdpi/ic_launcher.png" -convert "$ASSETS_DIR/icon.png" -resize 192x192 "$ANDROID_RES_DIR/mipmap-xxxhdpi/ic_launcher.png" +resize_image "$ASSETS_DIR/icon.png" "$ANDROID_RES_DIR/mipmap-mdpi/ic_launcher.png" 48 +resize_image "$ASSETS_DIR/icon.png" "$ANDROID_RES_DIR/mipmap-hdpi/ic_launcher.png" 72 +resize_image "$ASSETS_DIR/icon.png" "$ANDROID_RES_DIR/mipmap-xhdpi/ic_launcher.png" 96 +resize_image "$ASSETS_DIR/icon.png" "$ANDROID_RES_DIR/mipmap-xxhdpi/ic_launcher.png" 144 +resize_image "$ASSETS_DIR/icon.png" "$ANDROID_RES_DIR/mipmap-xxxhdpi/ic_launcher.png" 192 # Generate round launcher icons -convert "$ASSETS_DIR/icon.png" -resize 48x48 "$ANDROID_RES_DIR/mipmap-mdpi/ic_launcher_round.png" -convert "$ASSETS_DIR/icon.png" -resize 72x72 "$ANDROID_RES_DIR/mipmap-hdpi/ic_launcher_round.png" -convert "$ASSETS_DIR/icon.png" -resize 96x96 "$ANDROID_RES_DIR/mipmap-xhdpi/ic_launcher_round.png" -convert "$ASSETS_DIR/icon.png" -resize 144x144 "$ANDROID_RES_DIR/mipmap-xxhdpi/ic_launcher_round.png" -convert "$ASSETS_DIR/icon.png" -resize 192x192 "$ANDROID_RES_DIR/mipmap-xxxhdpi/ic_launcher_round.png" +resize_image "$ASSETS_DIR/icon.png" "$ANDROID_RES_DIR/mipmap-mdpi/ic_launcher_round.png" 48 +resize_image "$ASSETS_DIR/icon.png" "$ANDROID_RES_DIR/mipmap-hdpi/ic_launcher_round.png" 72 +resize_image "$ASSETS_DIR/icon.png" "$ANDROID_RES_DIR/mipmap-xhdpi/ic_launcher_round.png" 96 +resize_image "$ASSETS_DIR/icon.png" "$ANDROID_RES_DIR/mipmap-xxhdpi/ic_launcher_round.png" 144 +resize_image "$ASSETS_DIR/icon.png" "$ANDROID_RES_DIR/mipmap-xxxhdpi/ic_launcher_round.png" 192 # Create simple launcher XML files (no adaptive icons for now) cat > "$ANDROID_RES_DIR/mipmap-anydpi-v26/ic_launcher.xml" << 'EOF' @@ -72,7 +94,7 @@ cat > "$ANDROID_RES_DIR/mipmap-anydpi-v26/ic_launcher_round.xml" << 'EOF' EOF # Create foreground mipmap files for adaptive icons -convert "$ASSETS_DIR/icon.png" -resize 108x108 "$ANDROID_RES_DIR/mipmap-anydpi-v26/ic_launcher_foreground.png" +resize_image "$ASSETS_DIR/icon.png" "$ANDROID_RES_DIR/mipmap-anydpi-v26/ic_launcher_foreground.png" 108 echo "[SUCCESS] Generated Android launcher icons:" echo " - mipmap-mdpi/ic_launcher.png (48x48)" diff --git a/scripts/generate-icons.sh b/scripts/generate-icons.sh index bed6fd14..3f0062ed 100755 --- a/scripts/generate-icons.sh +++ b/scripts/generate-icons.sh @@ -1,22 +1,79 @@ #!/bin/bash +# TimeSafari Android Icon Generation Script (Placeholder Icons) +# Generates placeholder Android launcher icons with "TS" text +# Author: Matthew Raymer + +set -e + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(dirname "$SCRIPT_DIR")" +ANDROID_RES_DIR="$PROJECT_ROOT/android/app/src/main/res" + +echo "=== TimeSafari Android Placeholder Icon Generation ===" +echo "[$(date '+%Y-%m-%d %H:%M:%S')] [INFO] Starting Android placeholder icon generation" + +# Check if ImageMagick is available and determine the correct command +IMAGEMAGICK_CMD="" +if command -v magick &> /dev/null; then + IMAGEMAGICK_CMD="magick" + echo "[INFO] Using ImageMagick v7+ (magick command)" +elif command -v convert &> /dev/null; then + IMAGEMAGICK_CMD="convert" + echo "[INFO] Using ImageMagick v6 (convert command)" +else + echo "[ERROR] ImageMagick not found. Please install ImageMagick." + echo " Arch: sudo pacman -S imagemagick" + echo " Ubuntu: sudo apt-get install imagemagick" + echo " macOS: brew install imagemagick" + exit 1 +fi + # Create directories if they don't exist -mkdir -p android/app/src/main/res/mipmap-mdpi -mkdir -p android/app/src/main/res/mipmap-hdpi -mkdir -p android/app/src/main/res/mipmap-xhdpi -mkdir -p android/app/src/main/res/mipmap-xxhdpi -mkdir -p android/app/src/main/res/mipmap-xxxhdpi +mkdir -p "$ANDROID_RES_DIR/mipmap-mdpi" +mkdir -p "$ANDROID_RES_DIR/mipmap-hdpi" +mkdir -p "$ANDROID_RES_DIR/mipmap-xhdpi" +mkdir -p "$ANDROID_RES_DIR/mipmap-xxhdpi" +mkdir -p "$ANDROID_RES_DIR/mipmap-xxxhdpi" + +# Function to generate placeholder icon using the appropriate ImageMagick command +generate_placeholder_icon() { + local size="$1" + local output="$2" + local pointsize="$3" + + if [ "$IMAGEMAGICK_CMD" = "magick" ]; then + # ImageMagick v7+ syntax + magick -size "${size}x${size}" xc:blue -gravity center -pointsize "$pointsize" -fill white -annotate 0 "TS" "$output" + else + # ImageMagick v6 syntax + convert -size "${size}x${size}" xc:blue -gravity center -pointsize "$pointsize" -fill white -annotate 0 "TS" "$output" + fi +} + +echo "[INFO] Generating placeholder launcher icons..." # Generate placeholder icons using ImageMagick -convert -size 48x48 xc:blue -gravity center -pointsize 20 -fill white -annotate 0 "TS" android/app/src/main/res/mipmap-mdpi/ic_launcher.png -convert -size 72x72 xc:blue -gravity center -pointsize 30 -fill white -annotate 0 "TS" android/app/src/main/res/mipmap-hdpi/ic_launcher.png -convert -size 96x96 xc:blue -gravity center -pointsize 40 -fill white -annotate 0 "TS" android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -convert -size 144x144 xc:blue -gravity center -pointsize 60 -fill white -annotate 0 "TS" android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -convert -size 192x192 xc:blue -gravity center -pointsize 80 -fill white -annotate 0 "TS" android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +generate_placeholder_icon 48 "$ANDROID_RES_DIR/mipmap-mdpi/ic_launcher.png" 20 +generate_placeholder_icon 72 "$ANDROID_RES_DIR/mipmap-hdpi/ic_launcher.png" 30 +generate_placeholder_icon 96 "$ANDROID_RES_DIR/mipmap-xhdpi/ic_launcher.png" 40 +generate_placeholder_icon 144 "$ANDROID_RES_DIR/mipmap-xxhdpi/ic_launcher.png" 60 +generate_placeholder_icon 192 "$ANDROID_RES_DIR/mipmap-xxxhdpi/ic_launcher.png" 80 + +echo "[INFO] Copying to round versions..." # Copy to round versions -cp android/app/src/main/res/mipmap-mdpi/ic_launcher.png android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -cp android/app/src/main/res/mipmap-hdpi/ic_launcher.png android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -cp android/app/src/main/res/mipmap-xhdpi/ic_launcher.png android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -cp android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -cp android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png \ No newline at end of file +cp "$ANDROID_RES_DIR/mipmap-mdpi/ic_launcher.png" "$ANDROID_RES_DIR/mipmap-mdpi/ic_launcher_round.png" +cp "$ANDROID_RES_DIR/mipmap-hdpi/ic_launcher.png" "$ANDROID_RES_DIR/mipmap-hdpi/ic_launcher_round.png" +cp "$ANDROID_RES_DIR/mipmap-xhdpi/ic_launcher.png" "$ANDROID_RES_DIR/mipmap-xhdpi/ic_launcher_round.png" +cp "$ANDROID_RES_DIR/mipmap-xxhdpi/ic_launcher.png" "$ANDROID_RES_DIR/mipmap-xxhdpi/ic_launcher_round.png" +cp "$ANDROID_RES_DIR/mipmap-xxxhdpi/ic_launcher.png" "$ANDROID_RES_DIR/mipmap-xxxhdpi/ic_launcher_round.png" + +echo "[SUCCESS] Generated Android placeholder launcher icons:" +echo " - mipmap-mdpi/ic_launcher.png (48x48)" +echo " - mipmap-hdpi/ic_launcher.png (72x72)" +echo " - mipmap-xhdpi/ic_launcher.png (96x96)" +echo " - mipmap-xxhdpi/ic_launcher.png (144x144)" +echo " - mipmap-xxxhdpi/ic_launcher.png (192x192)" +echo " - All round versions created" +echo "[SUCCESS] Android placeholder icon generation completed successfully!" \ No newline at end of file