crash-analytics by eronred/aso-skills
npx skills add https://github.com/eronred/aso-skills --skill crash-analytics您可以帮助分类、确定优先级并减少应用崩溃——同时了解崩溃率如何影响 App Store 的可发现性和评分。
目标: 无崩溃会话 > 99.5% | 无崩溃用户 > 99%
| 工具 | 提供内容 | 设置步骤 |
|---|---|---|
| Firebase Crashlytics | 实时崩溃、ANR、符号化堆栈跟踪 | 添加 FirebaseCrashlytics pod/SPM 包 |
| App Store Connect | 崩溃率趋势、每次会话的崩溃数 | 内置,无需代码 |
| Xcode Organizer | 来自 TestFlight 和 App Store 的聚合崩溃日志 | Xcode → Window → Organizer → Crashes |
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
| MetricKit | 设备端诊断、卡顿率、启动时间 | iOS 13+,自动收集 |
推荐组合: Crashlytics(实时警报 + 搜索)+ App Store Connect(趋势验证)
// AppDelegate 或 @main App 结构体
import FirebaseCore
import FirebaseCrashlytics
@main
struct MyApp: App {
init() {
FirebaseApp.configure()
// Crashlytics 会自动初始化
}
}
// 记录一个非致命错误
Crashlytics.crashlytics().record(error: error)
// 记录自定义键值用于调试上下文
Crashlytics.crashlytics().setCustomValue(userId, forKey: "user_id")
Crashlytics.crashlytics().setCustomValue(screenName, forKey: "current_screen")
// build.gradle (app)
implementation("com.google.firebase:firebase-crashlytics:18.x.x")
// 无需额外代码 —— 自动捕获未处理的异常
// 对于非致命错误:
FirebaseCrashlytics.getInstance().recordException(throwable)
并非所有崩溃都同等重要。根据影响程度确定优先级:
优先级分数 = 崩溃频率 × 受影响用户数 × 用户群体权重
| 优先级 | 标准 | 响应时间 |
|---|---|---|
| P0 — 严重 | 启动/结账/核心功能时崩溃;影响 >1% 的会话 | 今日修复 |
| P1 — 高 | 常见流程中崩溃;影响 >0.1% 的会话 | 本次发布修复 |
| P2 — 中 | 边缘情况崩溃;影响 <0.1% 的会话 | 下次发布修复 |
| P3 — 低 | 罕见、非阻塞性崩溃;影响 <0.01% 的会话 | 待办事项 |
onboarding、checkout、core feature、background、launchFatal Exception: com.example.NullPointerException
at com.example.UserProfileVC.loadData:87
at com.example.HomeVC.viewDidLoad:45
Keys:
user_id: 12345
current_screen: "home"
app_version: "2.3.1"
os_version: "iOS 17.3"
调试步骤:
UserProfileVC.swift:87)如果您上传了 dSYM 文件,Crashlytics 会自动进行符号化。如果看到未符号化的堆栈跟踪:
# 手动上传 dSYM 文件
./Pods/FirebaseCrashlytics/upload-symbols -gsp GoogleService-Info.plist -p ios MyApp.app.dSYM
对于启用了 Bitcode 的构建,从 App Store Connect → Activity → Build → dSYMs 下载 dSYM 文件。
崩溃率公式: 崩溃次数 / 会话次数 × 100
使用分阶段发布,以便在全面推出前捕获崩溃:
iOS: App Store Connect → Version → Phased Release (7 天推出:1% → 2% → 5% → 10% → 20% → 50% → 100%)
Android: Play Console → Production → Managed publishing → Rollout percentage
规则: 在每个阶段监控 Crashlytics 24 小时。如果崩溃率增长 >0.2%,则暂停发布。
rating-prompt-strategy 来恢复评分Stability Report — [App Name] v[version] ([period])
Crash-free sessions: [X]% (target: >99.5%)
Crash-free users: [X]% (target: >99%)
Top crash issues:
P0 Issues (fix immediately):
#1 [Exception type] — [X] users, [X]% of sessions
File: [filename:line]
Cause: [hypothesis]
Fix: [specific action]
P1 Issues (this release):
#2 [Exception type] — [X] users, [X]% of sessions
...
Action Plan:
Today: Fix P0 issue #1 → release hotfix
This week: Fix P1 issues #2, #3 → include in v[X.X]
Monitoring: Set velocity alert at 0.5% session threshold
app-analytics — 完整的分析栈;Crashlytics 是其中一部分rating-prompt-strategy — 修复由崩溃引发的一星评价后恢复评分review-management — 回应与崩溃相关的评价retention-optimization — 首日崩溃会破坏留存指标app-store-featured — 崩溃率 > 2% 将失去编辑推荐资格每周安装数
81
代码仓库
GitHub 星标数
597
首次出现
4 天前
安全审计
安装于
opencode81
gemini-cli81
kimi-cli81
codex81
amp81
cline81
You help triage, prioritize, and reduce app crashes — and understand how crash rate affects App Store discoverability and ratings.
Target: crash-free sessions > 99.5% | crash-free users > 99%
| Tool | What it provides | Setup |
|---|---|---|
| Firebase Crashlytics | Real-time crashes, ANRs, symbolicated stack traces | Add FirebaseCrashlytics pod/SPM package |
| App Store Connect | Crash rate trend, crashes per session | Built-in, no code needed |
| Xcode Organizer | Aggregated crash logs from TestFlight + App Store | Xcode → Window → Organizer → Crashes |
| MetricKit | On-device diagnostics, hang rate, launch time | iOS 13+, automatic |
Recommended: Crashlytics (real-time alerts + search) + App Store Connect (trend validation)
// AppDelegate or @main App struct
import FirebaseCore
import FirebaseCrashlytics
@main
struct MyApp: App {
init() {
FirebaseApp.configure()
// Crashlytics is auto-initialized
}
}
// Log a non-fatal error
Crashlytics.crashlytics().record(error: error)
// Log a custom key for debugging context
Crashlytics.crashlytics().setCustomValue(userId, forKey: "user_id")
Crashlytics.crashlytics().setCustomValue(screenName, forKey: "current_screen")
// build.gradle (app)
implementation("com.google.firebase:firebase-crashlytics:18.x.x")
// No additional code needed — auto-captures unhandled exceptions
// For non-fatal:
FirebaseCrashlytics.getInstance().recordException(throwable)
Not all crashes are equal. Prioritize by impact:
Priority Score = Crash Frequency × Affected Users × User Segment Weight
| Priority | Criteria | Response time |
|---|---|---|
| P0 — Critical | Crashes on launch / checkout / core feature; >1% of sessions | Fix today |
| P1 — High | Crashes in common flows; >0.1% of sessions | Fix this release |
| P2 — Medium | Edge case crashes; <0.1% of sessions | Fix next release |
| P3 — Low | Rare, non-blocking crashes; <0.01% of sessions | Backlog |
onboarding, checkout, core feature, background, launchFatal Exception: com.example.NullPointerException
at com.example.UserProfileVC.loadData:87
at com.example.HomeVC.viewDidLoad:45
Keys:
user_id: 12345
current_screen: "home"
app_version: "2.3.1"
os_version: "iOS 17.3"
Steps to debug:
UserProfileVC.swift:87)Crashlytics auto-symbolicates if you upload dSYMs. If you see unsymbolicated traces:
# Manually upload dSYMs
./Pods/FirebaseCrashlytics/upload-symbols -gsp GoogleService-Info.plist -p ios MyApp.app.dSYM
For Bitcode-enabled builds, download dSYMs from App Store Connect → Activity → Build → dSYMs.
Crash rate formula: Crashes / Sessions × 100
Use phased releases to catch crashes before full rollout:
iOS: App Store Connect → Version → Phased Release (7-day rollout: 1% → 2% → 5% → 10% → 20% → 50% → 100%)
Android: Play Console → Production → Managed publishing → Rollout percentage
Rule: Monitor Crashlytics for 24 hours at each phase. If crash rate increases >0.2%, pause rollout.
rating-prompt-strategy to recover ratingStability Report — [App Name] v[version] ([period])
Crash-free sessions: [X]% (target: >99.5%)
Crash-free users: [X]% (target: >99%)
Top crash issues:
P0 Issues (fix immediately):
#1 [Exception type] — [X] users, [X]% of sessions
File: [filename:line]
Cause: [hypothesis]
Fix: [specific action]
P1 Issues (this release):
#2 [Exception type] — [X] users, [X]% of sessions
...
Action Plan:
Today: Fix P0 issue #1 → release hotfix
This week: Fix P1 issues #2, #3 → include in v[X.X]
Monitoring: Set velocity alert at 0.5% session threshold
app-analytics — Full analytics stack; Crashlytics is one piecerating-prompt-strategy — Recover rating after fixing crash-driven 1-starsreview-management — Respond to crash-related reviewsretention-optimization — Crashes on Day 1 destroy retention metricsapp-store-featured — Crash rate > 2% disqualifies editorial featuringWeekly Installs
81
Repository
GitHub Stars
597
First Seen
4 days ago
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
opencode81
gemini-cli81
kimi-cli81
codex81
amp81
cline81
Excel财务建模规范与xlsx文件处理指南:专业格式、零错误公式与数据分析
46,700 周安装
主题工厂技能 - 10个专业PPT主题模板,一键应用字体配色方案
24,400 周安装
AI文档协同创作工作流 | 结构化协作文档编写指南 | 背景收集、精炼、读者测试
24,600 周安装
前端设计技能:告别AI垃圾美学,打造独特、生产级、视觉冲击力强的创意界面
25,000 周安装
shadcn/ui 组件集成指南:可自定义的 React UI 组件库,基于 Tailwind CSS 和 Radix UI
25,300 周安装
Web Artifacts Builder - 构建前端Claude.ai工件的React + TypeScript + Vite工具
26,500 周安装
算法艺术生成器 - 创建p5.js生成艺术与算法哲学 | 计算美学与交互式艺术
26,700 周安装