{"adoption": {"forks": 764, "observed_at": "2026-08-28T04:07:07.013394+00:00", "stars": 2650}, "canonical_url": "https://ross.abutalabs.com/products/understand-plugin-framework", "card": {"archived": false, "artifact_type": "learning-resource", "description": "demos to help understand plugin framwork", "domain": ["android-tools", "tutorials", "developer-tools"], "enriched": true, "function": ["developer-tools", "documentation"], "health_score": 20, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["tiann/understand-plugin-framework"], "name": "tiann/understand-plugin-framework", "platform": ["jvm"], "pushed_at": "2018-08-27T05:58:35+00:00", "repo": "tiann/understand-plugin-framework", "stars": 2650, "tags": ["android-plugin-framework", "hooking", "droidplugin", "dynamic-proxy", "binder-hook", "classloader", "educational-demos", "android"], "topics": ["android", "droidplugin", "hook", "turtorials"], "urls": [], "use_cases": ["learn how android plugin frameworks work internally", "understand binder hooking via dynamic proxy", "study how droidplugin hooks AMS and PMS", "learn how plugin activities lifecycle is managed", "understand classloader-based plugin loading", "compare android plugin framework approaches"], "what_it_is": "A collection of demo code and blog posts analyzing the DroidPlugin Android plugin framework, covering hook mechanisms, Binder/AMS/PMS hooks, activity lifecycle management, and plugin loading. It is an educational resource for understanding Android pluginization internals rather than a usable library.", "when_to_avoid": ["you need a production-ready plugin framework for a new app", "you target android 9+ where private API restrictions break these techniques", "you need actively maintained code or support"], "when_to_choose": ["you want to deeply understand android hook and pluginization internals", "you are studying android framework internals like binder, AMS, PMS", "you want accompanying demos for the weishu.me plugin framework article series"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/understand-plugin-framework", "repo": "tiann/understand-plugin-framework", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:07.013394+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:18:53.922844+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb1493d0abcbc3e050345800f3a2c481e67e9bedeec7c03dffeb3ca97525cf28", "fetched_at": "2026-08-28T04:07:07.013394+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tiann/understand-plugin-framework"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:07.013394+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:18:53.922844+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb1493d0abcbc3e050345800f3a2c481e67e9bedeec7c03dffeb3ca97525cf28", "fetched_at": "2026-08-28T04:07:07.013394+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tiann/understand-plugin-framework"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:18:53.922844+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb1493d0abcbc3e050345800f3a2c481e67e9bedeec7c03dffeb3ca97525cf28", "fetched_at": "2026-08-28T04:07:07.013394+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tiann/understand-plugin-framework"}], "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:07.013394+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:07.013394+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:07.013394+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:18:53.922844+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb1493d0abcbc3e050345800f3a2c481e67e9bedeec7c03dffeb3ca97525cf28", "fetched_at": "2026-08-28T04:07:07.013394+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tiann/understand-plugin-framework"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:07.013394+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:07.013394+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:18:53.922844+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb1493d0abcbc3e050345800f3a2c481e67e9bedeec7c03dffeb3ca97525cf28", "fetched_at": "2026-08-28T04:07:07.013394+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tiann/understand-plugin-framework"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:07.013394+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:07.013394+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:07.013394+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:18:53.922844+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb1493d0abcbc3e050345800f3a2c481e67e9bedeec7c03dffeb3ca97525cf28", "fetched_at": "2026-08-28T04:07:07.013394+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tiann/understand-plugin-framework"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:07.013394+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:07.013394+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:18:53.922844+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb1493d0abcbc3e050345800f3a2c481e67e9bedeec7c03dffeb3ca97525cf28", "fetched_at": "2026-08-28T04:07:07.013394+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tiann/understand-plugin-framework"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:18:53.922844+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb1493d0abcbc3e050345800f3a2c481e67e9bedeec7c03dffeb3ca97525cf28", "fetched_at": "2026-08-28T04:07:07.013394+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tiann/understand-plugin-framework"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:18:53.922844+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb1493d0abcbc3e050345800f3a2c481e67e9bedeec7c03dffeb3ca97525cf28", "fetched_at": "2026-08-28T04:07:07.013394+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tiann/understand-plugin-framework"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:18:53.922844+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb1493d0abcbc3e050345800f3a2c481e67e9bedeec7c03dffeb3ca97525cf28", "fetched_at": "2026-08-28T04:07:07.013394+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tiann/understand-plugin-framework"}], "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": 3870, "days_push": 2928, "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}}