-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathinstrument.sh
executable file
·36 lines (34 loc) · 1021 Bytes
/
instrument.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/bin/bash
ANDROID_PLATFORM=~/Library/Android/sdk/platforms
INSTRUMENTOR_JAR=build/libs/android-instrumentor-1.0-SNAPSHOT.jar
BUILDTOOLS=~/Library/Android/sdk/build-tools/28.0.3
OUTDIR="./instrumented"
while getopts j:b:k:p:o:a: option
do
case "${option}"
in
j) INSTRUMENTOR_JAR=${OPTARG};;
a) APK=${OPTARG};;
b) BUILDTOOLS=${OPTARG};;
k) KEY=${OPTARG};;
p) KEYSTORE_PASS=${OPTARG};;
o) OUTDIR=${OPTARG};;
esac
done
mkdir -p $OUTDIR
APKNAME=$(basename "$APK")
zipalign=$BUILDTOOLS/zipalign
apksigner=$BUILDTOOLS/apksigner
INSTRUMENTED_APP=$OUTDIR/$APKNAME
TMP_FILE=/tmp/tmpfile.apk
echo "Instrumenting $APKNAME..."
java -jar $INSTRUMENTOR_JAR -platform $ANDROID_PLATFORM -apk $APK -output $OUTDIR
if [ ! -z "$KEY" ]; then
PASS_OPT="--ks-pass pass:$KEYSTORE_PASS"
[[ -z "$KEYSTORE_PASS" ]] && PASS_OPT=""
$zipalign -f 4 $INSTRUMENTED_APP $TMP_FILE
$apksigner sign --ks $KEY $PASS_OPT $TMP_FILE
cp $TMP_FILE $INSTRUMENTED_APP
rm $TMP_FILE
echo "The $APKNAME is signed and located in $INSTRUMENTED_APP"
fi