完善tidevice逻辑
This commit is contained in:
@@ -6,11 +6,9 @@ import time
|
||||
from concurrent.futures import ThreadPoolExecutor, as_completed
|
||||
from pathlib import Path
|
||||
from typing import Dict, Optional, List
|
||||
|
||||
import wda
|
||||
from tidevice import Usbmux, ConnectionType
|
||||
from tidevice._device import BaseDevice
|
||||
|
||||
from Entity.DeviceModel import DeviceModel
|
||||
from Module.FlaskSubprocessManager import FlaskSubprocessManager
|
||||
from Utils.LogManager import LogManager
|
||||
@@ -19,15 +17,12 @@ from Utils.LogManager import LogManager
|
||||
class DeviceInfo:
|
||||
def __init__(self):
|
||||
self._port = 9110
|
||||
self._models: Dict[str, DeviceModel] = {} # udid -> model
|
||||
self._procs: Dict[str, subprocess.Popen] = {} # udid -> iproxy proc
|
||||
self._models: Dict[str, DeviceModel] = {}
|
||||
self._procs: Dict[str, subprocess.Popen] = {}
|
||||
self._manager = FlaskSubprocessManager.get_instance()
|
||||
self._iproxy_path = self._find_iproxy()
|
||||
self._pool = ThreadPoolExecutor(max_workers=6)
|
||||
|
||||
# 可选:10 秒一次扫野进程
|
||||
threading.Thread(target=self._janitor, daemon=True).start()
|
||||
|
||||
# ---------------- 主循环 ----------------
|
||||
def listen(self):
|
||||
while True:
|
||||
@@ -89,13 +84,20 @@ class DeviceInfo:
|
||||
except Exception:
|
||||
return 828, 1792, 2.0
|
||||
|
||||
...
|
||||
# ---------------- 原来代码不变,只替换下面一个函数 ----------------
|
||||
def _start_iproxy(self, udid: str, port: int) -> Optional[subprocess.Popen]:
|
||||
try:
|
||||
# 隐藏窗口的核心参数
|
||||
kw = {"creationflags": subprocess.CREATE_NO_WINDOW}
|
||||
return subprocess.Popen(
|
||||
[self._iproxy_path, "-u", udid, str(port), "9100"],
|
||||
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL
|
||||
stdout=subprocess.DEVNULL,
|
||||
stderr=subprocess.DEVNULL,
|
||||
**kw
|
||||
)
|
||||
except Exception:
|
||||
except Exception as e:
|
||||
print(e)
|
||||
return None
|
||||
|
||||
def _kill(self, proc: Optional[subprocess.Popen]):
|
||||
@@ -124,16 +126,11 @@ class DeviceInfo:
|
||||
base = Path(__file__).resolve().parent.parent
|
||||
name = "iproxy.exe"
|
||||
path = base / "resources" / "iproxy" / name
|
||||
print(str(path))
|
||||
if path.is_file():
|
||||
return str(path)
|
||||
raise FileNotFoundError(f"iproxy 不存在: {path}")
|
||||
|
||||
# ---------------- janitor(扫野进程) ----------------
|
||||
def _janitor(self):
|
||||
while True:
|
||||
time.sleep(10)
|
||||
self._cleanup_orphan_iproxy()
|
||||
|
||||
# ------------ Windows 专用:列出所有 iproxy 命令行 ------------
|
||||
def _get_all_iproxy_cmdlines(self) -> List[str]:
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user