使用Python编写apk批量安装工具
git地址:https://github.com/huijizyf/python-apkInstaller.git
背景
公司项目安卓系统内置应用数量较多,系统编译完成刷入系统时UserData数量太大,导致部分应用未自动安装,因此使用新的安装方式。
实现方式
使用pyhton实现,可在多平台运行,使用tkiner编写图形界面,简单快捷
代码
#-*- coding: UTF-8 -*-
from Tkinter import *
import os
import commands
import tkMessageBox
class Application(Frame):
apk_list=list()
listbox=''
logbox=''
def __init__(self, master=None):
self.init_apk_list()
Frame.__init__(self, master,height=80,width=80)
self.listbox = Listbox(self,width=50,selectmode=MULTIPLE)
self.logbox=Listbox(self,width=50,height=20)
self.pack()
self.init_ui()
def init_apk_list(self):
pathDir = os.listdir("./apk")
for sub_file in pathDir:
print sub_file
if(sub_file.endswith('.apk')):
self.apk_list.append(sub_file)
def init_ui(self):
for apk_name in self.apk_list:
self.listbox.insert(END,apk_name)
self.listbox.pack()
selectAllBtn=Button(self,text="全部选中",command=self.selectAll)
selectAllBtn.pack()
install_btn=Button(self,text="开始安装",command=self.start_install_apk)
install_btn.pack()
self.logbox.pack()
def selectAll(self):
self.listbox.selection_set(0,self.listbox.size())
def start_install_apk(self):
successed=0
failed=0
selected=self.listbox.curselection()
self.logbox.insert(END,"准备安装apk")
self.logbox.insert(END,"共有"+str(self.listbox.size())+"个应用,将有"+str(len(selected))+"个应用被安装")
self.logbox.insert(END,"")
self.logbox.insert(END,"--------------------------------------------")
self.logbox.insert(END,"")
for index in selected:
apk=self.apk_list[index]
self.logbox.insert(END,"准备安装: "+apk)
(status, output) = commands.getstatusoutput('adb install -r ./apk/'+apk)
print status,output
if status==0 and ("Success" in output):
self.logbox.insert(END,"安装成功: "+apk)
successed=successed+1
else:
self.logbox.insert(END,"安装失败: "+apk)
self.logbox.insert(END,"失败信息:"+output)
failed=failed+1
self.logbox.insert(END,"")
self.update_idletasks()
self.logbox.insert(END,"--------------------------------------------")
self.logbox.insert(END,"应用安装结束!!")
self.logbox.insert(END,"--------------------------------------------")
self.logbox.insert(END,"安装成功:"+str(successed)+"个,安装失败:"+str(failed)+"个,请查看上方日志")
app = Application()
app.master.title('APK安装器')
app.mainloop()