mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2024-12-17 17:20:21 +01:00
scripts: adapted compress-and-sign-apk script to case-insensitive file systems (#2138)
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
c510e73256
commit
865c56f400
@@ -153,19 +153,12 @@ dependencies {
|
||||
debugImplementation "androidx.compose.ui:ui-tooling:$compose_version"
|
||||
}
|
||||
|
||||
def buildType = "unknown"
|
||||
// Don't do anything if no compression is needed
|
||||
if (compression_level != "0") {
|
||||
tasks.whenTaskAdded { task ->
|
||||
if (task.name == 'packageDebug') {
|
||||
task.doLast {
|
||||
buildType = "debug"
|
||||
}
|
||||
task.finalizedBy compressApk
|
||||
} else if (task.name == 'packageRelease') {
|
||||
task.doLast {
|
||||
buildType = "release"
|
||||
}
|
||||
task.finalizedBy compressApk
|
||||
}
|
||||
}
|
||||
@@ -173,6 +166,13 @@ if (compression_level != "0") {
|
||||
|
||||
tasks.register("compressApk") {
|
||||
doLast {
|
||||
def isRelease = gradle.getStartParameter().taskNames.find({ it.toLowerCase().contains("release") }) != null
|
||||
def buildType
|
||||
if (isRelease) {
|
||||
buildType = "release"
|
||||
} else {
|
||||
buildType = "debug"
|
||||
}
|
||||
def javaHome = System.properties['java.home'] ?: org.gradle.internal.jvm.Jvm.current().getJavaHome()
|
||||
def sdkDir = android.getSdkDirectory().getAbsolutePath()
|
||||
def keyAlias = ""
|
||||
|
||||
@@ -12,37 +12,53 @@ store_password=$5
|
||||
key_alias=$6
|
||||
key_password=$7
|
||||
|
||||
if [ -z ${7} ]; then echo "You didn't enter all required params:
|
||||
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
|
||||
cd "$apk_parent_dir"
|
||||
|
||||
touch remove_this_file remove_this_FILE
|
||||
(( $(ls | grep "remove_this" | wc -l)==1 )) && case_insensitive=1 || case_insensitive=0
|
||||
#echo Case-insensitive file system: $case_insensitive
|
||||
rm remove_this_file remove_this_FILE 2> /dev/null || true
|
||||
|
||||
ORIG_NAMES=( $(echo app*.apk) )
|
||||
for ORIG_NAME in "${ORIG_NAMES[@]}"; do
|
||||
unzip -o -q -d apk $ORIG_NAME
|
||||
ORIG_NAME_COPY=$ORIG_NAME-copy
|
||||
mv "$ORIG_NAME" "$ORIG_NAME_COPY"
|
||||
|
||||
rm $ORIG_NAME
|
||||
|
||||
(cd apk && zip -r -q -$level ../$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 && zip -r -q -0 ../$ORIG_NAME res)
|
||||
(cd apk && zip -r -q -0 ../"$ORIG_NAME" resources.arsc)
|
||||
|
||||
if [ $case_insensitive -eq 1 ]; then
|
||||
# For case-insensitive file systems
|
||||
list_of_files=$(unzip -l "$ORIG_NAME_COPY" | grep res/ | sed -e "s|.*res/|res/|")
|
||||
for file in $list_of_files; do unzip -o -q -d apk "$ORIG_NAME_COPY" "$file" && (cd apk && zip -r -q -0 ../"$ORIG_NAME" "$file"); done
|
||||
else
|
||||
# This method is not working correctly on case-insensitive file systems since Android AAPT produce the same names of files
|
||||
# but with different case like xX.png, Xx.png, xx.png, etc
|
||||
(cd apk && zip -r -q -0 ../"$ORIG_NAME" res)
|
||||
fi
|
||||
|
||||
#(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/*/)
|
||||
ALL_TOOLS=("$sdk_dir"/build-tools/*/)
|
||||
BIN_DIR="${ALL_TOOLS[1]}"
|
||||
|
||||
$BIN_DIR/zipalign -p -f 4 $ORIG_NAME $ORIG_NAME-2
|
||||
"$BIN_DIR"/zipalign -p -f 4 "$ORIG_NAME" "$ORIG_NAME"-2
|
||||
|
||||
mv $ORIG_NAME{-2,}
|
||||
mv "$ORIG_NAME"{-2,}
|
||||
|
||||
$BIN_DIR/apksigner sign \
|
||||
"$BIN_DIR"/apksigner sign \
|
||||
--ks "$store_file" --ks-key-alias "$key_alias" --ks-pass "pass:$store_password" \
|
||||
--key-pass "pass:$key_password" $ORIG_NAME
|
||||
--key-pass "pass:$key_password" "$ORIG_NAME"
|
||||
|
||||
# cleanup
|
||||
rm "$ORIG_NAME_COPY" 2> /dev/null || true
|
||||
rm -rf apk || true
|
||||
rm ${ORIG_NAME}.idsig 2> /dev/null || true
|
||||
rm "${ORIG_NAME}".idsig 2> /dev/null || true
|
||||
done
|
||||
Reference in New Issue
Block a user