准备工作
- adb工具包
- python3
代码解释
该Python函数的作用是通过ADB(Android Debug Bridge)工具获取已安装在Android设备上的所有应用包名及其文件路径,并将这些应用的APK文件从设备拉取到本地指定目录进行保存。
首先,函数通过subprocess.run()方法执行adb shell pm list packages -f命令,获取已安装应用的包名及其文件路径信息,并将结果保存在result变量中。
然后,通过判断指定的本地目录(base_dir)是否存在,若不存在则创建该目录。
接着,对获取的应用包名及其文件路径信息进行遍历处理。对每条信息,通过字符串切割获取应用的包名和文件路径。
根据包名创建本地相应目录(若该目录不存在),然后通过os.system()方法执行adb pull命令,将应用文件从设备拉取到本地指定目录。
代码
import os
import subprocess
# 定义基础目录路径,用于存储从手机拉取的APK文件
base_dir = 'd:/androidApp/'
# 使用subprocess模块运行adb命令,列出所有安装的应用包信息
result = subprocess.run(['adb', 'shell', 'pm list packages -f'], stdout=subprocess.PIPE, text=True)
# 获取命令行输出的结果
lst = result.stdout
# 检查基础目录是否存在,如果不存在则创建
if not os.path.exists(base_dir):
os.mkdir(base_dir)
# 遍历应用包信息,分离包名和路径,并下载到本地
for i in lst.split("\n"):
package_com = i[8:] # 提取包信息字符串,package:后面的内容
spt = package_com.rfind("=") # 查找等号的位置,以分割包路径和包名
package_path = package_com[:spt] # 提取包的路径
package_name = package_com[spt + 1:] # 提取包的名称
target_path = os.path.join(base_dir, package_name) # 计算目标存储路径
if not os.path.exists(target_path):
os.mkdir(target_path) # 如果目标路径不存在,则创建
# 使用adb pull命令将应用从设备上拉取到本地指定路径
os.system("adb pull " + package_path + " " + target_path)

结语
本篇文章主要是记录一下临时用到的脚本,并没有对其进行更深层次的测试,并且只是adb命令的使用,没啥技术含量,各位看官看看就好,有需要自拿。


评论 0
还没有评论,来说点什么吧。