适配iOS高版本

This commit is contained in:
2025-10-21 15:43:02 +08:00
parent d543c6f757
commit 3da3fabe79
10 changed files with 332 additions and 11 deletions

View File

@@ -1,17 +1,21 @@
import os
import signal
import subprocess
import sys
import threading
import time
from concurrent.futures import ThreadPoolExecutor, as_completed
from pathlib import Path
from typing import Dict, Optional, List
import tidevice
import usb
import wda
from tidevice import Usbmux, ConnectionType
from tidevice._device import BaseDevice
from Entity.DeviceModel import DeviceModel
from Entity.Variables import WdaAppBundleId
from Entity.Variables import WdaAppBundleId, wdaFunctionPort, wdaScreenPort
from Module.FlaskSubprocessManager import FlaskSubprocessManager
from Module.IOSActivator import IOSActivator
from Utils.LogManager import LogManager
import socket
@@ -36,7 +40,6 @@ class DeviceInfo:
orphan_gc_tick = 0
while True:
online = {d.udid for d in Usbmux().device_list() if d.conn_type == ConnectionType.USB}
# 拔掉——同步
for udid in list(self._models):
if udid not in online:
@@ -107,8 +110,16 @@ class DeviceInfo:
print("进入启动wda方法")
try:
dev = tidevice.Device(udid)
print("获取tidevice对象成功准备启动wda")
dev.app_start(WdaAppBundleId)
systemVersion = int(dev.product_version.split(".")[0])
# 判断运行wda的逻辑
if systemVersion > 17:
ios = IOSActivator()
threading.Thread(
target=ios.activate,
args=(udid,)
).start()
else:
dev.app_start(WdaAppBundleId)
print("启动wda成功")
time.sleep(3)
return True
@@ -118,7 +129,7 @@ class DeviceInfo:
def _screen_info(self, udid: str):
try:
c = wda.USBClient(udid, 8100)
c = wda.USBClient(udid, wdaFunctionPort)
c.home()
size = c.window_size()
scale = c.scale
@@ -139,7 +150,7 @@ class DeviceInfo:
flags = subprocess.CREATE_NO_WINDOW | subprocess.CREATE_NEW_PROCESS_GROUP
return subprocess.Popen(
[self._iproxy_path, "-u", udid, str(port), "9100"],
[self._iproxy_path, "-u", udid, str(port), wdaScreenPort],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
creationflags=flags