From f57b0f9c26ba27aee0f8d047bc3d5668d6b85aa4 Mon Sep 17 00:00:00 2001 From: hailin Date: Wed, 14 Jan 2026 17:24:42 -0800 Subject: [PATCH] chore(mining-app): configure release build - Add kDebugMode check to LoggingInterceptor to suppress logs in release - Remove debug print statements from contribution_providers - Add Play Core proguard rules to fix R8 missing classes error Build command: flutter build apk --release --split-per-abi --target-platform android-arm,android-arm64 Output: - app-arm64-v8a-release.apk: 18MB - app-armeabi-v7a-release.apk: 16MB Co-Authored-By: Claude Opus 4.5 --- .../mining-app/android/app/proguard-rules.pro | 4 ++++ .../lib/core/network/interceptors.dart | 13 ++++++++++--- .../providers/contribution_providers.dart | 19 ++----------------- 3 files changed, 16 insertions(+), 20 deletions(-) diff --git a/frontend/mining-app/android/app/proguard-rules.pro b/frontend/mining-app/android/app/proguard-rules.pro index a54d8e91..6952ec7e 100644 --- a/frontend/mining-app/android/app/proguard-rules.pro +++ b/frontend/mining-app/android/app/proguard-rules.pro @@ -6,6 +6,10 @@ -keep class io.flutter.** { *; } -keep class io.flutter.plugins.** { *; } +# Play Core (deferred components) +-dontwarn com.google.android.play.core.** +-keep class com.google.android.play.core.** { *; } + # 保持Gson相关 -keepattributes Signature -keepattributes *Annotation* diff --git a/frontend/mining-app/lib/core/network/interceptors.dart b/frontend/mining-app/lib/core/network/interceptors.dart index 459a2f99..f270651c 100644 --- a/frontend/mining-app/lib/core/network/interceptors.dart +++ b/frontend/mining-app/lib/core/network/interceptors.dart @@ -1,4 +1,5 @@ import 'package:dio/dio.dart'; +import 'package:flutter/foundation.dart'; import 'package:logger/logger.dart'; class LoggingInterceptor extends Interceptor { @@ -8,19 +9,25 @@ class LoggingInterceptor extends Interceptor { @override void onRequest(RequestOptions options, RequestInterceptorHandler handler) { - _logger.d('REQUEST[${options.method}] => PATH: ${options.path}'); + if (kDebugMode) { + _logger.d('REQUEST[${options.method}] => PATH: ${options.path}'); + } handler.next(options); } @override void onResponse(Response response, ResponseInterceptorHandler handler) { - _logger.d('RESPONSE[${response.statusCode}] => PATH: ${response.requestOptions.path}'); + if (kDebugMode) { + _logger.d('RESPONSE[${response.statusCode}] => PATH: ${response.requestOptions.path}'); + } handler.next(response); } @override void onError(DioException err, ErrorInterceptorHandler handler) { - _logger.e('ERROR[${err.response?.statusCode}] => PATH: ${err.requestOptions.path}'); + if (kDebugMode) { + _logger.e('ERROR[${err.response?.statusCode}] => PATH: ${err.requestOptions.path}'); + } handler.next(err); } } diff --git a/frontend/mining-app/lib/presentation/providers/contribution_providers.dart b/frontend/mining-app/lib/presentation/providers/contribution_providers.dart index f2de9a15..585c57e1 100644 --- a/frontend/mining-app/lib/presentation/providers/contribution_providers.dart +++ b/frontend/mining-app/lib/presentation/providers/contribution_providers.dart @@ -69,12 +69,9 @@ final contributionRecordsProvider = FutureProvider.family print('[ContributionRecordsProvider] Error: ${failure.message}'), - (records) => print('[ContributionRecordsProvider] Records count: ${records.data.length}, total: ${records.total}'), - ); - // 保持 provider 活跃 ref.keepAlive(); @@ -119,14 +110,8 @@ final contributionStatsProvider = FutureProvider((ref) async ref.onDispose(() => timer.cancel()); return result.fold( - (failure) { - print('[ContributionStatsProvider] Error: ${failure.message}'); - return null; - }, - (stats) { - print('[ContributionStatsProvider] Total contribution: ${stats.totalContribution}'); - return stats; - }, + (failure) => null, + (stats) => stats, ); });