美文网首页Android研发利器
打造趁手的工具集(3):adb扩展

打造趁手的工具集(3):adb扩展

作者: 淡定小问题 | 来源:发表于2020-08-11 20:36 被阅读0次
    高效的秘密武器:打造趁手的工具集

    作为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}
    

    如上,可以发现几个影响效率的点

    1. 命令都比较长
    2. 需要记忆的东西比较多

    高效的秘诀,为自己打造趁手工具集合,那就动手制作一个adb扩展吧。我想要的一些特性:

    1. 不需要记忆完整包名,能够根据输入的缩写,自动找到app,并进行操作(打开,关闭,clean等等)
    2. 常见的操作命令都比较短,不需要记忆辣么长的命令
    3. 默认同时在所有链接到电脑的手机上操作,不需要一个个执行
    4. 可以完全替换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
    

    相关文章

      网友评论

        本文标题:打造趁手的工具集(3):adb扩展

        本文链接:https://www.haomeiwen.com/subject/axtydktx.html