mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2024-12-17 17:20:21 +01:00
Different level of APK compression (#947)
* Different level of APK compression - can reduce from 200mb to 50mb with level 5 of compression. Supports Intellij IDEA and command line gradle invocation - by default, this feature is disabled. To enable create a file local.properties in `apps/android` and paste this line: `compression_level=5` - level can be from 0 (no compression) to 9 (slowest and the must effective) - automatically enables `extractNativeLibs` AndroidManifest's flag since it's required in this case. Feel free to find an alternative that works with compression of .so libs and without enabling this flag - Windows is not suppored, of course. Only Unix-like OSes * script corrections * Missing JAVA_HOME in some environments * Rename release apk made by IDEA to simplex.apk * Enhancements Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
fee2b247e9
commit
8c716962fb
Executable
+45
@@ -0,0 +1,45 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Fail fast in case any command fails
|
||||
set -e
|
||||
|
||||
level=$1
|
||||
apk_parent_dir=$2
|
||||
sdk_dir=$3
|
||||
|
||||
store_file=$4
|
||||
store_password=$5
|
||||
key_alias=$6
|
||||
key_password=$7
|
||||
|
||||
if [ -z ${7} ]; then echo "You didn't enter all required params:
|
||||
compress-and-sign-apk.sh level apk_parent_dir sdk_dir store_file store_password key_alias key_password"
|
||||
fi
|
||||
|
||||
cd $apk_parent_dir
|
||||
|
||||
ORIG_NAME=$(echo app*.apk)
|
||||
unzip -o -q -d apk $ORIG_NAME
|
||||
|
||||
rm $ORIG_NAME
|
||||
|
||||
(cd apk && zip -r -q -$level ../$ORIG_NAME .)
|
||||
# Shouldn't be compressed because of Android requirement
|
||||
(cd apk && zip -r -q -0 ../$ORIG_NAME resources.arsc)
|
||||
#(cd apk && 7z a -r -mx=$level -tzip -x!resources.arsc ../$ORIG_NAME .)
|
||||
#(cd apk && 7z a -r -mx=0 -tzip ../$ORIG_NAME resources.arsc)
|
||||
|
||||
ALL_TOOLS=($sdk_dir/build-tools/*/)
|
||||
BIN_DIR="${ALL_TOOLS[1]}"
|
||||
|
||||
$BIN_DIR/zipalign -p -f 4 $ORIG_NAME $ORIG_NAME-2
|
||||
|
||||
mv $ORIG_NAME{-2,}
|
||||
|
||||
$BIN_DIR/apksigner sign \
|
||||
--ks "$store_file" --ks-key-alias "$key_alias" --ks-pass "pass:$store_password" \
|
||||
--key-pass "pass:$key_password" $ORIG_NAME
|
||||
|
||||
# cleanup
|
||||
rm -rf apk || true
|
||||
rm ${ORIG_NAME}.idsig 2> /dev/null || true
|
||||
Reference in New Issue
Block a user