{"adoption": {"forks": 868, "observed_at": "2026-08-28T04:07:38.655750+00:00", "stars": 3025}, "canonical_url": "https://ross.abutalabs.com/products/dynamicapk", "card": {"archived": false, "artifact_type": "framework", "description": "Solution to implement multi apk dynamic loading and hot fixing for Android App. (实现Android App多apk插件化和动态加载，支持资源分包和热修复)", "domain": ["mobile-development", "android-tools", "developer-tools"], "enriched": true, "function": ["plugin-system", "developer-tools", "build-tool"], "health_score": 20, "homepage": null, "language": "C++", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["CtripMobile/DynamicAPK"], "name": "CtripMobile/DynamicAPK", "platform": ["cpp"], "pushed_at": "2023-07-13T22:16:36+00:00", "repo": "CtripMobile/DynamicAPK", "stars": 3025, "tags": ["android-plugin-framework", "hot-fix", "dynamic-loading", "multi-apk", "resource-splitting", "android", "mobile"], "topics": [], "urls": [], "use_cases": ["hot fix online bugs in an android app without releasing a new version", "load rarely used app modules on demand", "split a large android app into parallel-developed sub-project modules", "speed up android app boot time by deferring dex loading", "dynamically load code and resources in android plugins"], "what_it_is": "DynamicAPK is a Ctrip framework for Android that enables multi-APK/dex dynamic loading, on-demand module loading, and hot fixing of code and resources. It uses a modified aapt so plugins require no activity/fragment proxies, letting teams keep a normal Android development paradigm.", "when_to_avoid": ["you target modern Android versions where this aging approach may lack compatibility", "you only need simple code hot fixes without resource support", "you want an actively developed solution with recent community activity"], "when_to_choose": ["you maintain a large Android app that needs plugin-based parallel development", "you need hot fixes for both code and resources in production", "you want dynamic loading without rewriting activities to use proxy classes"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/dynamicapk", "repo": "CtripMobile/DynamicAPK", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:38.655750+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:29:53.659068+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64d5856a1bedc207a81a6be17f0ca84efff0d12f4600388bdf184c1188ef6e36", "fetched_at": "2026-08-28T04:07:38.655750+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CtripMobile/DynamicAPK"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:38.655750+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:29:53.659068+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64d5856a1bedc207a81a6be17f0ca84efff0d12f4600388bdf184c1188ef6e36", "fetched_at": "2026-08-28T04:07:38.655750+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CtripMobile/DynamicAPK"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:29:53.659068+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64d5856a1bedc207a81a6be17f0ca84efff0d12f4600388bdf184c1188ef6e36", "fetched_at": "2026-08-28T04:07:38.655750+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CtripMobile/DynamicAPK"}], "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:38.655750+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:38.655750+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:38.655750+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:29:53.659068+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64d5856a1bedc207a81a6be17f0ca84efff0d12f4600388bdf184c1188ef6e36", "fetched_at": "2026-08-28T04:07:38.655750+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CtripMobile/DynamicAPK"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:38.655750+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:38.655750+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:29:53.659068+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64d5856a1bedc207a81a6be17f0ca84efff0d12f4600388bdf184c1188ef6e36", "fetched_at": "2026-08-28T04:07:38.655750+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CtripMobile/DynamicAPK"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:38.655750+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:38.655750+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:38.655750+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:29:53.659068+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64d5856a1bedc207a81a6be17f0ca84efff0d12f4600388bdf184c1188ef6e36", "fetched_at": "2026-08-28T04:07:38.655750+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CtripMobile/DynamicAPK"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:38.655750+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:38.655750+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:29:53.659068+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64d5856a1bedc207a81a6be17f0ca84efff0d12f4600388bdf184c1188ef6e36", "fetched_at": "2026-08-28T04:07:38.655750+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CtripMobile/DynamicAPK"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:29:53.659068+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64d5856a1bedc207a81a6be17f0ca84efff0d12f4600388bdf184c1188ef6e36", "fetched_at": "2026-08-28T04:07:38.655750+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CtripMobile/DynamicAPK"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:29:53.659068+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64d5856a1bedc207a81a6be17f0ca84efff0d12f4600388bdf184c1188ef6e36", "fetched_at": "2026-08-28T04:07:38.655750+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CtripMobile/DynamicAPK"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:29:53.659068+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "64d5856a1bedc207a81a6be17f0ca84efff0d12f4600388bdf184c1188ef6e36", "fetched_at": "2026-08-28T04:07:38.655750+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CtripMobile/DynamicAPK"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3971, "days_push": 1147, "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}}