Skip to content
Snippets Groups Projects
build_application_resources.sh 3.34 KiB
Newer Older
Benoît Harrault's avatar
Benoît Harrault committed
#! /bin/bash

# Check dependencies
command -v inkscape >/dev/null 2>&1 || {
  echo >&2 "I require inkscape but it's not installed. Aborting."
  exit 1
}
command -v scour >/dev/null 2>&1 || {
  echo >&2 "I require scour but it's not installed. Aborting."
  exit 1
}
command -v optipng >/dev/null 2>&1 || {
  echo >&2 "I require optipng but it's not installed. Aborting."
  exit 1
}

CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
BASE_DIR="$(dirname "$(dirname "${CURRENT_DIR}")")"

SOURCE_ICON="${CURRENT_DIR}/icon.svg"
SOURCE_FASTLANE="${CURRENT_DIR}/featureGraphic.svg"
SOURCE_LAUNCH_IMAGE="${CURRENT_DIR}/icon.svg"

OPTIPNG_OPTIONS="-preserve -quiet -o7"

if [ ! -f "${SOURCE_ICON}" ]; then
  echo "Missing file: ${SOURCE_ICON}"
fi

if [ ! -f "${SOURCE_FASTLANE}" ]; then
  echo "Missing file: ${SOURCE_FASTLANE}"
fi

if [ ! -f "${SOURCE_LAUNCH_IMAGE}" ]; then
  echo "Missing file: ${SOURCE_LAUNCH_IMAGE}"
fi

function optimize_svg() {
  SVG="$1"

  cp ${SVG} ${SVG}.tmp
  scour \
    --remove-descriptive-elements \
    --enable-id-stripping \
    --enable-viewboxing \
    --enable-comment-stripping \
    --nindent=4 \
    --quiet \
    -i ${SVG}.tmp \
    -o ${SVG}
  rm ${SVG}.tmp
}

# optimize source svg files
optimize_svg ${SOURCE_ICON}
optimize_svg ${SOURCE_FASTLANE}
optimize_svg ${SOURCE_LAUNCH_IMAGE}

# build icons
function build_application_icon() {
  ICON_SIZE="$1"
  TARGET="$2"

  echo "Building ${TARGET}"

  TARGET_PNG="${TARGET}.png"

  inkscape \
    --export-width=${ICON_SIZE} \
    --export-height=${ICON_SIZE} \
    --export-filename=${TARGET_PNG} \
    ${SOURCE_ICON}

  optipng ${OPTIPNG_OPTIONS} ${TARGET_PNG}
}

# build fastlane image
function build_fastlane_image() {
  WIDTH="$1"
  HEIGHT="$2"
  TARGET="$3"

  echo "Building ${TARGET}"

  TARGET_PNG="${TARGET}.png"

  inkscape \
    --export-width=${WIDTH} \
    --export-height=${HEIGHT} \
    --export-filename=${TARGET_PNG} \
    ${SOURCE_FASTLANE}

  optipng ${OPTIPNG_OPTIONS} ${TARGET_PNG}
}

# build launch images (splash screen)
function build_launch_image() {
  ICON_SIZE="$1"
  TARGET="$2"

  echo "Building ${TARGET}"

  TARGET_PNG="${TARGET}.png"

  inkscape \
    --export-width=${ICON_SIZE} \
    --export-height=${ICON_SIZE} \
    --export-filename=${TARGET_PNG} \
    ${SOURCE_LAUNCH_IMAGE}

  optipng ${OPTIPNG_OPTIONS} ${TARGET_PNG}
}

build_application_icon 72 ${BASE_DIR}/android/app/src/main/res/mipmap-hdpi/ic_launcher
build_application_icon 48 ${BASE_DIR}/android/app/src/main/res/mipmap-mdpi/ic_launcher
build_application_icon 96 ${BASE_DIR}/android/app/src/main/res/mipmap-xhdpi/ic_launcher
build_application_icon 144 ${BASE_DIR}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher
build_application_icon 192 ${BASE_DIR}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher
build_application_icon 512 ${BASE_DIR}/fastlane/metadata/android/en-US/images/icon

build_launch_image 72 ${BASE_DIR}/android/app/src/main/res/mipmap-hdpi/launch_image
build_launch_image 48 ${BASE_DIR}/android/app/src/main/res/mipmap-mdpi/launch_image
build_launch_image 96 ${BASE_DIR}/android/app/src/main/res/mipmap-xhdpi/launch_image
build_launch_image 144 ${BASE_DIR}/android/app/src/main/res/mipmap-xxhdpi/launch_image
build_launch_image 192 ${BASE_DIR}/android/app/src/main/res/mipmap-xxxhdpi/launch_image

build_fastlane_image 1024 500 ${BASE_DIR}/fastlane/metadata/android/en-US/images/featureGraphic