{"adoption": {"forks": 449, "observed_at": "2026-08-28T04:07:52.222742+00:00", "stars": 3255}, "canonical_url": "https://ross.abutalabs.com/products/android-notes-cockroach", "card": {"archived": false, "artifact_type": "library", "description": "降低Android非必要crash", "domain": ["mobile-development", "android-tools"], "enriched": true, "function": ["error-handling"], "health_score": 20, "homepage": null, "language": "Java", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["android-notes/Cockroach"], "name": "android-notes/Cockroach", "platform": [], "pushed_at": "2023-05-28T16:36:02+00:00", "repo": "android-notes/Cockroach", "stars": 3255, "tags": ["crash-prevention", "exception-handling", "fault-tolerance", "main-thread", "uncaught-exception", "android-library", "app-stability", "crash-handler", "android"], "topics": ["android", "crash"], "urls": [], "use_cases": ["prevent android app from crashing on uncaught exceptions", "catch main thread exceptions in android app", "reduce crash rate of my android app", "ignore non-fatal exceptions instead of killing the process", "global exception handler library for android", "keep app running when startActivity throws", "handle third-party sdk init crashes gracefully"], "what_it_is": "Cockroach is an Android library (Java) that prevents unnecessary app crashes by intercepting exceptions thrown in the main thread's message loop and rescuing the app instead of letting Android's default handler kill the process. It is aimed at non-fatal bugs—such as device-specific system quirks or errors inside onClick handlers and third-party SDK initialization—where silently ignoring the exception is better than crashing the whole app.", "when_to_avoid": ["You need to surface and fix root causes rather than mask potentially serious bugs behind silent exception swallowing", "Exceptions thrown during view measure/layout/draw or RecyclerView ViewHolder binding can leave the UI (ViewRootImpl) in a broken state", "You are looking for crash reporting/analytics rather than crash prevention"], "when_to_choose": ["You want an app-level safety net so exceptions in click callbacks, lifecycle code, or third-party SDK init don't kill the whole app", "Your crash reports show device-specific or system bugs that cannot be fixed in code and are safe to swallow", "You need to reduce crash rate for non-critical features where a crash is worse than a skipped action"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/android-notes-cockroach", "repo": "android-notes/Cockroach", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:52.222742+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:24:22.896580+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e4ca8448137f00362af4245301ea20622ca152e205b23a099744939e46ef227", "fetched_at": "2026-08-28T04:07:52.222742+00:00", "kind": "readme", "missing": false, "url": "https://github.com/android-notes/Cockroach"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:52.222742+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:24:22.896580+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e4ca8448137f00362af4245301ea20622ca152e205b23a099744939e46ef227", "fetched_at": "2026-08-28T04:07:52.222742+00:00", "kind": "readme", "missing": false, "url": "https://github.com/android-notes/Cockroach"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:24:22.896580+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e4ca8448137f00362af4245301ea20622ca152e205b23a099744939e46ef227", "fetched_at": "2026-08-28T04:07:52.222742+00:00", "kind": "readme", "missing": false, "url": "https://github.com/android-notes/Cockroach"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:07:52.222742+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:52.222742+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:52.222742+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:24:22.896580+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e4ca8448137f00362af4245301ea20622ca152e205b23a099744939e46ef227", "fetched_at": "2026-08-28T04:07:52.222742+00:00", "kind": "readme", "missing": false, "url": "https://github.com/android-notes/Cockroach"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:52.222742+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:52.222742+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:24:22.896580+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e4ca8448137f00362af4245301ea20622ca152e205b23a099744939e46ef227", "fetched_at": "2026-08-28T04:07:52.222742+00:00", "kind": "readme", "missing": false, "url": "https://github.com/android-notes/Cockroach"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:52.222742+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:52.222742+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:52.222742+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:24:22.896580+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e4ca8448137f00362af4245301ea20622ca152e205b23a099744939e46ef227", "fetched_at": "2026-08-28T04:07:52.222742+00:00", "kind": "readme", "missing": false, "url": "https://github.com/android-notes/Cockroach"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:52.222742+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:52.222742+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:24:22.896580+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e4ca8448137f00362af4245301ea20622ca152e205b23a099744939e46ef227", "fetched_at": "2026-08-28T04:07:52.222742+00:00", "kind": "readme", "missing": false, "url": "https://github.com/android-notes/Cockroach"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:24:22.896580+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e4ca8448137f00362af4245301ea20622ca152e205b23a099744939e46ef227", "fetched_at": "2026-08-28T04:07:52.222742+00:00", "kind": "readme", "missing": false, "url": "https://github.com/android-notes/Cockroach"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:24:22.896580+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e4ca8448137f00362af4245301ea20622ca152e205b23a099744939e46ef227", "fetched_at": "2026-08-28T04:07:52.222742+00:00", "kind": "readme", "missing": false, "url": "https://github.com/android-notes/Cockroach"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:24:22.896580+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e4ca8448137f00362af4245301ea20622ca152e205b23a099744939e46ef227", "fetched_at": "2026-08-28T04:07:52.222742+00:00", "kind": "readme", "missing": false, "url": "https://github.com/android-notes/Cockroach"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3487, "days_push": 1193, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}