Flutter崩溃报告插件raygun_cli的使用

Flutter崩溃报告插件raygun_cli的使用

Raygun CLI

命令行工具用于raygun.com


安装

你可以通过多种方式安装此工具。

目前,需要安装Dart SDK。你可以从Dart官网获取Dart SDK,或者将其作为Flutter SDK安装的一部分。

注意:$HOME/.pub-cache/bin 必须在你的系统路径中。

将来,该工具还将通过其他分发渠道以独立二进制文件的形式提供。

安装二进制文件

Linux、MacOS 和 Windows 的预编译二进制文件可以在发布页面下载。

通过系统包管理器安装将在未来可用!

从pub.dev安装
dart pub global activate raygun_cli 
从源码安装
dart pub global activate -s path .

使用

调用 raygun-cli 并传入命令和参数。

raygun-cli <command> <arguments>

也可以直接从源码运行:

dart bin/raygun_cli.dart <command> <arguments>

内置帮助

使用 --help 参数通常会输出命令特定的参数及其含义。

示例:

raygun-cli deployments --help

配置参数

所有 raygun-cli 命令共享相同的配置参数。

这些参数可以通过命令行参数传递(例如 --app-id=<id>),也可以设置为环境变量。

命令行参数优先于环境变量。

参数 参数名 环境变量
App ID app-id RAYGUN_APP_ID
Token token RAYGUN_TOKEN
API key api-key RAYGUN_API_KEY

源码映射上传器

将源码映射文件上传到raygun.com

raygun-cli sourcemap <arguments>

参数包括:

  • uri: 项目安装的完整URI。
  • input-map: 要上传的映射文件。

示例:

raygun-cli sourcemap --input-map=path/to/map/index.js.map --uri=https://example.com/index.js --app-id=APP_ID --token=TOKEN

可以用于上传任何单个的源码映射文件。

Flutter源码映射

要将Flutter Web的源码映射文件上传到raygun.com,请导航到项目根目录并运行sourcemap命令,并设置platform参数(或 -p)为flutter

对于Flutter Web项目,input-map参数是可选的。raygun-cli会自动尝试在build/web/main.dart.js.map中找到main.dart.js.map文件。

示例:

raygun-cli sourcemap -p flutter --uri=https://example.com/main.dart.js --app-id=APP_ID --token=TOKEN
NodeJS源码映射

尚未支持!


Android Proguard/R8上传器

将Android的Proguard和R8映射文件上传到raygun.com

文档:https://raygun.com/documentation/language-guides/android/crash-reporting/proguard/

raygun-cli proguard <arguments>

最小必要参数:

raygun-cli proguard --app-id=APP_ID --version=&lt;app version&gt; --path=&lt;Path to mapping.txt file&gt; --external-access-token=&lt;EAT from your Raygun user account settings&gt; --overwrite

示例输出:

Success:
Uploading: /somewhere/mapping.txt
Success uploading Proguard/R8 mapping file: 200
Result: true

Mapping file for version already exists:
Uploading: /somewhere/mapping.txt
Error uploading Proguard/R8 mapping file: 400
Response: File 1.2.3.5 already exists. Please set overwrite=true if you really want to overwrite it.

Wrong External Access Token:
Uploading: /somewhere/mapping.txt
Error uploading Proguard/R8 mapping file: 302
Response:

Flutter混淆符号管理

管理Flutter混淆符号上传到raygun.com

raygun-cli symbols <subcommand> <arguments>
子命令
  • upload: 上传符号文件。
  • list: 列出已上传的符号文件。
  • delete: 删除已上传的符号文件。
上传子命令

上传一个符号文件。

提供符号文件的路径(如 app.android-arm64.symbols)以及应用程序版本(如 1.0.0)。

示例:

raygun-cli symbols upload --path=/path/to/symbols/file --version=1.0.0 --app-id=APP_ID --token=TOKEN
列出子命令

列出已上传的符号文件。

示例:

raygun-cli symbols list --app-id=APP_ID --token=TOKEN

示例输出:

List of symbols:

Symbols File: app.android-arm64.symbols
Identifier: 2c7a3u3
App Version: 0.0.1

Symbols File: app.android-x64.symbols
Identifier: 2c7a3u4
App Version: 0.0.1

Symbols File: app.android-arm.symbols
Identifier: 2c7a7k6
App Version: 0.0.1
删除子命令

删除已上传的符号文件。

提供符号文件的标识符(如 --id=2c7a3u3)。可以使用list子命令获得标识符。

示例:

raygun-cli symbols delete --id=2c7a3u3 --app-id=APP_ID --token=TOKEN

部署跟踪

raygun.com发送部署跟踪通知。

文档:https://raygun.com/documentation/product-guides/deployment-tracking/overview/

最小必要参数:

raygun-cli depoyments --token=TOKEN --version=<app version> --api-key=API_KEY

示例输出:

Success:
Success creating deployment: 201
Deployment identifier: 2cewu0m
Deployment created successfully

Missing Access Token:
Error creating deployment: 401
Response: {"type":"https://tools.ietf.org/html/rfc9110#section-15.5.2","title":"Unauthorized","status":401,"traceId":"00-b9f01ba3ff4a938501c760e6924acc81-53e9411804aa9f2f-00"}
Failed to create deployment

Access Token misses access to application:
Error creating deployment: 404
Response: {"type":"https://tools.ietf.org/html/rfc9110#section-15.5.5","title":"Not Found","status":404,"traceId":"00-5c3a2423f922d787e20d01456b6c1836-b88c29232af94db8-00"}
Failed to create deployment

开发

编译二进制文件

编译一个独立的可执行文件:

dart compile exe bin/raygun_cli.dart -o raygun-cli

注意:二进制文件是针对架构和主机系统的编译的。要在macOS和Windows上编译,我们需要设置CI虚拟机。详见:https://dart.dev/tools/dart-compile#known-limitations


示例代码

以下是一个简单的示例代码,展示了如何使用raygun-cli的基本功能。

example/main.dart

void main() {
  // This package is not intended to be used as a library.
  // It is a command line tool.
  // See README.md for usage.
}
1 回复

更多关于Flutter崩溃报告插件raygun_cli的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


raygun_cli 是一个用于 Flutter 应用的崩溃报告插件,它可以帮助开发者将应用中的崩溃和错误信息发送到 Raygun 平台进行分析和监控。以下是如何使用 raygun_cli 的步骤:

1. 安装 raygun_cli

首先,你需要在你的 Flutter 项目中安装 raygun_cli 插件。在 pubspec.yaml 文件中添加依赖:

dependencies:
  raygun_cli: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

2. 初始化 Raygun

在 Flutter 应用的主文件中(通常是 main.dart),初始化 Raygun。你需要在 main 函数中调用 Raygun.init(),并传入你的 Raygun API Key。

import 'package:flutter/material.dart';
import 'package:raygun_cli/raygun_cli.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 Raygun
  await Raygun.init(
    apiKey: 'YOUR_RAYGUN_API_KEY',  // 替换为你的 Raygun API Key
  );

  runApp(MyApp());
}

3. 捕获未处理的异常

为了捕获未处理的异常,你可以使用 Raygun.captureException() 方法。通常,你可以在 FlutterError.onError 中捕获这些异常。

import 'package:flutter/material.dart';
import 'package:raygun_cli/raygun_cli.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 Raygun
  await Raygun.init(
    apiKey: 'YOUR_RAYGUN_API_KEY',  // 替换为你的 Raygun API Key
  );

  // 捕获未处理的异常
  FlutterError.onError = (FlutterErrorDetails details) async {
    // 将异常发送到 Raygun
    await Raygun.captureException(
      error: details.exception,
      stackTrace: details.stack,
      context: details.context,
    );
  };

  runApp(MyApp());
}

4. 手动捕获异常

你也可以在代码中手动捕获异常,并将其发送到 Raygun。

try {
  // 可能会抛出异常的代码
} catch (e, stackTrace) {
  // 将异常发送到 Raygun
  Raygun.captureException(
    error: e,
    stackTrace: stackTrace,
  );
}

5. 添加用户信息(可选)

你可以将用户信息附加到 Raygun 报告中,以便更好地跟踪问题。

Raygun.setUserInfo(
  identifier: 'user123',  // 用户唯一标识
  email: 'user@example.com',  // 用户邮箱
  fullName: 'John Doe',  // 用户全名
);
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!