forked from jsnbuchanan/crowd-funder-for-time-pwa
Android build was failing due to missing drawable and mipmap directories for splash screens and launcher icons. iOS was missing complete asset catalog structure for app icons and splash screens. - Create missing Android resource directories (drawable, mipmap-*) - Add splash screen files to Android drawable directory - Generate complete set of Android launcher icons - Create iOS asset catalog structure with proper Contents.json files - Generate 21 iOS assets (app icons + splash screens) using ImageMagick - Add resource validation scripts for both platforms - Enhance Android resource check to auto-create missing directories NOTE: you need to test this from a fresh clone and after an npm install! Android build now completes successfully. iOS assets ready for macOS/Xcode builds. Both platforms have complete resource sets for development.
159 lines
5.1 KiB
Bash
Executable File
159 lines
5.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# TimeSafari Android Resource Check Script
|
|
# Checks for missing Android resources and automatically fixes common issues
|
|
# 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"
|
|
ASSETS_DIR="$PROJECT_ROOT/assets"
|
|
|
|
echo "=== TimeSafari Android Resource Check ==="
|
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [INFO] Checking Android resources"
|
|
|
|
# Function to check if a file exists
|
|
check_file() {
|
|
local file="$1"
|
|
local description="$2"
|
|
if [ -f "$file" ]; then
|
|
echo "[✓] $description: $file"
|
|
return 0
|
|
else
|
|
echo "[✗] $description: $file (MISSING)"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Function to check if a directory exists and has files
|
|
check_directory() {
|
|
local dir="$1"
|
|
local description="$2"
|
|
if [ -d "$dir" ] && [ "$(ls -A "$dir" 2>/dev/null)" ]; then
|
|
echo "[✓] $description: $dir"
|
|
return 0
|
|
else
|
|
echo "[✗] $description: $dir (MISSING OR EMPTY)"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Track issues
|
|
issues_found=0
|
|
fixes_applied=0
|
|
|
|
echo "[INFO] Checking splash screen resources..."
|
|
# Ensure drawable directory exists
|
|
if [ ! -d "$ANDROID_RES_DIR/drawable" ]; then
|
|
echo "[FIX] Creating drawable directory..."
|
|
mkdir -p "$ANDROID_RES_DIR/drawable"
|
|
fixes_applied=$((fixes_applied + 1))
|
|
fi
|
|
|
|
# Check splash screen resources
|
|
if ! check_file "$ANDROID_RES_DIR/drawable/splash.png" "Splash screen (light)"; then
|
|
if [ -f "$ASSETS_DIR/splash.png" ]; then
|
|
echo "[FIX] Copying splash.png to Android resources..."
|
|
cp "$ASSETS_DIR/splash.png" "$ANDROID_RES_DIR/drawable/splash.png"
|
|
fixes_applied=$((fixes_applied + 1))
|
|
else
|
|
issues_found=$((issues_found + 1))
|
|
fi
|
|
fi
|
|
|
|
if ! check_file "$ANDROID_RES_DIR/drawable/splash_dark.png" "Splash screen (dark)"; then
|
|
if [ -f "$ASSETS_DIR/splash_dark.png" ]; then
|
|
echo "[FIX] Copying splash_dark.png to Android resources..."
|
|
cp "$ASSETS_DIR/splash_dark.png" "$ANDROID_RES_DIR/drawable/splash_dark.png"
|
|
fixes_applied=$((fixes_applied + 1))
|
|
else
|
|
issues_found=$((issues_found + 1))
|
|
fi
|
|
fi
|
|
|
|
echo "[INFO] Checking launcher icon resources..."
|
|
# Ensure mipmap directories exist
|
|
mipmap_dirs=("mdpi" "hdpi" "xhdpi" "xxhdpi" "xxxhdpi" "anydpi-v26")
|
|
for dir in "${mipmap_dirs[@]}"; do
|
|
if [ ! -d "$ANDROID_RES_DIR/mipmap-$dir" ]; then
|
|
echo "[FIX] Creating mipmap-$dir directory..."
|
|
mkdir -p "$ANDROID_RES_DIR/mipmap-$dir"
|
|
fixes_applied=$((fixes_applied + 1))
|
|
fi
|
|
done
|
|
|
|
# Check launcher icon resources
|
|
required_icons=(
|
|
"mipmap-mdpi/ic_launcher.png"
|
|
"mipmap-hdpi/ic_launcher.png"
|
|
"mipmap-xhdpi/ic_launcher.png"
|
|
"mipmap-xxhdpi/ic_launcher.png"
|
|
"mipmap-xxxhdpi/ic_launcher.png"
|
|
"mipmap-anydpi-v26/ic_launcher.xml"
|
|
"mipmap-anydpi-v26/ic_launcher_round.xml"
|
|
)
|
|
|
|
missing_icons=0
|
|
for icon in "${required_icons[@]}"; do
|
|
if ! check_file "$ANDROID_RES_DIR/$icon" "Launcher icon: $icon"; then
|
|
missing_icons=$((missing_icons + 1))
|
|
fi
|
|
done
|
|
|
|
if [ $missing_icons -gt 0 ]; then
|
|
echo "[FIX] Missing launcher icons detected. Running icon generation script..."
|
|
if [ -f "$SCRIPT_DIR/generate-android-icons.sh" ]; then
|
|
"$SCRIPT_DIR/generate-android-icons.sh"
|
|
fixes_applied=$((fixes_applied + 1))
|
|
else
|
|
echo "[ERROR] Icon generation script not found: $SCRIPT_DIR/generate-android-icons.sh"
|
|
issues_found=$((issues_found + 1))
|
|
fi
|
|
fi
|
|
|
|
echo "[INFO] Checking Capacitor platform status..."
|
|
# Check if Android platform is properly initialized
|
|
if [ ! -d "$PROJECT_ROOT/android" ]; then
|
|
echo "[ERROR] Android platform directory not found"
|
|
issues_found=$((issues_found + 1))
|
|
elif [ ! -f "$PROJECT_ROOT/android/app/src/main/AndroidManifest.xml" ]; then
|
|
echo "[ERROR] AndroidManifest.xml not found - platform may be corrupted"
|
|
issues_found=$((issues_found + 1))
|
|
else
|
|
echo "[✓] Android platform appears to be properly initialized"
|
|
fi
|
|
|
|
# Check for common build issues
|
|
echo "[INFO] Checking for common build issues..."
|
|
|
|
# Check for invalid resource names (dashes in filenames)
|
|
invalid_resources=$(find "$ANDROID_RES_DIR" -name "*-*" -type f 2>/dev/null | grep -E '\.(png|jpg|jpeg|gif|xml)$' || true)
|
|
if [ -n "$invalid_resources" ]; then
|
|
echo "[WARNING] Found resources with invalid names (containing dashes):"
|
|
echo "$invalid_resources" | while read -r file; do
|
|
echo " - $file"
|
|
done
|
|
echo "[INFO] Android resource names must contain only lowercase a-z, 0-9, or underscore"
|
|
issues_found=$((issues_found + 1))
|
|
fi
|
|
|
|
# Summary
|
|
echo ""
|
|
echo "=== Resource Check Summary ==="
|
|
if [ $issues_found -eq 0 ] && [ $fixes_applied -eq 0 ]; then
|
|
echo "[SUCCESS] All Android resources are present and valid"
|
|
exit 0
|
|
elif [ $fixes_applied -gt 0 ]; then
|
|
echo "[SUCCESS] Fixed $fixes_applied resource issues automatically"
|
|
if [ $issues_found -gt 0 ]; then
|
|
echo "[WARNING] $issues_found issues remain that require manual attention"
|
|
exit 1
|
|
else
|
|
exit 0
|
|
fi
|
|
else
|
|
echo "[ERROR] Found $issues_found resource issues that require manual attention"
|
|
exit 1
|
|
fi |