feat: windows ico替换成圆角,macos增加tg代理

This commit is contained in:
2026-01-17 18:59:09 -08:00
parent 5d00bf3404
commit 7017c99f4a
6 changed files with 230 additions and 30 deletions
@@ -22,6 +22,7 @@ import '../../utils/kr_country_util.dart';
import '../../utils/kr_log_util.dart';
import '../../utils/kr_secure_storage.dart';
import '../../utils/kr_windows_dns_util.dart';
import '../../utils/kr_macos_proxy_util.dart';
import '../../common/app_run_data.dart';
import '../../common/app_config.dart';
import 'package:flutter/foundation.dart';
@@ -297,6 +298,21 @@ class KRSingBoxImp {
KRLogUtil.kr_i('⏳ Windows 文件系统同步等待完成', tag: 'SingBox');
}
// 🍎 macOS 平台:初始化时确保代理关闭(防止上次崩溃残留)
if (Platform.isMacOS) {
KRLogUtil.kr_i('🍎 macOS 平台,初始化时清理系统代理残留...', tag: 'SingBox');
try {
// 异步执行,不阻塞初始化主流程
KRMacosProxyUtil.disableSocks5().then((_) {
KRLogUtil.kr_i('✅ macOS 系统代理残留清理完成', tag: 'SingBox');
}).catchError((e) {
KRLogUtil.kr_w('⚠️ macOS 系统代理清理异常: $e', tag: 'SingBox');
});
} catch (e) {
KRLogUtil.kr_w('⚠️ macOS 系统代理清理尝试失败: $e', tag: 'SingBox');
}
}
// 最终验证:在 setup() 之前再次确认 workingDir 和 data 目录都存在且可访问
// libcore 的 Setup() 会调用 os.Chdir(workingPath),然后使用相对路径 "./data"
// 如果 os.Chdir() 失败(路径不存在或权限问题),后续的相对路径访问会失败
@@ -1555,6 +1571,19 @@ class KRSingBoxImp {
throw err;
}).run();
// 🔑 macOS 平台:启用 SOCKS5 系统代理
if (Platform.isMacOS) {
KRLogUtil.kr_i('🍎 macOS 平台,开启系统 SOCKS5 代理...', tag: 'SingBox');
try {
await KRMacosProxyUtil.enableSocks5(
host: '127.0.0.1',
port: kr_port,
);
} catch (e) {
KRLogUtil.kr_w('⚠️ macOS 系统代理开启失败: $e', tag: 'SingBox');
}
}
// ⚠️ 关键修复:在启动成功后立即订阅统计流
// 原因:
// 1. 统计流需要主动订阅才能接收数据
@@ -1751,6 +1780,16 @@ class KRSingBoxImp {
// 不手动设置状态,由 libcore 通过 status stream 自动发送 Stopped 事件
KRLogUtil.kr_i('✅ SingBox 停止请求已发送', tag: 'SingBox');
// 🍎 macOS 平台:关闭系统 SOCKS5 代理
if (Platform.isMacOS) {
KRLogUtil.kr_i('🍎 macOS 平台,关闭系统 SOCKS5 代理...', tag: 'SingBox');
try {
await KRMacosProxyUtil.disableSocks5();
} catch (e) {
KRLogUtil.kr_e('❌ macOS 系统代理关闭失败: $e', tag: 'SingBox');
}
}
} catch (e, stackTrace) {
KRLogUtil.kr_e('停止服务时出错: $e');
KRLogUtil.kr_e('错误堆栈: $stackTrace');