基于Python实现批量安装android apk包

by:授客 QQ:1033553122

1.相关软件包及文件下载

下载地址:adb软件包及批量安装apk包的py文件.zip

2.测试环境

Win7 64位

Python 3.3.2

3.用法及代码show

用法:

把.apk包放入apk目录下,然后进入到install_apk_once_many.py所在目录,运行程序:

python install_apk_once_many.py

运行结果:


代码展示


#!/usr/bin/env python

#
-*- coding:utf-8 -*-


__author__
=
'shouke'


import

subprocess
import

os

workdir
= os.getcwd()
apk_path
= os.path.join(workdir,
'apk'
)
adb_apth
= os.path.join(workdir,
'adb.exe'
)

p
= subprocess.Popen(adb_apth +
' root'
,

stdout=subprocess.PIPE,

stderr=subprocess.PIPE,

shell=True,

universal_newlines=True)
try:
    p.communicate()
    if

p.returncode:
        print('运行出错,程序已退出')
        exit()
except

Exception
as

e:
    p.kill()

filename_list
= os.listdir(apk_path)

fail_cnt
=
0   #
统计安装成功的包数

pass_cnt
=
0   #
统计安装失败的包数

fail_list
= []
# 存放安装失败的包文件名


for

filename
in

filename_list:
    if

os.path.splitext(filename)[1]
==
'.apk'
:

# 判断是否是apk包

        print('正在安装apk包:%s'

% filename)
        p
= subprocess.Popen(adb_apth +
' install -r apk/'

+ filename,
stdout=subprocess.PIPE,

stderr=subprocess.PIPE,

universal_newlines=True,

shell=True)

# adb install -r 如果已存在则覆盖安装

        try:
            outs
= p.communicate()[0]
            if

outs.find('Success'):
                print('安装成功\n')
                pass_cnt
= pass_cnt +
1
            else:
                print('安装失败\n')
                fail_cnt
= fail_cnt +
1
                fail_list.append(filename)
        except

Exception
as

e:
            p.kill()

print('安装成功总数:',
pass_cnt)
print('安装失败总数:',
fail_cnt)
print

('安装失败的文件有:',
fail_list)


 


注:

adb root   以root权限重新启动 adb的守护进程


 

最新文章

  1. 冰冻三尺非一日之寒--web框架Django(三)
  2. mysql5.5 物理删除binlog文件导致的故障
  3. QT不同版本编译
  4. [译]关于iOS和OS X废弃的API你需要知道的一切
  5. hdu1247 Hat’s Words
  6. VEP安装指南
  7. python进阶
  8. js学习--浏览器对象计时器setInterval()与setTimeout()的使用与区别
  9. Java 反射机制详解
  10. Cell.reuseIdentifier 指什么
  11. BZOJ 3640: JC的小苹果 [概率DP 高斯消元 矩阵求逆]
  12. 洞见世界(1): 拉勾网大数据告诉你, 会计最高月薪达33k!
  13. Dijkstra算法——计算一个点到其他所有点的最短路径的算法
  14. java并发请求多个接口,顺序返回
  15. 根据文字动态计算Label高度或宽度
  16. 高度可配置的 Linux 内存守护程序 Nohang!
  17. 第一章 初始STM32
  18. Hibernate(6)关联关系_单向n对1
  19. mysql覆盖索引详解
  20. UVA 11584 Partitioning by Palindromes (字符串区间dp)

热门文章

  1. 【PHP篇】面向对象基础
  2. mongoose的基本操作方法
  3. 通过 Emoji 表情标识 Git 每次提交的信息
  4. 分布式事务解决方案以及 .Net Core 下的实现(上)
  5. mysql 开发基础系列20 事务控制和锁定语句(上)
  6. 剑指offer-学习笔记
  7. 如何正确的在项目中接入微信JS-SDK
  8. vue-06-过度和动画
  9. HTML语法介绍
  10. 教你用Python创建瀑布图