python 批量安装包_Python批量安装卸载1000个apk的方法

都下载完了, 也验证了下载文件的版本号和MD5后,就要开始批量安装了,

然后开始尝试运行打开这个app, 做最基本的功能检点,最后就要考虑卸载App了。

本篇内容主要介绍如何用Python来批量实现安装apk,卸载apk。

备注:

一个手机不可能同时安装1000个apk,需要考虑每50-100个作为一组,进行安装,验证后卸载测试。

准备阶段

1.adb install -d -r XXX.apk 是安装apk的具体命令,

-d :downgrade的简称,编码出现提示说系统里已经有该app且其版本比当前安装的版本更高,即允许低版本的apk安装

-r : reinstall的简称,避免出现提示说这个app已经在系统里了而导致本次安装失败,即允许重装apk

综上:加了-d, -r就会更保险,确保apk最终能安装成功。

adb shell pm list package -3 可以列出所有已安装的第三方的App的包名。

何为第三方的App,即非系统自带(built-in)的App,后续自行安装的App都是属于第三方App, 比如以下是自行安装的百度地图,酷狗音乐,非系统App:

f9c5f4e637a21acde317eea8c8bf0800.png

2.adb shell pm uninstall + App包名, 可以卸载指定的包名的App。

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面向过程函数形式

其实这个案例批处理形式的脚本实现即可,

如果硬要用面向过程函数形式,也是可以考虑简单的把代码块预计封装下即可。

以下是“安装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面向对象类形式

其实这个案例批处理形式的脚本实现即可,

如果硬要用面向对象类形式,也是可以考虑简单地用以下类来实现。

本次优化,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设备有效连接,

以上代码的3种实现形式都可以直接运行,

比如保存为install_app.py, uninstall_app.py并放在桌面,

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

总结

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值