Skip to content

Commit cee8b39

Browse files
committed
new script to get android service call from adb
1 parent d239282 commit cee8b39

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
#!/bin/bash
2+
# taken from: # http://ktnr74.blogspot.com/2014/09/calling-android-services-from-adb-shell.html
3+
4+
ADBShell () { adb ${2+-s} $2 shell "$1" | tr -d '\r'
5+
}
6+
7+
GetAndroidVersion () {
8+
GOOGLE_SOURCE="https://android.googlesource.com"
9+
REPO="platform/frameworks/base"
10+
ALL_TAGS=$(wget -qO - "$GOOGLE_SOURCE/$REPO/+refs/tags/?format=text" | \
11+
tr -d '^{}' | cut -d/ -f3 | sort -u | grep -vE -- '-(cts|sdk)-' | grep -v "_r0")
12+
TAG=${1:-$(ADBShell 'getprop ro.build.version.release')}
13+
echo -e "ANDROID_SERIAL=$ANDROID_SERIAL\nro.build.version.release=$TAG" 1>&2
14+
TAG=$(echo "$ALL_TAGS" | grep -- "android-${TAG//./\.}" | head -n 1)
15+
echo -e "TAG=$TAG" 1>&2
16+
[ "-$TAG" != "-" ] && return 0
17+
echo -e "TAG not valid!\n\nList of valid tags: "$ALL_TAGS 1>&2
18+
exit 1
19+
}
20+
21+
22+
GetServicePackageName () {
23+
SERVICE_PACKAGE=$(ADBShell 'service list' | grep "\s$1: \[" | head -n 1 | tr '[]' '""' | cut -d\" -f2)
24+
echo -e "SERVICE=$1\nSERVICE_PACKAGE=$SERVICE_PACKAGE" 1>&2
25+
}
26+
27+
GetGoogleSourceFile () {
28+
#echo -e "downloading $GOOGLE_SOURCE/$REPO/+/$1/$2" 1>&2
29+
[ "-$1" == "-" ] && return 1
30+
wget -qO - "$GOOGLE_SOURCE/$REPO/+/$1/$2?format=text" | base64 -d
31+
}
32+
33+
GetAllServices () {
34+
ALL_SERVICES=$(GetGoogleSourceFile "$TAG" "Android.mk" | tr -d ' \\\t' | grep "\.aidl$" | \
35+
head -n 1 | sort -u | grep -v "^framework")
36+
}
37+
38+
ParseServiceAIDL () {
39+
GetGoogleSourceFile "$TAG" $(echo "$ALL_SERVICES" | grep "${SERVICE_PACKAGE//.//}\.aidl$" | head -n 1) | \
40+
tr -d '\n\r' | gcc -P -E - | tr '{};' '\n\n\n' | grep -v ^$ | sed -e '1,/interface\s/ d' | cat -n
41+
}
42+
43+
AbortIfExecutableMissing () {
44+
BIN=($@)
45+
MISSINGBIN=$(for B in ${BIN[@]}; do [ "$(which $B 2>/dev/null)-" == "-" ] && echo $B; done)
46+
[ "${MISSINGBIN}-" == "-" ] && return 0
47+
echo -e "Can't find the following executables: "$MISSINGBIN
48+
exit 1
49+
}
50+
51+
AbortIfExecutableMissing "adb wget gcc tr sed awk cut grep basename dirname head base64"
52+
53+
GetAndroidVersion
54+
GetAllServices
55+
GetServicePackageName $1
56+
57+
ParseServiceAIDL
58+
59+
exit 0

0 commit comments

Comments
 (0)