tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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"