Skip to content

Instantly share code, notes, and snippets.

@Shchvova
Last active November 5, 2018 02:06
Show Gist options
  • Save Shchvova/225b74d47d4b0a1548292c29d02cf249 to your computer and use it in GitHub Desktop.
Save Shchvova/225b74d47d4b0a1548292c29d02cf249 to your computer and use it in GitHub Desktop.
Minimizing corona app to 2.8/3.6 MB

Usage:

./minimize.sh -n test.apk For small APK without embedded resources for widgets. Minimal size is about 2.8 MB

./minimize.sh test.apk Just repackage it. Minimal size is about 3.9 MB

#!/bin/bash -e
DELETE_RES=0
while test $# -gt 0; do
case "$1" in
-h|--help)
echo "minimize.sh - repackage APK for minimal size"
echo " "
echo "./minimize.sh [--no-res|-n] <input.apk>"
echo " "
echo "options:"
echo "-h, --help show brief help"
echo "-n, --no-res uses plugin.beta for output"
exit 0
;;
-n|--no-res)
DELETE_RES=1
shift
;;
*)
break
;;
esac
done
if [ ! -f "$1" ]; then
echo "Must input APK! Run"
echo "./minimize.sh -h"
echo "for more info"
exit 0
fi
if [[ -z "${SDK_BUILD_TOOLS}" ]]; then
SDK_BUILD_TOOLS=~/Library/Android/sdk/build-tools/$(ls -r ~/Library/Android/sdk/build-tools/ | head -n 1)
# echo "Default build-tools: $SDK_BUILD_TOOLS"
fi
if [ ! -f "$SDK_BUILD_TOOLS/zipalign" ]; then
echo "Cannot find Android SDK in ~/Library/Android/sdk/build-tools, default Android Studio location"
echo "Set SDK_BUILD_TOOLS env to desired build tools location. For example:"
echo "SDK_BUILD_TOOLS=~/Android/sdk/build-tools/26.0.2 ./minimize.sh -n myapk.apk"
exit 0
fi
OUT=$(mktemp -d)
unzip -q "$1" -d "$OUT/out"
pushd "$OUT/out" > /dev/null
if [ $DELETE_RES == 1 ]; then
rm -r res/raw
fi
zip -q -r ../zipped.apk .
popd > /dev/null
RESULT=$(dirname "$1")/mini-$(basename "$1")
rm -f "$RESULT"
"$SDK_BUILD_TOOLS/zipalign" -z 4 "$OUT/zipped.apk" "$OUT/aligned.apk"
"$SDK_BUILD_TOOLS/apksigner" sign --ks /Applications/Corona/Corona\ Simulator.app/Contents/Resources/debug.keystore --ks-pass pass:"android" --out="$RESULT" --min-sdk-version=19 "$OUT/aligned.apk"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment