{"adoption": {"forks": 171, "observed_at": "2026-08-28T04:03:40.084730+00:00", "stars": 1122}, "canonical_url": "https://ross.abutalabs.com/products/autoregister", "card": {"archived": false, "artifact_type": "plugin", "description": "基于字节码插桩，在Android中实现跨module自动注册的gradle插件，可用于模块解耦。已应用于ARouter和CC", "domain": ["mobile-development", "developer-tools"], "enriched": true, "function": ["build-tool", "developer-tools", "plugin-system"], "health_score": 20, "homepage": "https://juejin.im/post/5a2b95b96fb9a045284669a9", "language": "Groovy", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["luckybilly/AutoRegister"], "name": "luckybilly/AutoRegister", "platform": ["jvm"], "pushed_at": "2023-03-14T08:34:46+00:00", "repo": "luckybilly/AutoRegister", "stars": 1122, "tags": ["gradle-plugin", "bytecode-instrumentation", "asm", "android-componentization", "auto-registration", "module-decoupling", "automation", "android", "gradle"], "topics": [], "urls": [], "use_cases": ["automatically register module implementations in android componentized apps", "avoid manually editing factory or manager classes when adding new products or strategies", "decouple android modules without annotation processors or runtime reflection", "generate registration code into a static block at build time", "scan aar and jar dependencies for interface implementations during apk build"], "what_it_is": "A Gradle plugin for Android that uses bytecode instrumentation (ASM) to automatically register classes implementing a given interface or extending a base class into a manager class at compile time. It eliminates manual registration code in modular/componentized Android projects and is used by ARouter and CC.", "when_to_avoid": ["your project is not an Android Gradle build", "you prefer runtime or annotation-based registration approaches", "the project needs active maintenance or support for the latest AGP versions"], "when_to_choose": ["you do android modular development and need cross-module auto-registration without reflection", "annotation processors cannot scan classes inside aar dependencies", "you want compile-time registration with no runtime performance cost"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/autoregister", "repo": "luckybilly/AutoRegister", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:40.084730+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:40:56.328134+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4d317af2d5399098738c462424fe37a139ededc8baea402b36eee93df7caadc0", "fetched_at": "2026-08-28T04:03:40.084730+00:00", "kind": "readme", "missing": false, "url": "https://github.com/luckybilly/AutoRegister"}, {"content_hash": "7e4283754e284041c7d3cbce5027864e571ada57a99cbfb4eba417ff5d68b43f", "fetched_at": "2026-08-29T12:44:25.107913+00:00", "kind": "homepage", "missing": false, "url": "https://juejin.im/post/5a2b95b96fb9a045284669a9"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:40.084730+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:40:56.328134+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4d317af2d5399098738c462424fe37a139ededc8baea402b36eee93df7caadc0", "fetched_at": "2026-08-28T04:03:40.084730+00:00", "kind": "readme", "missing": false, "url": "https://github.com/luckybilly/AutoRegister"}, {"content_hash": "7e4283754e284041c7d3cbce5027864e571ada57a99cbfb4eba417ff5d68b43f", "fetched_at": "2026-08-29T12:44:25.107913+00:00", "kind": "homepage", "missing": false, "url": "https://juejin.im/post/5a2b95b96fb9a045284669a9"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:40:56.328134+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4d317af2d5399098738c462424fe37a139ededc8baea402b36eee93df7caadc0", "fetched_at": "2026-08-28T04:03:40.084730+00:00", "kind": "readme", "missing": false, "url": "https://github.com/luckybilly/AutoRegister"}, {"content_hash": "7e4283754e284041c7d3cbce5027864e571ada57a99cbfb4eba417ff5d68b43f", "fetched_at": "2026-08-29T12:44:25.107913+00:00", "kind": "homepage", "missing": false, "url": "https://juejin.im/post/5a2b95b96fb9a045284669a9"}], "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:03:40.084730+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:40.084730+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:40.084730+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:40:56.328134+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4d317af2d5399098738c462424fe37a139ededc8baea402b36eee93df7caadc0", "fetched_at": "2026-08-28T04:03:40.084730+00:00", "kind": "readme", "missing": false, "url": "https://github.com/luckybilly/AutoRegister"}, {"content_hash": "7e4283754e284041c7d3cbce5027864e571ada57a99cbfb4eba417ff5d68b43f", "fetched_at": "2026-08-29T12:44:25.107913+00:00", "kind": "homepage", "missing": false, "url": "https://juejin.im/post/5a2b95b96fb9a045284669a9"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:40.084730+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:40.084730+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:40:56.328134+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4d317af2d5399098738c462424fe37a139ededc8baea402b36eee93df7caadc0", "fetched_at": "2026-08-28T04:03:40.084730+00:00", "kind": "readme", "missing": false, "url": "https://github.com/luckybilly/AutoRegister"}, {"content_hash": "7e4283754e284041c7d3cbce5027864e571ada57a99cbfb4eba417ff5d68b43f", "fetched_at": "2026-08-29T12:44:25.107913+00:00", "kind": "homepage", "missing": false, "url": "https://juejin.im/post/5a2b95b96fb9a045284669a9"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:40.084730+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:40.084730+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:40.084730+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:40:56.328134+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4d317af2d5399098738c462424fe37a139ededc8baea402b36eee93df7caadc0", "fetched_at": "2026-08-28T04:03:40.084730+00:00", "kind": "readme", "missing": false, "url": "https://github.com/luckybilly/AutoRegister"}, {"content_hash": "7e4283754e284041c7d3cbce5027864e571ada57a99cbfb4eba417ff5d68b43f", "fetched_at": "2026-08-29T12:44:25.107913+00:00", "kind": "homepage", "missing": false, "url": "https://juejin.im/post/5a2b95b96fb9a045284669a9"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:40.084730+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:40.084730+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:40:56.328134+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4d317af2d5399098738c462424fe37a139ededc8baea402b36eee93df7caadc0", "fetched_at": "2026-08-28T04:03:40.084730+00:00", "kind": "readme", "missing": false, "url": "https://github.com/luckybilly/AutoRegister"}, {"content_hash": "7e4283754e284041c7d3cbce5027864e571ada57a99cbfb4eba417ff5d68b43f", "fetched_at": "2026-08-29T12:44:25.107913+00:00", "kind": "homepage", "missing": false, "url": "https://juejin.im/post/5a2b95b96fb9a045284669a9"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:40:56.328134+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4d317af2d5399098738c462424fe37a139ededc8baea402b36eee93df7caadc0", "fetched_at": "2026-08-28T04:03:40.084730+00:00", "kind": "readme", "missing": false, "url": "https://github.com/luckybilly/AutoRegister"}, {"content_hash": "7e4283754e284041c7d3cbce5027864e571ada57a99cbfb4eba417ff5d68b43f", "fetched_at": "2026-08-29T12:44:25.107913+00:00", "kind": "homepage", "missing": false, "url": "https://juejin.im/post/5a2b95b96fb9a045284669a9"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:40:56.328134+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4d317af2d5399098738c462424fe37a139ededc8baea402b36eee93df7caadc0", "fetched_at": "2026-08-28T04:03:40.084730+00:00", "kind": "readme", "missing": false, "url": "https://github.com/luckybilly/AutoRegister"}, {"content_hash": "7e4283754e284041c7d3cbce5027864e571ada57a99cbfb4eba417ff5d68b43f", "fetched_at": "2026-08-29T12:44:25.107913+00:00", "kind": "homepage", "missing": false, "url": "https://juejin.im/post/5a2b95b96fb9a045284669a9"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:40:56.328134+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4d317af2d5399098738c462424fe37a139ededc8baea402b36eee93df7caadc0", "fetched_at": "2026-08-28T04:03:40.084730+00:00", "kind": "readme", "missing": false, "url": "https://github.com/luckybilly/AutoRegister"}, {"content_hash": "7e4283754e284041c7d3cbce5027864e571ada57a99cbfb4eba417ff5d68b43f", "fetched_at": "2026-08-29T12:44:25.107913+00:00", "kind": "homepage", "missing": false, "url": "https://juejin.im/post/5a2b95b96fb9a045284669a9"}], "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": 3266, "days_push": 1268, "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}}