From 51f638f389d33528cf7c831f71488655a1a08f36 Mon Sep 17 00:00:00 2001 From: milk <53408947@qq.com> Date: Wed, 19 Nov 2025 17:23:41 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E4=BC=98=E5=8C=96=E3=80=82?= =?UTF-8?q?=E7=98=A6=E8=BA=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +-- Entity/DeviceModel.py | 2 -- Module/DeviceInfo.py | 17 +++++++++-------- Module/FlaskService.py | 22 +++++++++++----------- Module/FlaskSubprocessManager.py | 9 +++------ Module/Main.py | 12 ++++-------- Utils/JsonUtils.py | 1 - Utils/OCRUtils.py | 1 - Utils/Requester.py | 1 - build.bat | 19 +++++++++++-------- 10 files changed, 39 insertions(+), 48 deletions(-) diff --git a/.gitignore b/.gitignore index edda3ee..ef7a511 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ __pycache__/ *.pyd *.py[cod] *$py.class +build.bat # Distribution / packaging .Python @@ -128,6 +129,4 @@ dmypy.json # Cython debug symbols cython_debug/ - build-tidevice.bat -build.bat \ No newline at end of file diff --git a/Entity/DeviceModel.py b/Entity/DeviceModel.py index d4d595f..8720e70 100644 --- a/Entity/DeviceModel.py +++ b/Entity/DeviceModel.py @@ -1,5 +1,3 @@ -# from getpass import fallback_getpass - # 设备模型 class DeviceModel(object): diff --git a/Module/DeviceInfo.py b/Module/DeviceInfo.py index f9a1b4a..5f77b26 100644 --- a/Module/DeviceInfo.py +++ b/Module/DeviceInfo.py @@ -7,23 +7,24 @@ - iproxy 守护:本地端口 + /status 探活,不通则自愈重启;连续失败达阈值才移除 """ import datetime +import http.client +import json import os -import sys -import time -import threading -import subprocess import socket +import subprocess +import sys +import threading +import time from concurrent.futures import ThreadPoolExecutor from pathlib import Path -from typing import Dict, Optional, List, Any -import platform +from typing import Dict, Optional + import psutil -import http.client import tidevice import wda -from flask import json from tidevice import Usbmux, ConnectionType from tidevice._device import BaseDevice + from Entity.DeviceModel import DeviceModel from Entity.Variables import WdaAppBundleId, wdaScreenPort, wdaFunctionPort from Module.FlaskSubprocessManager import FlaskSubprocessManager diff --git a/Module/FlaskService.py b/Module/FlaskService.py index 40ff274..9f8f788 100644 --- a/Module/FlaskService.py +++ b/Module/FlaskService.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- import json +import logging import os import socket import threading @@ -7,24 +8,23 @@ import time from pathlib import Path from queue import Queue from typing import Any, Dict, List -import anyio -from quart import Quart -from quart_cors import cors -from Entity import Variables -from Utils.AiUtils import AiUtils -from Utils.IOSAIStorage import IOSAIStorage -from Utils.LogManager import LogManager +import anyio import wda from quart import Quart, request, g +from quart_cors import cors + +import Entity.Variables as ev +from Entity import Variables from Entity.ResultData import ResultData +from Entity.Variables import addModelToAnchorList, wdaFunctionPort +from Utils.AiUtils import AiUtils from Utils.ControlUtils import ControlUtils +from Utils.IOSAIStorage import IOSAIStorage +from Utils.JsonUtils import JsonUtils +from Utils.LogManager import LogManager from Utils.ThreadManager import ThreadManager from script.ScriptManager import ScriptManager -from Entity.Variables import addModelToAnchorList, wdaFunctionPort -import Entity.Variables as ev -from Utils.JsonUtils import JsonUtils -import logging for name in ('werkzeug', 'werkzeug.serving'): log = logging.getLogger(name) diff --git a/Module/FlaskSubprocessManager.py b/Module/FlaskSubprocessManager.py index 09fd0aa..14d1129 100644 --- a/Module/FlaskSubprocessManager.py +++ b/Module/FlaskSubprocessManager.py @@ -1,17 +1,14 @@ # -*- coding: utf-8 -*- -import logging -import subprocess -import sys -import threading import atexit import json import os import socket +import subprocess +import sys +import threading import time from pathlib import Path from typing import Optional, Union, Dict, List - -import psutil from Utils.LogManager import LogManager diff --git a/Module/Main.py b/Module/Main.py index 8472715..bae5465 100644 --- a/Module/Main.py +++ b/Module/Main.py @@ -4,18 +4,14 @@ import os import sys from pathlib import Path -from asgiref.wsgi import WsgiToAsgi -from sympy import false - -from Utils.AiUtils import AiUtils -from Utils.LogManager import LogManager from hypercorn.asyncio import serve from hypercorn.config import Config -import sys -from pathlib import Path + from Module.DeviceInfo import DeviceInfo from Module.FlaskSubprocessManager import FlaskSubprocessManager +from Utils.AiUtils import AiUtils from Utils.DevDiskImageDeployer import DevDiskImageDeployer +from Utils.LogManager import LogManager if "IOSAI_PYTHON" not in os.environ: base_path = Path(sys.argv[0]).resolve() @@ -78,7 +74,7 @@ if __name__ == "__main__": # 清空日志 LogManager.clearLogs() - # main(sys.argv) + main(sys.argv) # 添加iOS开发包到电脑上 deployer = DevDiskImageDeployer(verbose=True) diff --git a/Utils/JsonUtils.py b/Utils/JsonUtils.py index d8109e0..cd5ec13 100644 --- a/Utils/JsonUtils.py +++ b/Utils/JsonUtils.py @@ -1,7 +1,6 @@ import json import os from pathlib import Path -from typing import Dict, Any import portalocker as locker # ① 引入跨平台锁 diff --git a/Utils/OCRUtils.py b/Utils/OCRUtils.py index 65e7672..2bd9ee2 100644 --- a/Utils/OCRUtils.py +++ b/Utils/OCRUtils.py @@ -1,5 +1,4 @@ import os - import cv2 import numpy as np from typing import List, Tuple, Union, Optional diff --git a/Utils/Requester.py b/Utils/Requester.py index ce06e93..133db19 100644 --- a/Utils/Requester.py +++ b/Utils/Requester.py @@ -1,7 +1,6 @@ import requests from Entity.Variables import prologueList, API_KEY from Utils.IOSAIStorage import IOSAIStorage -from Utils.JsonUtils import JsonUtils from Utils.LogManager import LogManager BaseUrl = "https://crawlclient.api.yolozs.com/api/common/" diff --git a/build.bat b/build.bat index 58cfb00..583db49 100644 --- a/build.bat +++ b/build.bat @@ -2,28 +2,31 @@ setlocal cd /d E:\code\Python\iOSAi -REM ---- 1) 打包 ---- python -m nuitka Module\Main.py ^ --standalone ^ --msvc=latest ^ --windows-console-mode=disable ^ --output-filename=IOSAI ^ + --jobs=8 ^ + --lto=no ^ + --assume-yes-for-downloads ^ --include-package=Module,Utils,Entity,script ^ - --include-module=quart,quart_cors,wda,psutil,portalocker,cv2,lxml.etree,requests,urllib3,certifi,idna,setuptools,asgiref,hypercorn,h2,hpack,wsproto,priority,anyio,sniffio ^ + --include-module=quart,quart_cors,wda,hypercorn,wsproto,anyio,sniffio ^ --include-data-dir=resources=resources ^ --include-data-dir=SupportFiles=SupportFiles ^ --include-data-files="resources/iproxy/*=resources/iproxy/" ^ - --include-data-files=resources/icon.ico=resources/icon.ico ^ - --jobs=20 ^ - --windows-icon-from-ico=resources/icon.ico + --include-data-files=resources/icon.ico=resources/icon.ico ^Z + --windows-icon-from-ico=resources/icon.ico ^ + --noinclude-default-mode=nofollow ^ + --nofollow-import-to=pytest,py.test,unittest,setuptools,doctest,IPython,pydoc ^ + --nofollow-import-to=sympy,matplotlib IF ERRORLEVEL 1 EXIT /B %ERRORLEVEL% -REM 2) 复制 sidecar venv 到 Main.dist 根目录(与 IOSAI.exe 同级) +rem ---- 复制 mini-python ---- rmdir /S /Q ".\Main.dist\python-rt" 2>nul xcopy /E /I /Y ".\Needed\mini-python" ".\Main.dist\python-rt\" -rem ---- build done above ---- -rem 强制删除根目录里会污染 sys.path 的同名包(目前只遇到 simplejson) +rem ---- 清理可能污染 sys.path 的包 ---- rmdir /s /q ".\Main.dist\simplejson" 2>nul del /f /q ".\Main.dist\simplejson.*" 2>nul \ No newline at end of file