如何消除Firebase的「获取App Check令牌出错」日志?
屏蔽Firebase App Check未安装的冗余警告日志(Flutter)
方法1:开发环境下直接通过Logcat过滤
在Android Studio的Logcat面板中,创建自定义过滤规则快速屏蔽该日志:
- 点击Logcat右上角的「+」按钮添加新过滤
- 在
Log Tag输入框中填写!LocalRequestInterceptor(感叹号表示排除该标签) - 保存过滤后,该标签的所有警告日志将不再显示
方法2:Flutter+Android原生代码拦截日志
通过MethodChannel调用Android原生代码,动态拦截指定标签的日志输出:
- Flutter端代码:
import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; import 'package:firebase_core/firebase_core.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); // 仅在Android开发环境下启用日志拦截 if (kDebugMode && Platform.isAndroid) { const MethodChannel('com.your.app/log_filter').invokeMethod( 'suppressTag', {'tag': 'LocalRequestInterceptor'}, ); } runApp(const MyApp()); }
- Android原生
MainActivity.kt代码:
import android.util.Log import io.flutter.embedding.android.FlutterActivity import io.flutter.embedding.engine.FlutterEngine import io.flutter.plugin.common.MethodChannel class MainActivity : FlutterActivity() { private val CHANNEL = "com.your.app/log_filter" override fun configureFlutterEngine(flutterEngine: FlutterEngine) { super.configureFlutterEngine(flutterEngine) MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call, result -> if (call.method == "suppressTag") { val targetTag = call.argument<String>("tag") ?: return@setMethodCallHandler result.success(null) // 替换Log.w方法,过滤指定标签的警告日志 val originalWarn = Log::w Log.w = { tag, message -> if (tag != targetTag) { originalWarn(tag, message) } } result.success(null) } else { result.notImplemented() } } } }
方法3:通过ProGuard规则屏蔽(支持开发/发布版)
在Android项目的app/proguard-rules.pro中添加以下规则,抑制指定类的警告日志输出:
# 精准抑制LocalRequestInterceptor的警告日志 -assumenosideeffects class com.google.firebase.installations.local.LocalRequestInterceptor { public static void w(java.lang.String, java.lang.String); } # 如果需要全局屏蔽所有Log.w警告(可选) # -assumenosideeffects class android.util.Log { # public static int w(java.lang.String, java.lang.String); # }
注意:若要在开发版生效,需在app/build.gradle的debug配置块中开启混淆:
android { buildTypes { debug { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } }
内容的提问来源于stack exchange,提问作者Dr-Bracket
相关产品推荐
相关产品推荐

