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: Raygun.com 中的应用程序ID。
- Token: 来自https://app.raygun.com/user/tokens 的访问令牌。
- API key: Raygun.com 中应用的API密钥。
这些参数可以通过命令行参数传递(例如 --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=<app version> --path=<Path to mapping.txt file> --external-access-token=<EAT from your Raygun user account settings> --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.
}
更多关于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', // 用户全名
);