diff --git a/it0_app/lib/core/updater/version_checker.dart b/it0_app/lib/core/updater/version_checker.dart index bbba1c8..7427ea0 100644 --- a/it0_app/lib/core/updater/version_checker.dart +++ b/it0_app/lib/core/updater/version_checker.dart @@ -25,29 +25,38 @@ class VersionChecker { Future fetchLatestVersion() async { try { final currentInfo = await getCurrentVersion(); - debugPrint('[VersionChecker] 当前版本: ${currentInfo.version}, buildNumber: ${currentInfo.buildNumber}'); + debugPrint('[VersionChecker] apiBaseUrl: $apiBaseUrl'); + debugPrint('[VersionChecker] 当前版本: ${currentInfo.version}, buildNumber: ${currentInfo.buildNumber}, packageName: ${currentInfo.packageName}'); + + final queryParams = { + 'platform': 'android', + 'current_version': currentInfo.version, + 'current_version_code': currentInfo.buildNumber, + }; + debugPrint('[VersionChecker] 请求: GET $apiBaseUrl/api/app/version/check $queryParams'); final response = await _dio.get( '/api/app/version/check', - queryParameters: { - 'platform': 'android', - 'current_version': currentInfo.version, - 'current_version_code': currentInfo.buildNumber, - }, + queryParameters: queryParams, ); + debugPrint('[VersionChecker] 响应状态: ${response.statusCode}'); + debugPrint('[VersionChecker] 响应内容: ${response.data}'); + if (response.statusCode == 200 && response.data != null) { final needUpdate = response.data['needUpdate'] as bool? ?? true; if (!needUpdate) { - debugPrint('[VersionChecker] 服务器返回无需更新'); + debugPrint('[VersionChecker] 服务器返回 needUpdate=false,无需更新'); return null; } - debugPrint('[VersionChecker] 服务器返回需要更新'); + debugPrint('[VersionChecker] 服务器返回 needUpdate=true,最新版本: ${response.data['version']} (versionCode=${response.data['versionCode']})'); return VersionInfo.fromJson(response.data); } + debugPrint('[VersionChecker] 异常状态码: ${response.statusCode}'); return null; - } catch (e) { + } catch (e, stack) { debugPrint('[VersionChecker] 获取版本失败: $e'); + debugPrint('[VersionChecker] StackTrace: $stack'); return null; } } @@ -61,13 +70,17 @@ class VersionChecker { if (latestInfo == null) return null; final currentCode = int.tryParse(currentInfo.buildNumber) ?? 0; + debugPrint('[VersionChecker] 版本比较: 服务器 versionCode=${latestInfo.versionCode} vs 本地 buildNumber=$currentCode'); if (latestInfo.versionCode > currentCode) { + debugPrint('[VersionChecker] 有新版本可更新'); return latestInfo; } + debugPrint('[VersionChecker] 本地版本不低于服务器版本,无需更新'); return null; - } catch (e) { - debugPrint('Check update failed: $e'); + } catch (e, stack) { + debugPrint('[VersionChecker] checkForUpdate 异常: $e'); + debugPrint('[VersionChecker] StackTrace: $stack'); return null; } }