#!/bin/bash if [[ $# -lt 2 ]]; then echo "usage: $0 " exit 0 fi apk=$(realpath $1) mkdir mbank cd mbank [[ ! -f "apktool.jar" ]] && wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.4.1.jar -O apktool.jar [[ ! -f "signapk.jar" ]] && wget https://github.com/techexpertize/SignApk/raw/master/signapk.jar -O signapk.jar [[ ! -f "zipalign.jar" ]] && wget https://git.sakamoto.pl/laudom/zipalign-java/uploads/8fcc06538b7392c623468e42c893f952/ZipAlign.jar -O zipalign.jar java -jar apktool.jar d $apk -o base strings_file_en=$(grep -Rl "Hello, %s" base/res/*) strings_file_pl=$(grep -Rl "Witaj, %s" base/res/*) sed -i "s/Hello, \%s/Hello, $2/" $strings_file_en sed -i "s/Witaj, \%s/Witaj, $2/" $strings_file_pl if [[ ! -f "crypto.crt" || ! -f "key.pk8" ]]; then openssl genrsa -out crypto.key 1024 openssl req -new -key crypto.key -out crypto.csr -subj "/C=PL/ST=Warsaw/L=Warsaw/O=Paweł Tanajno Rigcz Hawajska+ hacker collective" openssl x509 -req -days 9999 -in crypto.csr -signkey crypto.key -out crypto.crt cat crypto.key crypto.crt > certificate.pem openssl pkcs8 -topk8 -outform DER -in certificate.pem -inform PEM -out key.pk8 -nocrypt rm crypto.key crypto.csr certificate.pem fi java -jar apktool.jar --use-aapt2 b base -o out.apk java -jar zipalign.jar out.apk out_aligned.apk # we don't know if this is strictly needed, but it might as well be java -jar signapk.jar crypto.crt key.pk8 out_aligned.apk out_signed.apk rm -R base cp out_signed.apk .. echo "IMPORTANT NOTE: please store crypto.crt and key.pk8 in a safe place - you'll need them to sign the app after any updates." echo "OUTPUT FILE: out_signed.apk"