{"adoption": {"forks": 382, "observed_at": "2026-08-28T04:06:44.436896+00:00", "stars": 2411}, "canonical_url": "https://ross.abutalabs.com/products/jimu", "card": {"archived": false, "artifact_type": "framework", "description": "一种简单有效的android组件化方案，支持组件的代码资源隔离、单独调试、集成调试、组件交互、UI跳转、生命周期等完整功能。", "domain": ["mobile-development", "android-tools", "developer-tools"], "enriched": true, "function": ["mobile-framework", "routing", "middleware"], "health_score": 20, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["mqzhangw/JIMU"], "name": "mqzhangw/JIMU", "platform": ["jvm"], "pushed_at": "2021-06-13T15:55:29+00:00", "repo": "mqzhangw/JIMU", "stars": 2411, "tags": ["android-componentization", "modular-architecture", "gradle-plugin", "component-isolation", "single-module-debugging", "ui-navigation", "android"], "topics": ["android-application", "android-component", "android-architecture"], "urls": [], "use_cases": ["split a large android app into independently debuggable modules", "decouple android feature modules so code and resources are fully isolated", "navigate between activities across modules with scheme and host routing", "run a single business component standalone for debugging", "integrate multiple components into a host app for combined debugging", "load and unload components dynamically at runtime", "initialize components in a defined order", "support kotlin modules in a componentized android project"], "what_it_is": "JIMU is an Android componentization framework that isolates each feature module's code and resources so components can run and be debugged independently, then be assembled into a complete app. It provides interface-based inter-component communication, scheme/host routing for UI navigation, generated route tables, dynamic component loading/unloading, and ordered component initialization.", "when_to_avoid": ["you are starting a small app where modularization overhead is not justified", "you need a framework with frequent updates and active maintenance", "you prefer Jetpack's recommended navigation and modularization approaches over a third-party gradle-plugin-based solution"], "when_to_choose": ["you are building a large android app with multiple teams or feature modules that need strict isolation", "you want components that can be developed and debugged independently then assembled into one app", "you need cross-module navigation and interface-based communication without direct dependencies"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/jimu", "repo": "mqzhangw/JIMU", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:44.436896+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:33:58.670932+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ea48b7417bf5e802ddb36f5ff9bb8e13e3d4a6cfdab323abcd4f062a0242b1a", "fetched_at": "2026-08-28T04:06:44.436896+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mqzhangw/JIMU"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:44.436896+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:33:58.670932+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ea48b7417bf5e802ddb36f5ff9bb8e13e3d4a6cfdab323abcd4f062a0242b1a", "fetched_at": "2026-08-28T04:06:44.436896+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mqzhangw/JIMU"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:33:58.670932+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ea48b7417bf5e802ddb36f5ff9bb8e13e3d4a6cfdab323abcd4f062a0242b1a", "fetched_at": "2026-08-28T04:06:44.436896+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mqzhangw/JIMU"}], "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:06:44.436896+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:44.436896+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:44.436896+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:33:58.670932+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ea48b7417bf5e802ddb36f5ff9bb8e13e3d4a6cfdab323abcd4f062a0242b1a", "fetched_at": "2026-08-28T04:06:44.436896+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mqzhangw/JIMU"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:44.436896+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:44.436896+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:33:58.670932+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ea48b7417bf5e802ddb36f5ff9bb8e13e3d4a6cfdab323abcd4f062a0242b1a", "fetched_at": "2026-08-28T04:06:44.436896+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mqzhangw/JIMU"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:44.436896+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:44.436896+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:44.436896+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:33:58.670932+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ea48b7417bf5e802ddb36f5ff9bb8e13e3d4a6cfdab323abcd4f062a0242b1a", "fetched_at": "2026-08-28T04:06:44.436896+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mqzhangw/JIMU"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:44.436896+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:44.436896+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:33:58.670932+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ea48b7417bf5e802ddb36f5ff9bb8e13e3d4a6cfdab323abcd4f062a0242b1a", "fetched_at": "2026-08-28T04:06:44.436896+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mqzhangw/JIMU"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:33:58.670932+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ea48b7417bf5e802ddb36f5ff9bb8e13e3d4a6cfdab323abcd4f062a0242b1a", "fetched_at": "2026-08-28T04:06:44.436896+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mqzhangw/JIMU"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:33:58.670932+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ea48b7417bf5e802ddb36f5ff9bb8e13e3d4a6cfdab323abcd4f062a0242b1a", "fetched_at": "2026-08-28T04:06:44.436896+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mqzhangw/JIMU"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:33:58.670932+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ea48b7417bf5e802ddb36f5ff9bb8e13e3d4a6cfdab323abcd4f062a0242b1a", "fetched_at": "2026-08-28T04:06:44.436896+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mqzhangw/JIMU"}], "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": 3299, "days_push": 1907, "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}}