吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6580|回复: 9
收起左侧

[Python 转载] 带界面的常用控制手机adb命令

[复制链接]
jxn|android 发表于 2019-3-29 17:36
废话不多说直接上代码 后期应该还会加一些adb工具
code6.png
code5.png
code4.png
code3.png
code2.png
code1.png
WX20190329-173031@2x.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| jxn|android 发表于 2019-3-29 17:40
为什么图片是倒叙的 我是按照正序传的 将就着看看吧
xiaoyingmeiz 发表于 2019-3-29 18:06
这是py代码吗?用什么编译。。。 楼主贴图有点。。。凌乱
 楼主| jxn|android 发表于 2019-3-29 20:33
我是按照顺序 上传的 但是显示乱了  python 直接安装环境接可以了
newbie2019 发表于 2019-6-19 14:34
本帖最后由 newbie2019 于 2019-6-19 14:35 编辑

只有倒序的图片,看得好累。强迫症发作,把代码重新敲了一遍,贴出来方便大家学习取用。

[Python] 纯文本查看 复制代码
import os
from tkinter import *
import tkinter
from tkinter import filedialog

master =Tk()
master.geometry("400x400+10+10")
f =Frame()
f.pack()
l = Label(f, text="显示的内容在这里展示")
l.pack(side=LEFT)
jieguo = Entry(f)
jieguo.pack()
f1 = Frame()
f1.pack()

etPath = StringVar()
f2 = Frame()
f2.pack()
f3 = Frame()
f3.pack()
#全局变量
device = []
path = ''
# package = "com.js.pharmacy2"
# activity = "com.js.pharmacy2.activity.LoginActivity'
package = "你的包名"
activity = "你启动的Activity名"

def callback(type):     #必须跟一个参数
    if type == 1:       #输出的序列号中有\n\t
        f = os.popen(r"adb devices", "r")
        devices = f.read()
        shuchu = devices.replace('List of devices attached', '')
        f.close()
        patter = re.compile('(.*?)' + 'device', re.S)
        global device
        device = patter.findall(shuchu)
        # result 为值
        jieguo.delete(0, END)
        print(device)
    if type == 2:       #获取顶层Activity
        for dName in device:
            try:
                dName = dName.replace('\n', '').replace('\t', '')
                out = os.popen('adb -s ' + dName + ' shell dumpsys activity | grep mFocusedActivity', 'r').read()
                print(dName + "的当前顶层应用是:" + out)
            except:
                print(dName + "关闭失败")
    if type == 3:
        for dName in device:
            try:
                dName = dName.replace('\n', '').replace('\t','')
                # os.popen('adb -s ' + dName + ' shell am kill ' + package)
                os.popen("adb -s" + dName + " shell am start -n " + package + '/' + activity)
                print("启动成功")
            except:
                print(dName + "打开失败")
    if type == 4:
        for dName in device:
            try:
                dName = dName.replace('\n', '').replace('\t', '')
                os.popen("adb -s" + dName + " shell am start -D -n " + package + '/' + activity)
                print("启动成功")
            except:
                print(dName + "打开失败")
    if type == 5:
        for dName in device:
            try:
                dName = dName.replace('\n', '').replace('\t', '')
                os.popen("adb -s" + dName + " shell am force-stop " + package)
                print("关闭成功")
            except:
                print(dName + "关闭失败")
    if type == 6:
        for dName in device:
            try:
                dName = dName.replace('\n', '').replace('\t', '')
                f = os.popen(r"adb -s" + dName + " install " + path, 'r')                
                result = f.read()
                print("安装成功")
            except:
                print(dName + "安装失败")
    if type == 7:
        for dName in device:
            try:
                dName = dName.replace('\n', '').replace('\t', '')
                os.popen("adb -s" + dName + " uninstall " + package)
                print("卸载成功")
            except:
                print(dName + "卸载失败")
                
                
def selectPath():
    global path
    path = tkinter.filedialog.askopenfilename()
    etPath.set(path)
    
class Application(Frame):
    b = Button(f, text='查询手机序号', command=lambda: callback(1))
    b.pack(side=LEFT)
    
    b = Button(f, text='获取最上层Activity', command=lambda: callback(2))
    b.pack(side=LEFT)
    
    b = Button(f1, text='打开app', command=lambda: callback(3))
    b.pack(side=LEFT)
    
    b = Button(f1, text='调试app', command=lambda: callback(4))
    b.pack(side=LEFT)
    
    b = Button(f1, text='关闭app', command=lambda: callback(5))
    b.pack(side=LEFT)
    
    Label(f2, text='目标路径:').grid(row=0, column=0)
    Entry(f2, textvariable=etPath).grid(row=0, column=1)
    Button(f2, text='路径选择', command=selectPath).grid(row=0, column=2)
    
    b = Button(f1, text='关闭app', command=lambda: callback(5))
    b.pack(side=LEFT)
    
    Label(f2, text='目标路径:').grid(row=0, column=0)
    Entry(f2, textvariable=etPath).grid(row=0, column=1)
    Button(f2, text='路径选择', command=selectPath).grid(row=0, column=2)
    
    b = Button(f3, text='安装apk', command=lambda: callback(6))
    b.pack(side=LEFT)
    
    b = Button(f3, text='卸载应用', command=lambda: callback(7))
    b.pack(side=LEFT)
    
    
app = Application()

# 设置窗口标题
app.master.title('Hello World')
# 主消息循环
app.mainloop()
alongzhenggang 发表于 2019-7-18 14:16
不是有个adbgui 吗
理性的疯子 发表于 2019-9-22 14:26
厉害了楼主
hanlu5016 发表于 2019-9-22 20:46
没看懂,python 明白 接下来怎么操作,手机?
头像被屏蔽
yike911 发表于 2019-9-23 23:53
提示: 作者被禁止或删除 内容自动屏蔽
lilips 发表于 2019-9-24 09:08
可以试试 uiautomator2 这个~更简单易用
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 15:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表