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"