电容火基崩溃处理插件
非官方电容插件 火灾基地崩溃[^1]
使用大小写
Firebase Crashlytics插件一般用于监控一个应用在生产中的稳定性,例如:
- 崩溃报告:从Android和iOS的应用程序中收集崩溃报告,并在Firebase Console中检查.
- 非致命错误跟踪: 记录处理的例外情况
recordException(...),包括由tacktrace.js生成的JavaScript堆栈痕迹. - 调试上下文: 将自定义密钥,日志信息,以及用户ID附加到您的报告上,以使崩溃更容易被复制.
- 遵守隐私:在运行时启用或禁用自动数据收集,例如在用户同意后.
兼容性
| 插件版本 | 电容版本 | 状态 |
|---|---|---|
| 8.x.x (英语) | >=8.x.x | 积极支持 |
| 7.x.x (中文(简体) ) | 7.x.x (中文(简体) ) | 折旧 |
| 6.x.x (中文(简体) ) | 6.x.x (中文(简体) ) | 折旧 |
| 5.x.x (中文(简体) ) | 5.x.x (中文(简体) ) | 折旧 |
| 1.x.x (中文(简体) ) | 4.x.x (中文(简体) ) | 折旧 |
指南
- 崩溃在 Capacitor App 中报告崩溃: 崩溃和非致命错误使用自定义密钥,日志,以及使用此插件的用户ID进行报告.
- 如何在电容App中使用火把:当坠机报告符合生产Firebase应用程序时,在分析与性能旁边.
安装
你可以用我们的 AI 辅助设置 以安装插件. 添加数据 超级技能 至您的 AI 工具,使用以下命令:
npx skills add capawesome-team/skills --skill capacitor-plugins
然后使用下列提示:
Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capacitor-firebase/crashlytics` plugin in my project.
如果你喜欢 手动设置,通过运行以下命令来安装插件,并遵循下面的平台特定指令:
npm install @capacitor-firebase/crashlytics
npx cap sync
如果您还没有将 Firebase 添加到您的项目中(机器人 编号 : iOS系统) (中文(简体) ).
机器人
崩溃分解插件
首先,将 Crashlytics Gradle 插件的依赖性添加到您的根级( 项目级) Gradle 文件(<project>/build.gradle:
buildscript {
dependencies {
+ // Add the dependency for the Crashlytics Gradle plugin
+ classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.9'
}
}
将 Crashlytics Gradle 插件添加到您的模块( 应用级别) Gradle 文件( 通常是) <project>/<app-module>/build.gradle:
apply plugin: 'com.google.firebase.crashlytics'
变量
如果需要, 您可以在您的应用程序中定义以下工程变量 variables.gradle 要更改依赖的默认版本的文件 :
$firebaseCrashlyticsVersion版本com.google.firebase:firebase-crashlytics(默认 :20.0.3(中文(简体) )
如果您在工程中遇到其它插件的依赖性冲突, 这会有所帮助 .
iOS系统
Swift 软件包管理器
在您的 capacitor.config.json (或 capacitor.config.ts) 避免 SwiftPM 软件包识别相撞数字 :
{
"experimental": {
"ios": {
"spm": {
"packageOptions": {
"@capacitor-firebase/crashlytics": {
"symlink": true
}
}
}
}
}
}
请注意目标 packageOptions 支持需要控制器 CLI 8.4.0+ (中文(简体) )。 。 。 .
dSYM 上传
要生成人类可读崩溃报告, Crashlytics 需要您工程的调试符号 (dSYM) 文件 . 下列步骤描述您在构建您的应用程序时如何将 dSYM 文件自动上传到 Firebase :
- 打开您的项目的 Xcode 工作空间, 然后在左侧导航器中选择其项目文件 .
- 从 目标 列表中,选择主构建目标.
- 点击 构建设置 选项卡,然后完成以下步骤,使 Xcode 为您的构建生成 dSYMS .
- 点击 全体,然后查找
debug information format。 。 。 . - 设定 调试信息格式 改为
DWARF with dSYM File为你所有的建筑类型.
- 点击 全体,然后查找
- 点击 构建阶段 选项卡并完成下列步骤:
-
点击 + 键 按钮,然后选择 新建运行脚本阶段。 。 。 .
确定这个新 运行脚本 相位是您的工程的最后一个构建相; 否则 Crashlytics 无法正确处理 dSYMs .
-
扩展新 运行脚本 节.
-
脚本字段(位于 贝壳 根据您的软件包管理器添加运行的脚本 :
可可树:
"${PODS_ROOT}/FirebaseCrashlytics/run"Swift 软件包管理器 :
"${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run" -
在那个 输入文件 区域,根据您的软件包管理器添加以下文件位置的路径 :
可可树:
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)Swift 软件包管理器 :
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist$(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)如果你有的话
ENABLE_USER_SCRIPT_SANDBOXING=YES财务报告和审定财务报表ENABLE_DEBUG_DYLIB=YES在您的项目构建设置中,还包括:${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}.debug.dylib
-
配置
此插件不需要配置 .
演示
这里有一个实例: robingenz/电容器-火力基地-插座-demo
启动模板
以下启动模板可供使用:
使用量
以下例子显示如何强制测试崩溃,记录非致命例外,在崩溃报告上添加上下文,管理自动数据收集,以及处理未发送的报告. 所有方法只能在Android和iOS上使用.
强制测试崩溃
强制崩溃测试您的崩溃分析执行 :
import { FirebaseCrashlytics } from '@capacitor-firebase/crashlytics';
const crash = async () => {
await FirebaseCrashlytics.crash({ message: 'Test' });
};
记录非致命例外
将处理过的错误记录为非致命报告 。 也可以附加 JavaScript 堆栈跟踪 堆栈跟踪.js数字 :
import { FirebaseCrashlytics } from '@capacitor-firebase/crashlytics';
import * as StackTrace from 'stacktrace-js';
const recordException = async () => {
await FirebaseCrashlytics.recordException({
message: 'This is a non-fatal message.',
});
};
const recordExceptionWithStacktrace = async (error: Error) => {
const stacktrace = await StackTrace.fromError(error);
await FirebaseCrashlytics.recordException({
message: 'This is a non-fatal message.',
stacktrace,
});
};
在崩溃报告上添加上下文
设置自定义密钥,一个用户ID,或日志中与后续的致命和非致命报告相关的消息. 这给你更多导致坠机事件的背景:
import { FirebaseCrashlytics } from '@capacitor-firebase/crashlytics';
const setCustomKey = async () => {
await FirebaseCrashlytics.setCustomKey({
key: 'page',
value: 'home',
type: 'string',
});
};
const setUserId = async () => {
await FirebaseCrashlytics.setUserId({
userId: '123',
});
};
const log = async () => {
await FirebaseCrashlytics.log({
message: 'Test',
});
};
启用或禁用自动数据收集
控制崩溃者是否自动收集数据 。 该值在应用程序的下一轮运行之前不应用 。 检查当前设置 isEnabled() 只在 iOS 上可用 :
import { FirebaseCrashlytics } from '@capacitor-firebase/crashlytics';
const setEnabled = async () => {
await FirebaseCrashlytics.setEnabled({
enabled: true,
});
};
const isEnabled = async () => {
const { enabled } = await FirebaseCrashlytics.isEnabled();
return enabled;
};
检查应用程序在上次执行时是否崩溃
查找应用程序在上次运行中是否崩溃, 例如要向用户显示反馈对话框 :
import { FirebaseCrashlytics } from '@capacitor-firebase/crashlytics';
const didCrashOnPreviousExecution = async () => {
const { crashed } = await FirebaseCrashlytics.didCrashOnPreviousExecution();
return crashed;
};
管理未发送的崩溃报告
如果自动数据收集被禁用,您可以决定是否应当在下次启动时上传未发送的报告,或者从设备上删除:
import { FirebaseCrashlytics } from '@capacitor-firebase/crashlytics';
const sendUnsentReports = async () => {
await FirebaseCrashlytics.sendUnsentReports();
};
const deleteUnsentReports = async () => {
await FirebaseCrashlytics.deleteUnsentReports();
};
API 密码
crash(...)setCustomKey(...)setUserId(...)log(...)setEnabled(...)isEnabled()didCrashOnPreviousExecution()sendUnsentReports()deleteUnsentReports()recordException(...)- 接口
- 类型异名
崩溃(...)
crash(options: CrashOptions) => Promise<void>
强制坠机测试实施.
仅供Android和iOS使用.
| 参数 | 类型 |
|---|---|
options | CrashOptions |
自: 0.1.0 (中文(简体) )
设置 CustomKey (...)
setCustomKey(options: SetCustomKeyOptions) => Promise<void>
设置一个自定义密钥和值,该密钥和值与随后的致命和非致命报告相关.
仅供Android和iOS使用.
| 参数 | 类型 |
|---|---|
options | CustomKeyAndValue |
自: 0.1.0 (中文(简体) )
set 用户(...)
setUserId(options: SetUserIdOptions) => Promise<void>
设置一个与随后的致命和非致命报告相关的用户ID(识别符).
仅供Android和iOS使用.
| 参数 | 类型 |
|---|---|
options | SetUserIdOptions |
自: 0.1.0 (中文(简体) )
日志(...)
log(options: LogOptions) => Promise<void>
添加自定义日志消息, 这些信息会随崩溃数据一同发送, 以给自己更多导致崩溃的事件的背景 .
仅供Android和iOS使用.
| 参数 | 类型 |
|---|---|
options | LogOptions |
自: 0.1.0 (中文(简体) )
设置可启用(...)
setEnabled(options: SetEnabledOptions) => Promise<void>
启用/ 无法自动收集数据 . 该值在应用程序的下一轮运行之前不应用 .
仅供Android和iOS使用.
| 参数 | 类型 |
|---|---|
options | SetEnabledOptions |
自: 0.1.0 (中文(简体) )
已启用
isEnabled() => Promise<IsEnabledResult>
返回是否启用自动数据收集.
仅供iOS使用.
回返情况: Promise<IsEnabledResult>
自: 0.1.0 (中文(简体) )
先前的崩溃执行 ()
didCrashOnPreviousExecution() => Promise<DidCrashOnPreviousExecutionResult>
返回应用程序在上次执行中是否崩溃 .
仅供Android和iOS使用.
回返情况: Promise<DidCrashOnPreviousExecutionResult>
自: 0.1.0 (中文(简体) )
发送未经同意的报告( )
sendUnsentReports() => Promise<void>
在下次启动时将任何未发送的报告上传到崩溃分析 .
当自动数据收集被启用时,崩溃器会在启动时自动上传报告.
仅供Android和iOS使用.
自: 0.1.0 (中文(简体) )
删除未经同意的报告( )
deleteUnsentReports() => Promise<void>
删除设备上任何未发送的报告.
仅供Android和iOS使用.
自: 0.1.0 (中文(简体) )
记录例外(...)
recordException(options: RecordExceptionOptions) => Promise<void>
记录一份非致命报告 发送到Crashlytics.
仅供Android和iOS使用.
| 参数 | 类型 |
|---|---|
options | RecordExceptionOptions |
自: 0.1.0 (中文(简体) )
接口
崩溃选项
| Prop | 类型 | 自兹 |
|---|---|---|
message | string | 0.1.0 (中文(简体) ) |
自定义密钥和 Value
| Prop | 类型 | 自兹 |
|---|---|---|
key | string | 7.1.0 (中文(简体) ) |
value | string | number | boolean | 7.1.0 (中文(简体) ) |
type | 'string' | 'boolean' | 'long' | 'double' | 'int' | 'float' | 7.1.0 (中文(简体) ) |
设置用户选择
| Prop | 类型 | 自兹 |
|---|---|---|
userId | string | 0.1.0 (中文(简体) ) |
日志选项
| Prop | 类型 | 自兹 |
|---|---|---|
message | string | 0.1.0 (中文(简体) ) |
设置可选选项
| Prop | 类型 | 自兹 |
|---|---|---|
enabled | boolean | 0.1.0 (中文(简体) ) |
已启用结果
| Prop | 类型 | 自兹 |
|---|---|---|
enabled | boolean | 0.1.0 (中文(简体) ) |
DidCrash 上一个执行结果
| Prop | 类型 | 自兹 |
|---|---|---|
crashed | boolean | 0.1.0 (中文(简体) ) |
记录例外选项
| Prop | 类型 | 说明 | 自兹 |
|---|---|---|---|
message | string | 将信息记录为非致命例外. | 0.1.0 (中文(简体) ) |
code | number | 特定出错域内的出错代码 . 请注意: 如果 stacktrace 提供。 仅供iOS使用. | 0.1.0 (中文(简体) ) |
domain | string | 包含错误域的字符串 . 请注意: 如果 stacktrace 提供。 仅供iOS使用. | 0.1.0 (中文(简体) ) |
keysAndValues | CustomKeyAndValue[] | 除应用级自定义密钥外,还有一系列密钥和与非致命例外关联的值. 请注意: 如果 stacktrace 提供. | 7.1.0 (中文(简体) ) |
stacktrace | StackFrame[] | 由 sacktrace.js 生成的堆栈. | 1.1.0 国家 |
堆叠外观
由 stacktrace.js 生成的 Stacktrace 子集.
| Prop | 类型 |
|---|---|
lineNumber | number |
fileName | string |
functionName | string |
类型异名
设置自定义关键选项
测试您的执行
给 您可以找到更多关于如何测试火地崩溃处理程序的信息. 除其他外,你会找到如何正确的信息 调整工程的调试设置 在iOS下如何进行 试试看。 。 。 .
如果你得到iOS的模糊的崩溃报告, 请确保你有 初始化崩溃 正确,看一看 本指南如果Crashlytics找不到你的应用程序的dSYM,它提供了一些解决问题的方法.
财务问题
这个插件在网络上工作吗 ?
不,插件方法只在Android和iOS上可用. Firebase Crashlytics本身不提供Web SDK,因此崩溃报告仅限于本土平台.
我怎么能测试我的崩溃症?
打电话 crash(...) 方法强迫测试崩溃 并证实它出现在火地控制台上 注意报告通常在下一个应用程序启动时发送. 关于测试的更多信息,包括如何调整项目在iOS上的调试设置,可在 测试您的执行 节.
我怎么报告JavaScript错误?
使用 recordException(...) 记录非致命报告的方法。 您可以通过堆栈跟踪生成的堆栈跟踪. js通过 stacktrace 在 Firebase 控制台中获取可读 JavaScript 堆栈痕迹。 记住在iOS上 code, (中文(简体) ), domain 财务报告和审定财务报表 keysAndValues 如果一个选项 stacktrace 提供.
为什么我的iOS崩溃报告不能读取?
Crashlytics需要您的项目调试符号(dSYM)文件来生成iOS上的可读崩溃报告. 继续走 dSYM 上传 当您构建您的应用程序时, 将自动上传 dSYM 文件到 Firebase .
我能在用户同意之前禁用崩溃报告吗?
是的,用那个 setEnabled(...) 在运行时启用或禁用自动数据收集的方法。 注意该值在app的下一轮运行前不适用. 然后可以使用 sendUnsentReports() 或者说 deleteUnsentReports() 以决定尚未上传的报告会发生什么.
我能用这个插件吗? 有Ionic、React、Vue或Angular?
是的,插件是框架不可知的。 它在任意网络框架的Capacitor app中工作,包括有Angular,React,或Vue的Ionic,以及平版JavaScript等项目.
相关插件
通讯
随时更新有关卡帕韦索姆、Capacitor和Ionic生态系统的最新消息和最新消息,因为我们 《卡帕索克通讯》。 。 。 .
更改日志
见 变动情况。 。 。 .
许可证
见 自由主义。 。 。 .
贷项
此插件基于 社区火灾基地崩溃 插件 . 感谢所有为这个项目捐款的人!
[^1]: 这个项目不附属于Google LLC或其任何子公司或子公司,也不获得其认可、支持、赞助或批准.