Android开发常用脚本

不会写脚本的Android程序员不是好的理发师!

头都秃了,理毛啊!

dwrunning.sh 显示正在运行的应用的信息

1
2
#!/bin/bash
adb shell ps | grep "com.catuncle"

dwpkg.sh 显示安装的版本及位置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash
#http://man.linuxde.net/sed
doShow() {
echo -e "\e[36m$1:\e[0m"
#替换第一个"package:"为空
#替换所有的"$1"为空
echo "$2" | grep $1 |sed 's/package://1' |sed 's/='$1'//g'
#用"="分割,取第2个
adb shell dumpsys package $1 | grep "versionName=" |cut -d "=" -f2
echo
}

packageInfosStr=`adb shell pm list package -f`
doShow com.catuncle.app1 "$packageInfosStr"
doShow com.catuncle.app2 "$packageInfosStr"

杀死指定的应用 dwkill.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash
doKill() {
echo "you chose "$1
#取pid,然后kill
adb shell ps | grep $opt | awk '{print $2}' | xargs adb shell kill
}
echo "kill it----"
PS3='Please enter your choice: '
options=("com.catuncle.app1" "com.catuncle.app2")
select opt in "${options[@]}"
do
if [ -n "$opt" ]; then
doKill $opt
break;
else
echo invalid option
fi
done

logcat记录到文件 dwlog.sh

1
2
3
4
#!/bin/bash
DATE=`date '+%Y.%m.%d_%H.%M.%S'`
#catuncle is your log tag
adb logcat -v threadtime | grep "catuncle" >log$DATE.txt

查看apk包的信息 dwapkinfo

1
2
3
#!/bin/bash
apkFile=$1
~/bin/_tools/aapt d badging "$apkFile" | grep "package:\|launchable-activity:"

查看签名的md5 dwmd5

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
37
38
39
40
#!/bin/bash
#获取apk中签名的md5(有冒号)
getApkMD5() {
str=`keytool -printcert -jarfile $1 |grep "MD5:"`
#分割符为':'
echo ${str#*:}
}

#获取keystore的md5(有冒号)
getKeyMD5() {
str=`keytool -list -v -keystore $1 -storepass $2 |grep "MD5:"`
#分割符为':'
echo ${str#*:}
}

#去掉md5的冒号、转为小写字母
simple() {
echo "$1" | sed 's/://g' | tr '[:upper:]' '[:lower:]'
}


#确认参数个数>=1
if [ $# -lt 1 ]; then
echo
echo -e "\e[36m查看apk包签名或keystore的md5(jdk>=7):\e[0m"
echo "
Usage 1: $0 'apk file path'
Usage 2: $0 'keystore file path' 'storepass签名文件密码'"
echo
exit
fi

if [ ${1##*.} == "apk" ]; then
var=`getApkMD5 $1`
else
var=`getKeyMD5 $1 $2`
fi

simple $var

生成debug.keystore使其和release.keystore有相同的签名 dwkeystore.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
37
38
39
40
41
42
43
44
45
46
47
#!/bin/bash
convert() {
keystore="debug.keystore"
alias=$2
passwd=$3

cp $1 $keystore

#修改别名
keytool -changealias -keystore $keystore -alias $alias -destalias "androiddebugkey" -storepass $passwd
#修改密钥口令
keytool -keypasswd -keystore $keystore -alias "androiddebugkey" -storepass $passwd -keypass $passwd -new "android"
#修改密钥库口令
keytool -storepasswd -keystore $keystore -storepass $passwd -new "android"

echo -e "\e[36m转换完成^~^\e[0m"
echo
echo -e "\e[36m-------签名信息如下:-------\e[0m"
echo
keytool -list -v -keystore $keystore -storepass "android"
echo -e "\e[36m---------------------------\e[0m"
echo
}

#确认参数个数==2
if [ $# -eq 2 ]; then
echo
echo -e "\e[36m-------$1 签名信息如下:-------\e[0m"
echo
keytool -list -v -keystore $1 -storepass $2
echo -e "\e[36m---------------------------\e[0m"
echo
exit
fi

#确认参数个数==3
if [ $# -eq 3 ]; then
convert $1 $2 $3
else
echo
echo -e "\e[36mUsage 1: 生成debug.keystore使其和release.keystore有相同的签名:\e[0m"
echo "$0 'release.keystore' 'alias' 'passwd'"
echo
echo -e "\e[36mUsage 2: 查看release.keystore的签名:\e[0m"
echo "$0 'release.keystore' 'passwd'"
echo
fi