{"adoption": {"forks": 1534, "observed_at": "2026-08-28T04:10:28.147826+00:00", "stars": 9051}, "canonical_url": "https://ross.abutalabs.com/products/virtualapk", "card": {"archived": true, "artifact_type": "library", "description": "A powerful and lightweight plugin framework for Android", "domain": ["mobile-development", "android-tools", "developer-tools"], "enriched": true, "function": ["plugin-system", "mobile-framework", "developer-tools"], "health_score": 10, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["didi/VirtualAPK"], "name": "didi/VirtualAPK", "platform": ["jvm"], "pushed_at": "2023-07-13T22:06:36+00:00", "repo": "didi/VirtualAPK", "stars": 9051, "tags": ["android-plugin-framework", "dynamic-loading", "apk-loading", "gradle-plugin", "didi", "android"], "topics": [], "urls": [], "use_cases": ["dynamically load an apk inside an android app", "run plugin activities and services without installing them", "split a large android app into loadable plugin modules", "hot-fix or update android app features without a store release", "share host app classes and resources with a loaded plugin"], "what_it_is": "VirtualAPK is a lightweight Android plugin framework by Didi that dynamically loads and runs APK files as if they were installed applications. It supports Activities, Services, Receivers, and Providers from loaded plugins without manifest registration, and includes a Gradle plugin for building plugin APKs.", "when_to_avoid": ["you target only the latest Android versions with modern alternatives like App Bundles", "your project requires active community development - the project is in maintenance mode", "you need iOS or cross-platform plugin support"], "when_to_choose": ["you need to load and run full APKs dynamically on Android API 15+", "you want plugin components (Activity, Service, Receiver, Provider) to work without manifest registration", "you need a mature, widely used Android plugin framework with Gradle build integration"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/virtualapk", "repo": "didi/VirtualAPK", "role": "main", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.147826+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:24:02.904714+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d0ca92e9a5f46ef6af2b521d21238a2fe32eaf53a51e42282f19f592aa0f49a", "fetched_at": "2026-08-28T04:10:28.147826+00:00", "kind": "readme", "missing": false, "url": "https://github.com/didi/VirtualAPK"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.147826+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:24:02.904714+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d0ca92e9a5f46ef6af2b521d21238a2fe32eaf53a51e42282f19f592aa0f49a", "fetched_at": "2026-08-28T04:10:28.147826+00:00", "kind": "readme", "missing": false, "url": "https://github.com/didi/VirtualAPK"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:24:02.904714+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d0ca92e9a5f46ef6af2b521d21238a2fe32eaf53a51e42282f19f592aa0f49a", "fetched_at": "2026-08-28T04:10:28.147826+00:00", "kind": "readme", "missing": false, "url": "https://github.com/didi/VirtualAPK"}], "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:10:28.147826+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.147826+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.147826+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:24:02.904714+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d0ca92e9a5f46ef6af2b521d21238a2fe32eaf53a51e42282f19f592aa0f49a", "fetched_at": "2026-08-28T04:10:28.147826+00:00", "kind": "readme", "missing": false, "url": "https://github.com/didi/VirtualAPK"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.147826+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.147826+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:24:02.904714+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d0ca92e9a5f46ef6af2b521d21238a2fe32eaf53a51e42282f19f592aa0f49a", "fetched_at": "2026-08-28T04:10:28.147826+00:00", "kind": "readme", "missing": false, "url": "https://github.com/didi/VirtualAPK"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.147826+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.147826+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.147826+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:24:02.904714+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d0ca92e9a5f46ef6af2b521d21238a2fe32eaf53a51e42282f19f592aa0f49a", "fetched_at": "2026-08-28T04:10:28.147826+00:00", "kind": "readme", "missing": false, "url": "https://github.com/didi/VirtualAPK"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.147826+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.147826+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:24:02.904714+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d0ca92e9a5f46ef6af2b521d21238a2fe32eaf53a51e42282f19f592aa0f49a", "fetched_at": "2026-08-28T04:10:28.147826+00:00", "kind": "readme", "missing": false, "url": "https://github.com/didi/VirtualAPK"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:24:02.904714+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d0ca92e9a5f46ef6af2b521d21238a2fe32eaf53a51e42282f19f592aa0f49a", "fetched_at": "2026-08-28T04:10:28.147826+00:00", "kind": "readme", "missing": false, "url": "https://github.com/didi/VirtualAPK"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:24:02.904714+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d0ca92e9a5f46ef6af2b521d21238a2fe32eaf53a51e42282f19f592aa0f49a", "fetched_at": "2026-08-28T04:10:28.147826+00:00", "kind": "readme", "missing": false, "url": "https://github.com/didi/VirtualAPK"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:24:02.904714+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d0ca92e9a5f46ef6af2b521d21238a2fe32eaf53a51e42282f19f592aa0f49a", "fetched_at": "2026-08-28T04:10:28.147826+00:00", "kind": "readme", "missing": false, "url": "https://github.com/didi/VirtualAPK"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["archived"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3352, "days_push": 1147, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 10, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}