目录
前言:
一般来说app的安装包我们都是从网络下载的,但是手机系统自带的app一般是下载不到的,因此需要从手机里直接
拷贝出来,每次都要输一些adb指令太累了,因此写了个python脚本,自动把app安装包给拉出来。
流程:
先启动app,然后用 dumpsys 命令获取当前窗口的app的包名,然后用 pm 命令获取该包名的apk包的路径,最后用adb pull 出来即可。
python代码:
# -*- coding: UTF-8 -*-
import os
#自动 pull 安卓顶级窗口app的apk包
debug = True #输出运行过程
#获取顶级窗口app的包名
cmd0 = """ adb shell " dumpsys activity top |grep ACT | awk -F / '{print $1}'|awk '{print $2}' " > packetName """
#获取包的apk路径
cmd1 = """ adb shell "pm path %s" > packetPath """
#拉出来
cmd2 = """ adb pull %s """
cmd3 = """ del packetName """
cmd4 = """ del packetPath """
os.system(cmd0) #获取顶级窗口app的包名
try:
f = open("packetName","r")
pkname = f.read()[:-2] #读取包名,除去最后的换行符
if debug == True:
print("Packate name : ")
print(pkname)
f.close()
cmd1 = cmd1 % pkname #格式化第二条指令,用来获取包的路径
if debug == True:
print("second cmd is : ")
print(cmd1)
os.system(cmd1)
f = open("packetPath","r")
pkpath=f.read()[:-2] #获取 apk 的路径,注意,还需要除去开头的 package字符串
pkpath= pkpath.split(":")[1]
f.close()
cmd2 = cmd2 % pkpath
if debug == True :
print("third cmd is : ")
print(cmd2)
os.system(cmd2)
os.system(cmd3)
os.system(cmd4)
except Exception as e :
print(e)