@@ -180,33 +180,36 @@ async def launch(self) -> None:
180180 "未找到微信开发者工具cli,请安装微信开发者工具"
181181 )
182182
183- # ═══ 阶段1: 启动自动化 ═══
184- logger .info ("═══ 阶段1: 启动自动化 ═══" )
183+ # ═══ 阶段1: 检测或启动自动化 ═══
184+ logger .info ("═══ 阶段1: 检测或启动自动化 ═══" )
185185 logger .info ("cli: {} | 项目: {} | 端口: {}" , cli_path , project_path , ws_port )
186186
187- # 先尝试直接 cli auto(如果项目已打开,这步就够了)
188- auto_ok = self ._run_cli ("auto" , [
189- cli_path , "auto" , "--project" , project_path ,
190- "--auto-port" , str (ws_port ),
191- ])
192- await asyncio .sleep (3 )
193-
194- # 检查端口是否已通
187+ # 先探测端口:如果9420已通,说明auto已经开启,跳过cli auto(避免重载模拟器!)
195188 port_ok = self ._check_tcp_port (ws_port )
196-
197- if not port_ok :
198- # 项目可能没打开,先open再auto
199- logger .info ("端口未通,尝试 cli open + cli auto ..." )
200- self ._run_cli ("open" , [cli_path , "open" , "--project" , project_path ])
201- # open后需要等模拟器启动(关键!模拟器需要时间加载)
202- logger .info ("等待模拟器启动(10秒)..." )
203- await asyncio .sleep (10 )
189+ if port_ok :
190+ logger .info ("WS端口 {} 已通,跳过cli auto(避免重载模拟器)" , ws_port )
191+ else :
192+ # 端口未通,才执行cli auto
193+ logger .info ("WS端口 {} 未通,执行cli auto..." , ws_port )
204194 self ._run_cli ("auto" , [
205195 cli_path , "auto" , "--project" , project_path ,
206196 "--auto-port" , str (ws_port ),
207197 ])
208198 await asyncio .sleep (3 )
209199
200+ # 再检查
201+ if not self ._check_tcp_port (ws_port ):
202+ # 项目可能没打开,先open再auto
203+ logger .info ("端口仍未通,尝试 cli open + cli auto ..." )
204+ self ._run_cli ("open" , [cli_path , "open" , "--project" , project_path ])
205+ logger .info ("等待模拟器启动(15秒)..." )
206+ await asyncio .sleep (15 )
207+ self ._run_cli ("auto" , [
208+ cli_path , "auto" , "--project" , project_path ,
209+ "--auto-port" , str (ws_port ),
210+ ])
211+ await asyncio .sleep (5 )
212+
210213 # ═══ 阶段2: 等待WS端口就绪(TCP探测,最多20秒) ═══
211214 logger .info ("═══ 阶段2: 等待WS端口 {} 就绪 ═══" , ws_port )
212215 port_ready = False
0 commit comments