都下载完了, 也验证了下载文件的版本号和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:
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
运行,当然也可以双击运行。
总结
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]