steins-zapp/dev_builder.sh

116 lines
3.4 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env sh
##
# dev_builder.sh
#
# Authors: Sidney PEPO (aka sysb1n)
# Last change: 2022-10-23
#
# Description: a development version of builder.sh. Read S;Z
# documentation (README.org and dev_patches.org) before use it.
# This script just contains functions that automates the build and
# test processes at development phases, so, function names and
# "status" function messages are autoexplicative. Read them too.
#
# ~El Psy Kongroo
##
# Attributing variables with names to script parsed values.
option=${1}
argument=${2}
# Those variable are used to make Steins;Zapp file updates easier, for
# example, on release name, base apk, etc.
base_apk="./dependencies/com.soula2_v0.22.10L.apk"
base_dir="sandbox"
apktool="./dependencies/apktool_2.6.1.jar"
zipalign="./dependencies/zipalign"
apksigner="./dependencies/apksigner.jar"
help() {
echo "[h]elp -> Help"
echo "[d]ecompile -> Decompile"
echo "[b]uild -> Build"
echo "[i]nstall -> Install"
}
# After or before any procedure, this function is called to present an
# information about it.
status() {
s_value=${1}
s_stage=${2}
if [[ ${s_value} -eq 0 ]]; then
echo "Successfully ${s_stage}"
else
echo "Not ${s_stage} due to an error"
exit 1
fi
}
decompile() {
java -jar ${apktool} -q d ${base_apk} -o ${base_dir}
status ${?} "decompiled"
}
build() {
# Checking if output directory exists and, if isn't, it's created.
if [[ ! -d "./dev_builds" ]]; then
mkdir ./dev_builds
fi
# Declaring an array and storing the Steins;Zapp symbols in it.
declare -A symbols
symbols[0]="0"
symbols[1]="β"
symbols[2]="α"
symbols[3]="γ"
symbols[4]="δ"
index=${1}
list=$(seq 0 4)
if [[ -n ${index} ]] && [[ ${index} -ge 0 ]] && [[ ${index} -le 4 ]]; then
list=${index}
fi
for divergence in ${list}; do
cp -r ${base_dir} ./dev_build
for apk_paths in $(grep -s -r -o "com\.soula2" ./dev_build | cut -d ":" -f 1 | uniq); do
sed -i "s/com\.soula2/com\.steinszapp${divergence}/g" ${apk_paths} > /dev/null
done
for smali_paths in $(grep -s -r -o "Lcom\/soula2" ./dev_build | cut -d ":" -f 1 | uniq); do
sed -i "s/Lcom\/soula2/Lcom\/steinszapp${divergence}/g" ${smali_paths} > /dev/null
done
sed -i "s/<string name=\"launcher_app_name\">WhatsApp<\/string>/<string name=\"launcher_app_name\">${symbols[${divergence}]} Steins;Zapp DEV BUILD<\/string>/g" ./dev_build/res/values/strings.xml > /dev/null
sed -i "s/<string name=\"wa_go_name\">Soula2<\/string>/<string name=\"wa_go_name\">${symbols[${divergence}]} Steins;Zapp DEV BUILD<\/string>/g" ./dev_build/res/values-v1/strings.xml > /dev/null
java -jar ${apktool} -q b ./dev_build -o dev_build.apk
status ${?} "builded"
${zipalign} -p -f -v 4 dev_build.apk ./dev_builds/com.steinszapp${divergence}_dev_build.apk > /dev/null
status ${?} "aligned"
java -jar ${apksigner} sign --ks ./dependencies/key.keystore --ks-key-alias steins-zapp --ks-pass pass:elpsykongroo ./dev_builds/com.steinszapp${divergence}_dev_build.apk
status ${?} "signed"
# Removing the generated temp files.
rm -rf ./dev_builds/com.steinszapp${divergence}_dev_build.apk.idsig ./dev_build.apk ./dev_build > /dev/null
done
}
install() {
filename=${1}
./dependencies/adb install ${filename}
status ${?} "installed"
}
# This switch case acts like a "main" function for this script.
case ${option} in
d|decompile)
decompile;;
b|build)
build ${argument};;
i|install)
install ${argument};;
h|help|*)
help;;
esac