打字的小强 发表于 2018-11-28 09:52

python调用adb脚本来实现群控安卓手机初探

本帖最后由 打字的小强 于 2018-11-28 10:05 编辑

一直想弄个真机群控,vnc监控,要用脚本语言控制手机好像只能用shell类似的adb脚本了。然后弄个vnc监控什么的。已经开始弄adb群控脚本了,自己只懂点python,并不会底层的什么东西,后期肯定要改底层的东西,用到c之类的语言了。搜集各种资料试了一下,已经实现了两个功能,挺有意思的。初步分享下adb群控原理

# !/usr/bin/python
# -*- coding:utf-8 -*-
import os
runapp_name = "com.tencent.mobileqq/.activity.SplashActivity"


def getDevicesAll():
    #获取所有的设备列表
    devices = []
    try:
      for dName_ in os.popen("adb devices"):
            if "\t" in dName_:
                if dName_.find("emulator") < 0:
                  devices.append(dName_.split("\t"))
      devices.sort(cmp=None, key=None, reverse=False)
    except:
      pass
    print("设备名称: %s 总数量:%s台" % (devices, len(devices)))
    return devices




def find_top_app(devices):
    # 循环输入顶层应用
    for dName in devices:
      try:
            out = os.popen('adb shell "dumpsys activity | grep "mFocusedActivity""').read()
            print(dName+"的当前顶层应用是:"+out)
      except:
            print(dName + "关闭失败")

def runtest(devices):
    # 打开应用
    for dName in devices:
      try:
          os.popen("adb -s " + dName +" shellam start -n "+runapp_name)
          print("启动成功")
      except:
            print(dName+"打开失败")




if __name__=="__main__":
    while True:
      try:
            devices = getDevicesAll()
      except:
            print("获取设备出错")

      res = input("输入1查看当前的顶层app;2启动qq:")
      if int(res)==1:
            try:
                find_top_app(devices)
            except:
                print("启动错误")
      elif int(res)==2:
            try:
                runtest(devices)
            except:
                print("启动错误")

打字的小强 发表于 2018-11-28 14:57

浯茗仔仔 发表于 2018-11-28 13:57
想问下楼主怎么用设备号区分手机的,adb devices获取的不都是一样的么,我以前公司做个这个,但是是同事搞 ...

参考帖子:https://www.aliyun.com/jiaocheng/26320.html 。每个设备都有一个设备id。

打字的小强 发表于 2018-11-28 10:11

yc19951005 发表于 2018-11-28 10:06
这个东西主要是干嘛的? 楼主能否说的简单一点,是利用Python通过adb命令实现人为的打开app什么的操作吗?

对啊,使用一个命令就可以打开N多手机的 app或者其他操作

yc19951005 发表于 2018-11-28 10:06

这个东西主要是干嘛的? 楼主能否说的简单一点,是利用Python通过adb命令实现人为的打开app什么的操作吗?

吾爱好地方 发表于 2018-11-28 10:13

目前只是简单控制,不过很有意思,希望楼主继续更新!

yunbaobei 发表于 2018-11-28 10:18

这是远程挖矿机器人专用的么

打字的小强 发表于 2018-11-28 10:21

吾爱好地方 发表于 2018-11-28 10:13
目前只是简单控制,不过很有意思,希望楼主继续更新!

关键是没钱没项目,弄着玩玩{:1_937:}

打字的小强 发表于 2018-11-28 10:22

yunbaobei 发表于 2018-11-28 10:18
这是远程挖矿机器人专用的么

什么远程挖矿,,并不是的,就是封装命令通过数据线或者wifi控制一群手机

wushaominkk 发表于 2018-11-28 10:47

创意很好{:1_919:}

队友呢? 发表于 2018-11-28 10:54

adb 不行的,不稳定,我之前也是尝试用E语言写了个调用adb的,adb不稳定,会崩溃

打字的小强 发表于 2018-11-28 10:58

队友呢? 发表于 2018-11-28 10:54
adb 不行的,不稳定,我之前也是尝试用E语言写了个调用adb的,adb不稳定,会崩溃

可能控制的手机太多了吧,那层主有何高见使用其他的办法?
页: [1] 2 3 4 5
查看完整版本: python调用adb脚本来实现群控安卓手机初探