diff --git a/demo/fill_screen/Makefile b/demo/fill_screen/Makefile
index 6102726..781b96b 100644
--- a/demo/fill_screen/Makefile
+++ b/demo/fill_screen/Makefile
@@ -123,7 +123,7 @@ $(ANDROID_BUILD_DIR): $(SDL_SRC)/android-project/ $(SB_SRC_DIR)/android/revise_s
ln -nsf $(SDL_MIXER_SRC) $(ANDROID_BUILD_DIR)/app/jni/SDL2_mixer
ln -nsf $(SDL_TTF_SRC) $(ANDROID_BUILD_DIR)/app/jni/SDL2_ttf
$(SB_SRC_DIR)/android/revise_skeleton.sh $(ANDROID_PACKAGE) $(ANDROID_BUILD_DIR) $(ANDROID_MANIFEST) $(ANDROID_APP_MK) $(ANDROID_MK) $(ANDROID_CLASS) \
- $(ANDROID_APP_NAME) $(ANDROID_MIN_TARGET) $(ANDROID_NDK)
+ $(ANDROID_APP_NAME) $(ANDROID_MIN_TARGET) $(ANDROID_NDK) "Fill Screen Test" "18" "22.1.7171670"
# Extend the SDLActivity class
@@ -132,8 +132,8 @@ $(ANDROID_BUILD_DIR)/$(ANDROID_CLASS_DIR)/$(ANDROID_CLASS).java: $(SB_SRC_DIR)/a
# Generate icon
-$(ANDROID_BUILD_DIR)/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: $(SB_SRC_DIR)/android/generate_icon.sh $(SB_DIR)/icons
- $(SB_SRC_DIR)/android/generate_icon.sh $(ANDROID_BUILD_DIR)
+$(ANDROID_BUILD_DIR)/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: $(SB_SRC_DIR)/android/generate_icon.sh $(SB_DIR)/icon
+ $(SB_SRC_DIR)/android/generate_icon.sh $(ANDROID_BUILD_DIR) "../../icon/foreground.png" "../../icon/background.png"
# Run gradle and generate an APK
diff --git a/icon/background.png b/icon/background.png
new file mode 100644
index 0000000..69f9ece
Binary files /dev/null and b/icon/background.png differ
diff --git a/icon/static.png b/icon/static.png
index 5186f68..8d2ce96 100644
Binary files a/icon/static.png and b/icon/static.png differ
diff --git a/src/android/generate_icon.sh b/src/android/generate_icon.sh
index 2885184..1db4195 100755
--- a/src/android/generate_icon.sh
+++ b/src/android/generate_icon.sh
@@ -14,16 +14,14 @@
#
# Create legacy, adaptive, and monochrome adaptive icons as mipmaps, one per device DPI. Draw the foreground onto the background to create
# the legacy icons. Draw the foreground onto a transparent background to create the adaptive icons and save them in mipmap-anydpi-v26 to
-# to target Android API 26 and up. Set the adaptive background by writing the color value to XML.
+# to target Android API 26 and up.
+#
+# The background can be either a hex color or a path to an existing file. If the background is an existing file, mipmaps will be created.
+# Otherwise, it is assumed to be a color, and color values will be added to the XML.
ANDROID_BUILD_DIR=$1
-FOREGROUND=../../icon/foreground.png
-BACKGROUND=#000000
-MANIFEST='\n
-
-
-
-'
+FOREGROUND=$2
+BACKGROUND=$3
COLORS=$ANDROID_BUILD_DIR/app/src/main/res/values/colors.xml
XXXHDPI=$ANDROID_BUILD_DIR/app/src/main/res/mipmap-xxxhdpi
XXHDPI=$ANDROID_BUILD_DIR/app/src/main/res/mipmap-xxhdpi
@@ -31,31 +29,61 @@ XHDPI=$ANDROID_BUILD_DIR/app/src/main/res/mipmap-xhdpi
HDPI=$ANDROID_BUILD_DIR/app/src/main/res/mipmap-hdpi
MDPI=$ANDROID_BUILD_DIR/app/src/main/res/mipmap-mdpi
-# Create all the XXXHDPI versions
-convert xc:$BACKGROUND -resize 432x432 $FOREGROUND -gravity center -composite $XXXHDPI/ic_launcher.png
-convert xc:none -resize 432x432 $FOREGROUND -gravity center -composite $XXXHDPI/ic_launcher_foreground.png
-convert xc:none -resize 432x432 $FOREGROUND -gravity center -composite -threshold 0 -negate $XXXHDPI/ic_launcher_foreground_mono.png
+# If the background is a file, use a mipmap. Otherwise, assume it is a color.
+if [ -f "$BACKGROUND" ]
+then
+ DRAWABLE="@mipmap/ic_launcher_background"
+ BASE="$BACKGROUND"
+else
+ DRAWABLE="@color/iconBackground"
+ BASE="xc:$BACKGROUND"
+fi
+
+# Android adaptive icon XML
+MANIFEST="\n
+
+
+
+"
+
+# Create the XXXHDPI versions
+convert "$BASE" -resize 432x432 "$FOREGROUND" -gravity center -composite "$XXXHDPI/ic_launcher.png"
+convert "xc:none" -resize 432x432 "$FOREGROUND" -gravity center -composite "$XXXHDPI/ic_launcher_foreground.png"
+convert "xc:none" -resize 432x432 "$FOREGROUND" -gravity center -composite -threshold 0 -negate "$XXXHDPI/ic_launcher_foreground_mono.png"
# Use the XXXHDPI versions to create the lower resolutions
-convert $XXXHDPI/ic_launcher.png -resize 324x324 $XXHDPI/ic_launcher.png
-convert $XXXHDPI/ic_launcher_foreground.png -resize 324x324 $XXHDPI/ic_launcher_foreground.png
-convert $XXXHDPI/ic_launcher_foreground_mono.png -resize 324x324 $XXHDPI/ic_launcher_foreground_mono.png
-convert $XXXHDPI/ic_launcher.png -resize 216x216 $XHDPI/ic_launcher.png
-convert $XXXHDPI/ic_launcher_foreground.png -resize 216x216 $XHDPI/ic_launcher_foreground.png
-convert $XXXHDPI/ic_launcher_foreground_mono.png -resize 216x216 $XHDPI/ic_launcher_foreground_mono.png
-convert $XXXHDPI/ic_launcher.png -resize 162x162 $HDPI/ic_launcher.png
-convert $XXXHDPI/ic_launcher_foreground.png -resize 162x162 $HDPI/ic_launcher_foreground.png
-convert $XXXHDPI/ic_launcher_foreground_mono.png -resize 162x162 $HDPI/ic_launcher_foreground_mono.png
-convert $XXXHDPI/ic_launcher.png -resize 108x108 $MDPI/ic_launcher.png
-convert $XXXHDPI/ic_launcher_foreground.png -resize 108x108 $MDPI/ic_launcher_foreground.png
-convert $XXXHDPI/ic_launcher_foreground_mono.png -resize 108x108 $MDPI/ic_launcher_foreground_mono.png
+convert "$XXXHDPI/ic_launcher.png" -resize 324x324 "$XXHDPI/ic_launcher.png"
+convert "$XXXHDPI/ic_launcher_foreground.png" -resize 324x324 "$XXHDPI/ic_launcher_foreground.png"
+convert "$XXXHDPI/ic_launcher_foreground_mono.png" -resize 324x324 "$XXHDPI/ic_launcher_foreground_mono.png"
+convert "$XXXHDPI/ic_launcher.png" -resize 216x216 "$XHDPI/ic_launcher.png"
+convert "$XXXHDPI/ic_launcher_foreground.png" -resize 216x216 "$XHDPI/ic_launcher_foreground.png"
+convert "$XXXHDPI/ic_launcher_foreground_mono.png" -resize 216x216 "$XHDPI/ic_launcher_foreground_mono.png"
+convert "$XXXHDPI/ic_launcher.png" -resize 162x162 "$HDPI/ic_launcher.png"
+convert "$XXXHDPI/ic_launcher_foreground.png" -resize 162x162 "$HDPI/ic_launcher_foreground.png"
+convert "$XXXHDPI/ic_launcher_foreground_mono.png" -resize 162x162 "$HDPI/ic_launcher_foreground_mono.png"
+convert "$XXXHDPI/ic_launcher.png" -resize 108x108 "$MDPI/ic_launcher.png"
+convert "$XXXHDPI/ic_launcher_foreground.png" -resize 108x108 "$MDPI/ic_launcher_foreground.png"
+convert "$XXXHDPI/ic_launcher_foreground_mono.png" -resize 108x108 "$MDPI/ic_launcher_foreground_mono.png"
+
+# Create background mipmaps if necessary
+if [ -f "$BACKGROUND" ]
+then
+ convert "$BASE" -resize 432x432 "$XXXHDPI/ic_launcher_background.png"
+ convert "$XXXHDPI/ic_launcher_background.png" -resize 324x324 "$XXHDPI/ic_launcher_background.png"
+ convert "$XXXHDPI/ic_launcher_background.png" -resize 216x216 "$XHDPI/ic_launcher_background.png"
+ convert "$XXXHDPI/ic_launcher_background.png" -resize 162x162 "$HDPI/ic_launcher_background.png"
+ convert "$XXXHDPI/ic_launcher_background.png" -resize 108x108 "$MDPI/ic_launcher_background.png"
+fi
# Create the adaptive icons XML
-mkdir -p $ANDROID_BUILD_DIR/app/src/main/res/mipmap-anydpi-v26/
-echo $MANIFEST > $ANDROID_BUILD_DIR/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
-if [ -z "$(grep iconBackground $COLORS)" ]
+mkdir -p "$ANDROID_BUILD_DIR/app/src/main/res/mipmap-anydpi-v26/"
+echo "$MANIFEST" > "$ANDROID_BUILD_DIR/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml"
+if [ ! -f "$BACKGROUND" ]
then
- sed -i "6i\ $BACKGROUND" $COLORS
-else
- sed -i "s|\(iconBackground\">\).*\(\)|\1$BACKGROUND\2|" $COLORS
+ if [ -z "$(grep iconBackground $COLORS)" ]
+ then
+ sed -i "6i\ $BACKGROUND" $COLORS
+ else
+ sed -i "s|\(iconBackground\">\).*\(\)|\1$BACKGROUND\2|" $COLORS
+ fi
fi
diff --git a/src/android/main_class.sh b/src/android/main_class.sh
index 2ebeaf9..1a5d499 100755
--- a/src/android/main_class.sh
+++ b/src/android/main_class.sh
@@ -26,5 +26,5 @@ public class $ANDROID_CLASS extends SDLActivity {
}
}"
-mkdir -p $ANDROID_CLASS_DIR
-echo $ANDROID_CLASS_SRC > $ANDROID_CLASS_DIR/$ANDROID_CLASS.java
+mkdir -p "$ANDROID_CLASS_DIR"
+echo "$ANDROID_CLASS_SRC" > "$ANDROID_CLASS_DIR/$ANDROID_CLASS.java"
diff --git a/src/android/revise_skeleton.sh b/src/android/revise_skeleton.sh
index 623ed8b..1f5cbbf 100755
--- a/src/android/revise_skeleton.sh
+++ b/src/android/revise_skeleton.sh
@@ -18,25 +18,25 @@ ANDROID_MANIFEST=$3
ANDROID_APP_MK=$4
ANDROID_MK=$5
ANDROID_CLASS=$6
-ANDROID_APP_NAME="Fill Screen Test"
-ANDROID_MIN_TARGET=18
-ANDROID_NDK="22.1.7171670"
+ANDROID_APP_NAME=$7
+ANDROID_MIN_TARGET=$8
+ANDROID_NDK=$9
-sed -i s/org.libsdl.app/$ANDROID_PACKAGE/ $ANDROID_BUILD_DIR/app/build.gradle $ANDROID_BUILD_DIR/$ANDROID_MANIFEST
-sed -i "s/^#.*\(APP_STL\)/\1/" $ANDROID_BUILD_DIR/$ANDROID_APP_MK
-echo "APP_CPPFLAGS := -std=c++17 -fexceptions -frtti" >> $ANDROID_BUILD_DIR/$ANDROID_APP_MK
-sed -i -e 's/^LOCAL_LDLIBS.*/& -lGLESv3/' $ANDROID_BUILD_DIR/$ANDROID_MK
-sed -i 's/0x0002/0x0003/' $ANDROID_BUILD_DIR/$ANDROID_MANIFEST
-sed -i "s/\(minSdkVersion\).*16/\1 $ANDROID_MIN_TARGET/" $ANDROID_BUILD_DIR/app/build.gradle $ANDROID_BUILD_DIR/$ANDROID_APP_MK
-sed -i "s/\(android\)-16/\1-$ANDROID_MIN_TARGET/" $ANDROID_BUILD_DIR/app/build.gradle $ANDROID_BUILD_DIR/$ANDROID_APP_MK
-sed -i "11i\ ndkVersion \"$ANDROID_NDK\"" $ANDROID_BUILD_DIR/app/build.gradle
-sed -i 's/1536m/4096m/' $ANDROID_BUILD_DIR/gradle.properties
-sed -i "s/^#.*\(org.gradle.parallel\)/\1/" $ANDROID_BUILD_DIR/gradle.properties
-sed -i 's/^LOCAL_SHARED_LIBRARIES.*/& SDL2_image SDL2_mixer SDL2_ttf/' $ANDROID_BUILD_DIR/$ANDROID_MK
+sed -i "s/org.libsdl.app/$ANDROID_PACKAGE/" "$ANDROID_BUILD_DIR/app/build.gradle" "$ANDROID_BUILD_DIR/$ANDROID_MANIFEST"
+sed -i "s/^#.*\(APP_STL\)/\1/" "$ANDROID_BUILD_DIR/$ANDROID_APP_MK"
+echo "APP_CPPFLAGS := -std=c++17 -fexceptions -frtti" >> "$ANDROID_BUILD_DIR/$ANDROID_APP_MK"
+sed -i -e 's/^LOCAL_LDLIBS.*/& -lGLESv3/' "$ANDROID_BUILD_DIR/$ANDROID_MK"
+sed -i 's/0x0002/0x0003/' "$ANDROID_BUILD_DIR/$ANDROID_MANIFEST"
+sed -i "s/\(minSdkVersion\).*16/\1 $ANDROID_MIN_TARGET/" "$ANDROID_BUILD_DIR/app/build.gradle" "$ANDROID_BUILD_DIR/$ANDROID_APP_MK"
+sed -i "s/\(android\)-16/\1-$ANDROID_MIN_TARGET/" "$ANDROID_BUILD_DIR/app/build.gradle" "$ANDROID_BUILD_DIR/$ANDROID_APP_MK"
+sed -i "11i\ ndkVersion \"$ANDROID_NDK\"" "$ANDROID_BUILD_DIR/app/build.gradle"
+sed -i 's/1536m/4096m/' "$ANDROID_BUILD_DIR/gradle.properties"
+sed -i "s/^#.*\(org.gradle.parallel\)/\1/" "$ANDROID_BUILD_DIR/gradle.properties"
+sed -i 's/^LOCAL_SHARED_LIBRARIES.*/& SDL2_image SDL2_mixer SDL2_ttf/' "$ANDROID_BUILD_DIR/$ANDROID_MK"
sed -i 's#^LOCAL_C_INCLUDES.*#& $(LOCAL_PATH)/../../../../../../../../lib $(LOCAL_PATH)/../../../../../../../../src#' \
- $ANDROID_BUILD_DIR/$ANDROID_MK
-sed -i 's#YourSourceHere.c#$(LOCAL_PATH)/../../../../../../fill_screen.cpp#' $ANDROID_BUILD_DIR/$ANDROID_MK
-sed -i 's#^LOCAL_SRC_FILES.*#& $(wildcard $(LOCAL_PATH)/../../../../../../../../src/*.cpp)#' $ANDROID_BUILD_DIR/$ANDROID_MK
-sed -i 's#^LOCAL_SRC_FILES.*#& $(wildcard $(LOCAL_PATH)/../../../../../../../../lib/sdl2-gfx/*.c)#' $ANDROID_BUILD_DIR/$ANDROID_MK
-sed -i "s/\(name=\)\"SDLActivity\"/\1\"$ANDROID_CLASS\"/" $ANDROID_BUILD_DIR/$ANDROID_MANIFEST
-sed -i "s/Game/$ANDROID_APP_NAME/" $ANDROID_BUILD_DIR/app/src/main/res/values/strings.xml
+ "$ANDROID_BUILD_DIR/$ANDROID_MK"
+sed -i 's#YourSourceHere.c#$(LOCAL_PATH)/../../../../../../fill_screen.cpp#' "$ANDROID_BUILD_DIR/$ANDROID_MK"
+sed -i 's#^LOCAL_SRC_FILES.*#& $(wildcard $(LOCAL_PATH)/../../../../../../../../src/*.cpp)#' "$ANDROID_BUILD_DIR/$ANDROID_MK"
+sed -i 's#^LOCAL_SRC_FILES.*#& $(wildcard $(LOCAL_PATH)/../../../../../../../../lib/sdl2-gfx/*.c)#' "$ANDROID_BUILD_DIR/$ANDROID_MK"
+sed -i "s/\(name=\)\"SDLActivity\"/\1\"$ANDROID_CLASS\"/" "$ANDROID_BUILD_DIR/$ANDROID_MANIFEST"
+sed -i "s/Game/$ANDROID_APP_NAME/" "$ANDROID_BUILD_DIR/app/src/main/res/values/strings.xml"