高效的秘密武器:打造趁手的工具集
作為Android研發(fā)星持,相信大家對(duì)adb命令不陌生坛吁,adb命令提供的各種能力極大的提高了研發(fā)效率寇损。但是adb有些操作不夠簡潔。例如幾個(gè)比較常用的操作:
1. 打開快手
adb shell am start [快手完整包名]
2. 截屏
adb shell screencap /sdcard/${file}; adb pull /sdcard/${file}; open ${file}
3. 在多個(gè)手機(jī)上安裝apk
adb devices | awk 'NF == 2 {print $2}' | xargs -n1 -I {} adb -s {} install ${apk}
如上驹暑,可以發(fā)現(xiàn)幾個(gè)影響效率的點(diǎn)
- 命令都比較長
- 需要記憶的東西比較多
高效的秘訣玫恳,為自己打造趁手工具集合,那就動(dòng)手制作一個(gè)adb擴(kuò)展吧优俘。我想要的一些特性:
- 不需要記憶完整包名京办,能夠根據(jù)輸入的縮寫,自動(dòng)找到app帆焕,并進(jìn)行操作(打開惭婿,關(guān)閉,clean等等)
- 常見的操作命令都比較短叶雹,不需要記憶辣么長的命令
- 默認(rèn)同時(shí)在所有鏈接到電腦的手機(jī)上操作财饥,不需要一個(gè)個(gè)執(zhí)行
- 可以完全替換adb,內(nèi)部沒有實(shí)現(xiàn)的命令浑娜,代理到真正的adb來執(zhí)行
效果如下:(腳本 adbx)
# 打開快手
adbx start gif
# 關(guān)閉快手
adbx stop gif
# 清理快手
adbx clean gif
# 查看當(dāng)前的棧頂Activity
adbx top
# 截圖并展示
adbx cap
# 在所有手機(jī)上安裝apk
adbx install [apk]
# 在所有手機(jī)上卸載apk
adbx un [apk]
# 執(zhí)行正常的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
# 關(guān)閉快手
adb stop gif
# 清理快手
adb clean gif
# 查看當(dāng)前的棧頂Activity
adb top
# 截圖并展示
adb cap
# 在所有手機(jī)上安裝apk
adb install [apk]
# 在所有手機(jī)上卸載apk
adb un [apk]
# 執(zhí)行正常的adb 命令( 可以直接替代正常的adb)
adb shell pm list packages -3