mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-20 10:57:45 +08:00
perf: 优化 connect 逻辑 (#10571)
* chore: 优化 connect 对实体设备和已有错误路径下自动检测的支持 * perf: 优化 core 对 connect 成功的判断逻辑 may fix 类似 #10426 的异常情况
This commit is contained in:
@@ -761,7 +761,9 @@ bool asst::AdbController::connect(
|
||||
bool is_connect_success = false;
|
||||
if (connect_ret) {
|
||||
auto& connect_str = connect_ret.value();
|
||||
is_connect_success = connect_str.find("error") == std::string::npos;
|
||||
// 检查连接字符串是否包含 "connected" 或 "device"
|
||||
is_connect_success = connect_str.find("connected") != std::string::npos ||
|
||||
connect_str.find("device") != std::string::npos;
|
||||
if (connect_str.find("daemon started successfully") != std::string::npos
|
||||
&& connect_str.find("daemon still not running") == std::string::npos) {
|
||||
}
|
||||
|
||||
@@ -1845,14 +1845,21 @@ namespace MaaWpfGui.Main
|
||||
|
||||
private static bool AutoDetectConnection(ref string error)
|
||||
{
|
||||
string bsHvAddress = Instances.SettingsViewModel.TryToSetBlueStacksHyperVAddress();
|
||||
|
||||
// 本地设备如果选了自动检测,还是重新检测一下,不然重新插拔地址变了之后就再也不会检测了
|
||||
/*
|
||||
// tcp连接测试端口是否有效,超时时间500ms
|
||||
// 如果是本地设备,没有冒号
|
||||
bool adbResult =
|
||||
(!Instances.SettingsViewModel.ConnectAddress.Contains(':') &&
|
||||
!string.IsNullOrEmpty(Instances.SettingsViewModel.ConnectAddress)) ||
|
||||
IfPortEstablished(Instances.SettingsViewModel.ConnectAddress);
|
||||
bool adbResult = !string.IsNullOrEmpty(Instances.SettingsViewModel.AdbPath) &&
|
||||
((!Instances.SettingsViewModel.ConnectAddress.Contains(':') &&
|
||||
!string.IsNullOrEmpty(Instances.SettingsViewModel.ConnectAddress)) ||
|
||||
IfPortEstablished(Instances.SettingsViewModel.ConnectAddress));
|
||||
*/
|
||||
|
||||
var adbPath = Instances.SettingsViewModel.AdbPath;
|
||||
bool adbResult = !string.IsNullOrEmpty(adbPath) &&
|
||||
File.Exists(adbPath) &&
|
||||
Path.GetFileName(adbPath).Contains("adb", StringComparison.InvariantCultureIgnoreCase) &&
|
||||
IfPortEstablished(Instances.SettingsViewModel.ConnectAddress);
|
||||
|
||||
if (adbResult)
|
||||
{
|
||||
@@ -1860,19 +1867,22 @@ namespace MaaWpfGui.Main
|
||||
return true;
|
||||
}
|
||||
|
||||
bool bsResult = IfPortEstablished(bsHvAddress);
|
||||
|
||||
if (bsResult)
|
||||
// 蓝叠的特殊处理
|
||||
{
|
||||
error = string.Empty;
|
||||
if (string.IsNullOrEmpty(Instances.SettingsViewModel.AdbPath) && Instances.SettingsViewModel.DetectAdbConfig(ref error))
|
||||
string bsHvAddress = Instances.SettingsViewModel.TryToSetBlueStacksHyperVAddress() ?? string.Empty;
|
||||
bool bsResult = IfPortEstablished(bsHvAddress);
|
||||
if (bsResult)
|
||||
{
|
||||
return string.IsNullOrEmpty(error);
|
||||
}
|
||||
Instances.SettingsViewModel.ConnectAddress = bsHvAddress;
|
||||
return true;
|
||||
}
|
||||
error = string.Empty;
|
||||
if (string.IsNullOrEmpty(Instances.SettingsViewModel.AdbPath) && Instances.SettingsViewModel.DetectAdbConfig(ref error))
|
||||
{
|
||||
return string.IsNullOrEmpty(error);
|
||||
}
|
||||
|
||||
Instances.SettingsViewModel.ConnectAddress = bsHvAddress;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (Instances.SettingsViewModel.DetectAdbConfig(ref error))
|
||||
{
|
||||
|
||||
@@ -4066,7 +4066,7 @@ namespace MaaWpfGui.ViewModels.UI
|
||||
get => _connectAddress;
|
||||
set
|
||||
{
|
||||
if (ConnectAddress == value || string.IsNullOrEmpty(value))
|
||||
if (ConnectAddress == value)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user