作为Android研发,相信大家对adb命令不陌生,adb命令提供的各种能力极大的提高了研发效率。但是adb有些操作不够简洁。例如几个比较常用的操作:
1. 打开快手
adb shell am start [快手完整包名]
2. 截屏
adb shell screencap /sdcard/${file}; adb pull /sdcard/${file}; open ${file}
3. 在多个手机上安装apk
adb devices | awk 'NF == 2 {print $2}' | xargs -n1 -I {} adb -s {} install ${apk}
如上,可以发现几个影响效率的点
- 命令都比较长
- 需要记忆的东西比较多
高效的秘诀,为自己打造趁手工具集合,那就动手制作一个adb扩展吧。我想要的一些特性:
- 不需要记忆完整包名,能够根据输入的缩写,自动找到app,并进行操作(打开,关闭,clean等等)
- 常见的操作命令都比较短,不需要记忆辣么长的命令
- 默认同时在所有链接到电脑的手机上操作,不需要一个个执行
- 可以完全替换adb,内部没有实现的命令,代理到真正的adb来执行
效果如下:(脚本 adbx)
# 打开快手
adbx start gif
# 关闭快手
adbx stop gif
# 清理快手
adbx clean gif
# 查看当前的栈顶Activity
adbx top
# 截图并展示
adbx cap
# 在所有手机上安装apk
adbx install [apk]
# 在所有手机上卸载apk
adbx un [apk]
# 执行正常的adb 命令( 可以直接替代正常的adb)
adbx shell pm list packages -3
代码如下:
#! /usr/bin/env bash
function _find_app() {
name="$1"
device="$2"
if [ -z "$device" ]
then
adb shell pm list packages -3 | grep "${name}" | awk -F ':' '{print $2}'
else
adb -s $device shell pm list packages -3 | grep "${name}" | awk -F ':' '{print $2}'
fi
}
function top() {
adb shell dumpsys activity activities | grep ResumedActivity | tail -1 | awk '{print $(NF-1)}' | head -1
}
function capture_screen() {
file="screencap.png"
adb shell screencap /sdcard/${file}; adb pull /sdcard/${file}; open ${file}
}
function start_app() {
app="$1"
devices | while read d;
do
_find_app "$app" $d | xargs -n1 -I {} adb -s $d shell am start {}
done
}
function stop_app() {
app="$1"
devices | while read d;
do
_find_app "$app" $d | xargs -n1 -I {} adb -s $d shell am force-stop {}
done
}
function devices() {
adb devices | awk 'NF == 2{print $1}'
}
function clean_app() {
app="$1"
devices | while read d;
do
_find_app $d "$app" | xargs -n1 -I {} adb -s $d shell pm clear {}
done
}
function install_apk() {
apk="$1"
devices | while read d
do
adb -s $d install $apk
done
}
function uninstall_app() {
app="$1"
devices | while read d;
do
_find_app $d "$app" | xargs -n1 -I {} adb -s $d uninstall {}
done
}
case "$1" in
capture_screen|capture|cap ) capture_screen;;
top ) top;;
start ) start_app "$2";;
stop ) stop_app "$2";;
install ) install_apk "$2";;
uninstall|un ) uninstall_app "$2";;
* ) adb $*;;
esac
最后在~/.profile
或者 ~/.bashrc
~/.zshrc
中添加
alias adb=adbx
就可以和adb一样使用adbx了
# 打开快手
adb start gif
# 关闭快手
adb stop gif
# 清理快手
adb clean gif
# 查看当前的栈顶Activity
adb top
# 截图并展示
adb cap
# 在所有手机上安装apk
adb install [apk]
# 在所有手机上卸载apk
adb un [apk]
# 执行正常的adb 命令( 可以直接替代正常的adb)
adb shell pm list packages -3
网友评论