Python批量安装卸载1000个apk的方法

慢慢来
慢慢来
发布时间:2026-10-13 | 4人浏览过
原创

本文介绍如何使用Python脚本批量安装和卸载Android APK文件。通过ADB命令结合Python的os模块,实现了从文件读取、批量安装到批量卸载的完整流程。文中提供了批处理、面向过程函数及面向对象类三种实现方式,并建议每50-100个APK为一组进行分批操作,以应对单设备无法同时安装1000个APK的限制。

Python批量安装卸载1000个apk的方法

文件下载完成并验证版本号与MD5后,接下来进入批量安装环节。

随后尝试运行打开该应用,执行最基本的功能检点,最后需考虑卸载应用的操作。

本文主要介绍如何利用Python批量实现APK的安装与卸载。

注意事项:

单个手机无法同时安装1000个APK,建议将每50-100个APK作为一组,完成安装、验证后再进行卸载测试。

准备阶段

准备阶段

1. adb install -d -r XXX.apk 是执行APK安装的具体命令。

-d 是 downgrade 的缩写,当系统提示已存在更高版本的该应用时,此参数允许安装低版本APK。 -r 是 reinstall 的缩写,用于避免系统提示应用已存在而导致安装失败,即允许覆盖重装。 综上:添加 -d 和 -r 参数可提高安装成功率,确保APK最终安装成功。 adb shell pm list package -3 用于列出所有已安装的第三方应用的包名。 所谓第三方应用,是指非系统内置(built-in)的应用,即后续自行安装的应用均属于此类。例如以下自行安装的百度地图、酷狗音乐,均不属于系统应用:

 

2. adb shell pm uninstall + 应用包名,用于卸载指定包名的应用。

Python批处理脚本形式

Python批处理脚本形式

掌握批处理脚本的核心在于批量顺序执行语句。

以下是“安装APK”的脚本示例:


# coding=utf-8
import os
# 读取downloaded_apk文件夹下的所有App文件,进行批量安装
curpath = os.getcwd()
apk_dir = os.path.join(curpath, "downloaded_apk")
apk_list = os.listdir(apk_dir)
for apk in apk_list:
 print("正在安装%s..." % apk)
 apk_path = os.path.join(apk_dir, apk)
 os.system("adb install -d -r %s" % apk_path)
print("所有App已经安装完毕!...")
os.system("pause")

以下是“卸载APK”的脚本示例:


# coding=utf-8
import os
# 读取第三方App列表并进行卸载
s = os.popen("adb shell pm list package -3").read()
for line in s.splitlines():
 if len(line) > 2:
  appname = line.replace("package:", "")
  print("正在卸载包名为%s的App" % appname)
  os.system("adb shell pm uninstall %s" % appname)
print("所有App已经卸载完毕!...")
os.system("pause")

Python面向过程函数形式

Python面向过程函数形式

实际上,本案例使用批处理脚本形式即可实现。

若坚持使用面向过程函数形式,也可考虑将代码块简单封装。

以下是“安装APK”的函数形式:


# coding=utf-8
import os

def install_apk():
 '''读取downloaded_apk文件夹下的所有App文件,进行批量安装'''
 curpath = os.getcwd()
 apk_dir = os.path.join(curpath, "downloaded_apk")
 apk_list = os.listdir(apk_dir)
 for apk in apk_list:
  print("正在安装%s..." % apk)
  apk_path = os.path.join(apk_dir, apk)
  os.system("adb install -d -r %s" % apk_path)
 print("所有App已经安装完毕!...")

install_apk()
os.system("pause")

以下是“卸载APK”的函数形式:


# coding=utf-8
import os

def uninstall_apk():
 '''读取第三方App列表并进行卸载'''
 s = os.popen("adb shell pm list package -3").read()
 for line in s.splitlines():
  if len(line) > 2:
   appname = line.replace("package:", "")
   print("正在卸载包名为%s的App" % appname)
   os.system("adb shell pm uninstall %s" % appname)
 print("所有App已经卸载完毕!...")

uninstall_apk()
os.system("pause")

Python面向对象类形式

Python面向对象类形式

同样,本案例使用批处理脚本形式即可实现。

若坚持使用面向对象类形式,可考虑使用以下简单的类来实现。

本次优化中,class 类名(object):后续建议加上 object,代表父类。

类最基本的特征是继承。如果我们不清楚当前类的父类是什么,

可以直接使用 object,代表它是所有类的父类;如果知道具体父类,则应替换为具体的父类类名。

以下是“安装APK”的类形式:


# coding=utf-8
import os
class ApkInstaller(object):
 '''用于安装apk'''
 def __init__(self):
  pass
 def install_apk(self):
  '''读取downloaded_apk文件夹下的所有App文件,进行批量安装'''
  curpath = os.getcwd()
  apk_dir = os.path.join(curpath, "downloaded_apk")
  apk_list = os.listdir(apk_dir)
  for apk in apk_list:
   print("正在安装%s..." % apk)
   apk_path = os.path.join(apk_dir, apk)
   os.system("adb install -d -r %s" % apk_path)
  print("所有App已经安装完毕!...")
if __name__ == '__main__':
 a_obj = ApkInstaller()
 a_obj.install_apk()
 os.system("pause")

以下是“卸载APK”的类形式:


# coding=utf-8
import os

class ApkUnstaller(object):
  '''用于卸载App'''
  def __init__(self):
    pass
  def uninstall_apk(self):
    '''读取第三方App列表并进行卸载'''
    s = os.popen("adb shell pm list package -3").read()
    for line in s.splitlines():
      if len(line) > 2:
        appname = line.replace("package:", "")
        print("正在卸载包名为%s的App" % appname)
        os.system("adb shell pm uninstall %s" % appname)
    print("所有App已经卸载完毕!...")

if __name__ == '__main__':
  a_obj = ApkUnstaller()
  a_obj.uninstall_apk()
  os.system("pause")

运行方式

运行方式

确保Android设备已通过USB线与电脑连接,且ADB设备有效连接。

上述代码的三种实现形式均可直接运行。

例如保存为install_app.py, uninstall_app.py并放置在桌面。

建议python install_app.py, python uninstall_app.py运行,当然也可以双击运行。

总结

总结

到此这篇关于Python批量安装卸载1000个APK的文章就介绍到这了,更多相关Python批量安装卸载APK内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表