Flutter:如何记录一个Android系统的消息,将得到拾取的logcat?

g52tjvyc  于 2022-12-09  发布在  Android
关注(0)|答案(2)|浏览(324)

如果我想记录Android Studio将在其控制台中显示的消息,我可以这样做:

import 'dart:developer';

void main() {
  log('Hello world!');
  runApp(const MyApp());
}

但是如果我打包应用程序,运行它,然后用logcat查找它,它就不存在了。

flutter build apk
adb install build/app/outputs/flutter-apk/app-release.apk
adb shell am start -a android.intent.action.MAIN -n com.example.myapp/.MainActivity
adb logcat -t '12-08 00:00:00.000' | grep Hello

这将导致空输出。那么我如何记录系统消息,而不仅仅是IDE调试消息呢?

4urapxun

4urapxun1#

请使用print()debugPrint()
你有两种方法来记录你的应用程序。第一种是使用stdout和stderr。通常,这是通过print()语句完成的,或者通过导入dart:io并调用stderr和stdout上的方法。
如果你一次输出太多,Android有时会丢弃一些日志行。为了避免这种情况,请使用Flutter基础库中的debugPrint()。
有关详细信息,请查看Debugging Flutter apps programmatically

xiozqbni

xiozqbni2#

另外,如果你想在你的flutter应用程序中获得日志消息,请检查pub.dev上名为logcat_monitor的插件。
与其他logcat插件相比,它最大的优点是允许持续监视logcat消息。
下面是一个屏幕截图示例:

如何使用

添加依赖项:

dependencies:
  logcat_monitor: ^0.0.4

1.创建一个函数来使用 logcat 消息

void _mylistenStream(dynamic value) {
    if (value is String) {
      _logBuffer.writeln(value);
    }
  }

1.将您的函数注册为侦听器以获取日志,然后在应用中使用它。

LogcatMonitor.addListen(_mylistenStream);

1.启动logcat监视器,传递 logcat 工具中定义的过滤器参数。

await LogcatMonitor.startMonitor("*.*");

相关问题