{"adoption": {"forks": 288, "observed_at": "2026-08-28T04:05:04.334054+00:00", "stars": 1566}, "canonical_url": "https://ross.abutalabs.com/products/rocoofix", "card": {"archived": false, "artifact_type": "library", "description": "another hotfix framework", "domain": ["android-tools", "mobile-development", "developer-tools"], "enriched": true, "function": ["developer-tools", "build-tool", "plugin-system"], "health_score": 20, "homepage": null, "language": "Java", "license": "MIT", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["dodola/RocooFix"], "name": "dodola/RocooFix", "platform": ["jvm"], "pushed_at": "2016-09-16T06:02:57+00:00", "repo": "dodola/RocooFix", "stars": 1566, "tags": ["hotfix", "android", "patching", "dex", "gradle-plugin", "runtime-patching", "dalvik", "art", "gradle"], "topics": [], "urls": [], "use_cases": ["fix bugs in a released android app without shipping a new apk", "apply runtime dex patches to an android application", "patch android app classes on dalvik and art devices", "generate hotfix patches automatically from gradle builds", "load a patch dex from assets or a local directory", "hot patch native so libraries in an android app"], "what_it_is": "RocooFix is an Android hotfix framework that lets developers patch bugs in released apps without republishing, supporting both static (restart-required) and dynamic (immediate) fixes on Dalvik and ART VMs. It ships as a Gradle plugin plus runtime library that automates hash.txt and mapping.txt generation and supports ProGuard, Multidex, and beta native (so) library patching.", "when_to_avoid": ["you are starting a new project - the author recommends the successor AnoleFix or actively maintained frameworks like Tinker or Robust", "you need modern Android Gradle Plugin support, Windows build support, or ongoing bug fixes", "you need guaranteed compatibility with recent Android versions"], "when_to_choose": ["you maintain a legacy Android app on old Gradle/AGP versions (1.3–2.1) and need a simple hotfix mechanism", "you want automated patch generation without manually managing hash.txt and mapping.txt files", "you need both static and dynamic patch modes on Dalvik and ART"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/rocoofix", "repo": "dodola/RocooFix", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:04.334054+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:00:08.879724+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6de40ce73feef19147dc70fcc6c92c8aa775e6be2dca14d542308a1c0df7d9a1", "fetched_at": "2026-08-28T04:05:04.334054+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dodola/RocooFix"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:04.334054+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:00:08.879724+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6de40ce73feef19147dc70fcc6c92c8aa775e6be2dca14d542308a1c0df7d9a1", "fetched_at": "2026-08-28T04:05:04.334054+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dodola/RocooFix"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:00:08.879724+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6de40ce73feef19147dc70fcc6c92c8aa775e6be2dca14d542308a1c0df7d9a1", "fetched_at": "2026-08-28T04:05:04.334054+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dodola/RocooFix"}], "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:05:04.334054+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:04.334054+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:04.334054+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:00:08.879724+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6de40ce73feef19147dc70fcc6c92c8aa775e6be2dca14d542308a1c0df7d9a1", "fetched_at": "2026-08-28T04:05:04.334054+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dodola/RocooFix"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:04.334054+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:04.334054+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:00:08.879724+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6de40ce73feef19147dc70fcc6c92c8aa775e6be2dca14d542308a1c0df7d9a1", "fetched_at": "2026-08-28T04:05:04.334054+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dodola/RocooFix"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:04.334054+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:04.334054+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:04.334054+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:00:08.879724+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6de40ce73feef19147dc70fcc6c92c8aa775e6be2dca14d542308a1c0df7d9a1", "fetched_at": "2026-08-28T04:05:04.334054+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dodola/RocooFix"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:04.334054+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:04.334054+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:00:08.879724+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6de40ce73feef19147dc70fcc6c92c8aa775e6be2dca14d542308a1c0df7d9a1", "fetched_at": "2026-08-28T04:05:04.334054+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dodola/RocooFix"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:00:08.879724+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6de40ce73feef19147dc70fcc6c92c8aa775e6be2dca14d542308a1c0df7d9a1", "fetched_at": "2026-08-28T04:05:04.334054+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dodola/RocooFix"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:00:08.879724+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6de40ce73feef19147dc70fcc6c92c8aa775e6be2dca14d542308a1c0df7d9a1", "fetched_at": "2026-08-28T04:05:04.334054+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dodola/RocooFix"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:00:08.879724+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6de40ce73feef19147dc70fcc6c92c8aa775e6be2dca14d542308a1c0df7d9a1", "fetched_at": "2026-08-28T04:05:04.334054+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dodola/RocooFix"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3752, "days_push": 3638, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}