ADB导出指定应用APK安装包

2022-06-04  本文已影响0人  RZWP

要求

思路

整体思路.png

步骤

  1. 手动启动应用
  2. 栈顶获取包名
➜  ~ adb shell dumpsys activity top | grep -w ACTIVITY | tail -n 1 | awk '{ printf $2}' | cut -d "/" -f 1
com.android.browser
  1. 获取安装路径
➜  ~ adb shell pm path com.android.browser | cut -d ":" -f 2
/data/app/~~1VThWJXJ1-CLosRKqPgHtg==/com.android.browser-QoQ8ZoUwRi1jCEu6w-B0Mw==/base.apk
  1. 导出安装包到指定位置 (如:~/Desktop)
➜  ~ adb pull /data/app/~~1VThWJXJ1-CLosRKqPgHtg==/com.android.browser-QoQ8ZoUwRi1jCEu6w-B0Mw==/base.apk ~/Desktop
/data/app/~~1VThWJXJ1-CLosRKqPgHtg==/com.android.browser-QoQ8ZoUwRi1...apk: 1 file pulled, 0 skipped. 32.8 MB/s (132671840 bytes in 3.860s)
  1. aapt 解析APP中文名称,方便进行重命名 (可选, 可用于脚本中自动化处理)
➜  ~ aapt d badging ~/Desktop/base.apk | grep "application-label-zh-CN" | cut -d ':' -f 2 | sed "s/'//g"
浏览器
➜  ~ mv ~/Desktop/base.apk ~/Desktop/浏览器.apk

组合

组合以上命令使用
如在 .zshrc 或 .bashrc 中添加 function 函数,通过Terminal一键执行

function export_apk() {
    if [ ! -d "$1" ]; then
        echo "导出目录无效"
        return
    fi
    # 导出后绝对路径
    save_dir=$(
        cd ${1%/}
        pwd
    )
    echo "正在导出"
    pkg_name=$(adb shell dumpsys activity top 2>/dev/null | grep -w ACTIVITY | tail -n 1 | awk '{ printf $2}' | cut -d "/" -f 1)
    apk_path=$(adb shell pm path "$pkg_name" 2>/dev/null | cut -d ":" -f 2)

    # 导出后的默认名称为 {包名}.apk
    def_path=${save_dir}/"$pkg_name".apk
    output=$(adb pull "$apk_path" "$def_path")

    # 检查导出是否成功
    if [[ $output != *"file pulled"* ]]; then
        printf "导出失败 ($output)\n"
        return
    fi

    # 如果环境中配置了AAPT命令,则尝试解析APK对应的中文名,并进行重命名
    if [[ -x "$(command -v "aapt")" ]]; then
        app_name=$(aapt d badging "$def_path" 2>/dev/null | grep "application-label-zh-CN" | cut -d ':' -f 2 | sed "s/'//g")
        if [[ -n $app_name ]]; then
            new_path="$save_dir"/"$app_name".apk
            mv "$def_path" "$new_path"
            printf "导出成功 %s\n" "$new_path"
            return
        fi
    fi
    printf "导出成功 %s\n" "$def_path"
}

使用方法:

export_apk {保存的位置} 

效果演示:

上一篇下一篇

猜你喜欢

热点阅读