tba-sign-devbuilds.sh (1975B)
1 #!/bin/bash 2 3 cd "$(dirname $(realpath "$0"))/.." 4 5 objdir=$1 6 if [ -z "$objdir" ]; then 7 echo "Usage $0 objdir" 8 exit 1 9 fi 10 11 if [ -z "$APKSIGNER_ARGS" ]; then 12 if [ -z "$QA_KEY" ]; then 13 if [ -z "$TOR_BROWSER_BUILD" ]; then 14 TOR_BROWSER_BUILD=../../../../tor-browser-build 15 fi 16 QA_KEY="$TOR_BROWSER_BUILD/projects/browser/android-qa.keystore" 17 fi 18 if [ ! -f "$QA_KEY" ]; then 19 echo "The QA key has not been found." 20 echo "Please define either \$QA_KEY with its path, or \$TOR_BROWSER_BUILD with the path to tor-browser-build" 21 exit 2 22 fi 23 APKSIGNER_ARGS="--ks "$QA_KEY" --ks-key-alias androidqakey --key-pass pass:android --ks-pass pass:android" 24 fi 25 26 if [ -z "$ANDROID_HOME" ]; then 27 ANDROID_HOME=~/Android 28 fi 29 30 function find_tool() { 31 tool="$(find $ANDROID_HOME -name "$1" | head -1)" 32 if [ -z "$tool" ]; then 33 tool=$(which $1) 34 fi 35 echo $tool 36 } 37 38 apksigner="$(find_tool apksigner)" 39 zipalign="$(find_tool zipalign)" 40 if [ -z "$apksigner" -o ! -x "$apksigner" -o -z "$zipalign" -o ! -x "$zipalign" ]; then 41 echo "apksigner or zipalign not found." 42 echo "Please make sure they are on your \$PATH, or define \$ANDROID_HOME." 43 exit 3 44 fi 45 46 noscript="$(find "$TOR_BROWSER_BUILD/out/browser" -name 'noscript*.xpi' -print | sort | tail -1)" 47 tmpdir="$(mktemp -d)" 48 mkdir -p "$tmpdir/assets/extensions" 49 if [ -f "$noscript" ]; then 50 cp "$noscript" "$tmpdir/assets/extensions/{73a6fe31-595d-460b-a920-fcc0f8843232}.xpi" 51 fi 52 53 sign () { 54 apk="$(realpath $1)" 55 out="$apk" 56 if [ ! -f "$apk" ]; then 57 return 58 fi 59 out="${out/unsigned/signed}" 60 aligned="$apk" 61 aligned="${aligned/unsigned/aligned}" 62 pushd "$tmpdir" > /dev/null 63 zip -Xr "$apk" assets > /dev/null 64 popd > /dev/null 65 rm -f "$aligned" 66 "$zipalign" -p 4 "$apk" "$aligned" 67 echo "Signing $out" 68 "$apksigner" sign --in "$aligned" --out "$out" $APKSIGNER_ARGS 69 } 70 71 for channel in "$objdir/gradle/build/mobile/android/fenix/app/outputs/apk/fenix/"*; do 72 for apk in $channel/*-unsigned.apk; do 73 sign "$apk" 74 done 75 done 76 77 rm -rf "$tmpdir"