From 0f328b9794b938b6cf61fde5e4ba245bfe084038 Mon Sep 17 00:00:00 2001 From: hailin Date: Fri, 6 Mar 2026 05:51:45 -0800 Subject: [PATCH] feat(it0_app): add detailed logging to VersionChecker for update diagnosis Add verbose debugPrint logs throughout VersionChecker to diagnose why app update check isn't triggering: - Log apiBaseUrl and full request URL + query params before the request - Log response status code and raw response body - Log explicit needUpdate=true/false with version details - Log version code comparison (server versionCode vs local buildNumber) - Add stack trace to all catch blocks for better error diagnosis Co-Authored-By: Claude Sonnet 4.6 --- it0_app/lib/core/updater/version_checker.dart | 35 +++++++++++++------ 1 file changed, 24 insertions(+), 11 deletions(-) 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; } }