forked from jsnbuchanan/crowd-funder-for-time-pwa
- 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.
107 lines
4.3 KiB
Bash
Executable File
107 lines
4.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# TimeSafari Android Icon Generation Script
|
|
# Generates all required Android launcher icon sizes from assets/icon.png
|
|
# Author: Matthew Raymer
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
|
|
ASSETS_DIR="$PROJECT_ROOT/assets"
|
|
ANDROID_RES_DIR="$PROJECT_ROOT/android/app/src/main/res"
|
|
|
|
echo "=== TimeSafari Android Icon Generation ==="
|
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [INFO] Starting Android icon generation"
|
|
|
|
# Check if source icon exists
|
|
if [ ! -f "$ASSETS_DIR/icon.png" ]; then
|
|
echo "[ERROR] Source icon not found: $ASSETS_DIR/icon.png"
|
|
exit 1
|
|
fi
|
|
|
|
# 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 mipmap directories if they don't exist
|
|
mkdir -p "$ANDROID_RES_DIR/mipmap-hdpi"
|
|
mkdir -p "$ANDROID_RES_DIR/mipmap-mdpi"
|
|
mkdir -p "$ANDROID_RES_DIR/mipmap-xhdpi"
|
|
mkdir -p "$ANDROID_RES_DIR/mipmap-xxhdpi"
|
|
mkdir -p "$ANDROID_RES_DIR/mipmap-xxxhdpi"
|
|
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
|
|
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
|
|
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'
|
|
<?xml version="1.0" encoding="utf-8"?>
|
|
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
|
<background android:drawable="@android:color/white"/>
|
|
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
|
|
</adaptive-icon>
|
|
EOF
|
|
|
|
cat > "$ANDROID_RES_DIR/mipmap-anydpi-v26/ic_launcher_round.xml" << 'EOF'
|
|
<?xml version="1.0" encoding="utf-8"?>
|
|
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
|
<background android:drawable="@android:color/white"/>
|
|
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
|
|
</adaptive-icon>
|
|
EOF
|
|
|
|
# Create foreground mipmap files for adaptive icons
|
|
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)"
|
|
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 " - mipmap-anydpi-v26/ic_launcher_foreground.png (108x108)"
|
|
echo " - Updated mipmap-anydpi-v26 XML files"
|
|
echo "[SUCCESS] Android icon generation completed successfully!" |