Loading... # 准备工作 - adb工具包 - python3 # 代码解释 该Python函数的作用是通过ADB(Android Debug Bridge)工具获取已安装在Android设备上的所有应用包名及其文件路径,并将这些应用的APK文件从设备拉取到本地指定目录进行保存。 首先,函数通过subprocess.run()方法执行adb shell pm list packages -f命令,获取已安装应用的包名及其文件路径信息,并将结果保存在result变量中。 然后,通过判断指定的本地目录(base_dir)是否存在,若不存在则创建该目录。 接着,对获取的应用包名及其文件路径信息进行遍历处理。对每条信息,通过字符串切割获取应用的包名和文件路径。 根据包名创建本地相应目录(若该目录不存在),然后通过os.system()方法执行adb pull命令,将应用文件从设备拉取到本地指定目录。 # 代码 ```python 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) ``` ![image.png](https://www.zunmx.top/usr/uploads/2024/04/1069721030.png) # 结语 本篇文章主要是记录一下临时用到的脚本,并没有对其进行更深层次的测试,并且只是`adb`命令的使用,没啥技术含量,各位看官看看就好,有需要自拿。 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏