修复bug
This commit is contained in:
@@ -40,7 +40,13 @@ class IOSActivator:
|
||||
cmd = [*launcher, *args]
|
||||
print("[pmd3]", " ".join(map(str, cmd)))
|
||||
try:
|
||||
return subprocess.check_output(cmd, text=True, stderr=subprocess.STDOUT, env=env) or ""
|
||||
return subprocess.check_output(
|
||||
cmd,
|
||||
text=True,
|
||||
stderr=subprocess.STDOUT,
|
||||
env=env,
|
||||
**self._win_hidden_popen_kwargs()
|
||||
) or ""
|
||||
except subprocess.CalledProcessError as exc:
|
||||
raise RuntimeError(exc.output or f"pymobiledevice3 执行失败,退出码 {exc.returncode}")
|
||||
|
||||
@@ -62,12 +68,17 @@ class IOSActivator:
|
||||
cmd = self._ensure_str_list(cmd)
|
||||
print("[pmd3-subproc]", " ".join(cmd))
|
||||
try:
|
||||
out = subprocess.check_output(cmd, text=True, stderr=subprocess.STDOUT, env=env)
|
||||
out = subprocess.check_output(
|
||||
cmd,
|
||||
text=True,
|
||||
stderr=subprocess.STDOUT,
|
||||
env=env,
|
||||
**self._win_hidden_popen_kwargs()
|
||||
)
|
||||
return out or ""
|
||||
except subprocess.CalledProcessError as exc:
|
||||
raise RuntimeError(exc.output or f"pymobiledevice3 子进程执行失败,代码 {exc.returncode}")
|
||||
|
||||
|
||||
# =========================================================================
|
||||
# 旧版环境依赖的替代方案:仅用于启动 tunneld 的子进程(需要常驻)
|
||||
# =========================================================================
|
||||
@@ -105,7 +116,11 @@ class IOSActivator:
|
||||
try:
|
||||
out = subprocess.check_output(
|
||||
[str(cand), "-c", "import pymobiledevice3;print('ok')"],
|
||||
text=True, stderr=subprocess.STDOUT, env=env, timeout=6
|
||||
text=True,
|
||||
stderr=subprocess.STDOUT,
|
||||
env=env,
|
||||
timeout=6,
|
||||
**self._win_hidden_popen_kwargs()
|
||||
)
|
||||
if "ok" in out:
|
||||
print(f"[IOSAI] ✅ sidecar selected: {cand}")
|
||||
@@ -135,7 +150,11 @@ class IOSActivator:
|
||||
try:
|
||||
out = subprocess.check_output(
|
||||
[py, "-c", "import pymobiledevice3;print('ok')"],
|
||||
text=True, stderr=subprocess.STDOUT, env=env, timeout=6
|
||||
text=True,
|
||||
stderr=subprocess.STDOUT,
|
||||
env=env,
|
||||
timeout=6,
|
||||
**self._win_hidden_popen_kwargs()
|
||||
)
|
||||
if "ok" in out:
|
||||
print(f"[IOSAI] ✅ system python selected: {py}")
|
||||
@@ -145,15 +164,26 @@ class IOSActivator:
|
||||
|
||||
raise RuntimeError("未检测到可用的 pymobiledevice3(建议携带 python-rt 或安装系统 Python+pmd3)。")
|
||||
|
||||
|
||||
def _ensure_str_list(self, seq):
|
||||
return [str(x) for x in seq]
|
||||
|
||||
def _win_hidden_popen_kwargs(self):
|
||||
"""在 Windows 上隐藏子进程窗口;非 Windows 返回空参数。"""
|
||||
if os.name != "nt":
|
||||
return {}
|
||||
import subprocess as _sp
|
||||
si = _sp.STARTUPINFO()
|
||||
si.dwFlags |= _sp.STARTF_USESHOWWINDOW
|
||||
si.wShowWindow = 0 # SW_HIDE
|
||||
return {
|
||||
"startupinfo": si,
|
||||
"creationflags": getattr(_sp, "CREATE_NO_WINDOW", 0x08000000),
|
||||
}
|
||||
|
||||
# =========================================================================
|
||||
# 功能函数-
|
||||
# =========================================================================
|
||||
def _auto_mount_developer_disk(self, udid: str, retries: int = 3, backoff_seconds: float = 2.0) -> None:
|
||||
print("[mounter] Developer disk image mounted.")
|
||||
"""
|
||||
使用进程内 CLI:pymobiledevice3 mounter auto-mount(带重试)
|
||||
"""
|
||||
@@ -310,6 +340,7 @@ class IOSActivator:
|
||||
bufsize=1,
|
||||
universal_newlines=True,
|
||||
env=env2,
|
||||
**self._win_hidden_popen_kwargs()
|
||||
)
|
||||
|
||||
captured: list[str] = []
|
||||
@@ -440,5 +471,3 @@ class IOSActivator:
|
||||
return udid.lower() in (line or "").lower()
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user