{"adoption": {"forks": 476, "observed_at": "2026-08-28T04:07:50.671161+00:00", "stars": 3246}, "canonical_url": "https://ross.abutalabs.com/products/bytex", "card": {"archived": true, "artifact_type": "framework", "description": "ByteX is a bytecode plugin platform based on Android Gradle Transform API and ASM.  字节码插件开发平台", "domain": ["developer-tools", "android-tools"], "enriched": true, "function": ["build-tool", "developer-tools", "compiler"], "health_score": 10, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["bytedance/ByteX"], "name": "bytedance/ByteX", "platform": ["jvm"], "pushed_at": "2024-01-20T15:06:58+00:00", "repo": "bytedance/ByteX", "stars": 3246, "tags": ["gradle-plugin", "asm", "bytecode-manipulation", "android-build", "transform-api", "apk-optimization", "automation", "android", "gradle"], "topics": ["gradle", "asm", "bytecode", "gradle-plugin"], "urls": [], "use_cases": ["instrument android bytecode during gradle builds", "write custom gradle transform plugins with asm", "speed up apk builds by merging multiple transforms into one", "add method tracing or logging to android classes at build time", "develop reusable bytecode plugins without coupling code"], "what_it_is": "ByteX is a bytecode plugin platform built on the Android Gradle Transform API and ASM, developed by ByteDance's TikTok/Douyin Android team. It lets developers write independent bytecode plugins that are automatically merged into a single efficient Transform during APK builds.", "when_to_avoid": ["you need a general-purpose jvm bytecode tool outside android gradle builds", "your project does not use the android gradle plugin transform api", "you need actively developed features with frequent releases"], "when_to_choose": ["you need to manipulate android app bytecode at build time", "you have multiple gradle transform plugins and want to reduce build time", "you want a decoupled, extensible platform for asm-based plugins"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/bytex", "repo": "bytedance/ByteX", "role": "main", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:50.671161+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:43:54.719862+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e16d6ee327333509f8f9db603e1ebf145fd01a85328159cf88137e71ae5a05f9", "fetched_at": "2026-08-28T04:07:50.671161+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/ByteX"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:50.671161+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:43:54.719862+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e16d6ee327333509f8f9db603e1ebf145fd01a85328159cf88137e71ae5a05f9", "fetched_at": "2026-08-28T04:07:50.671161+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/ByteX"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:43:54.719862+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e16d6ee327333509f8f9db603e1ebf145fd01a85328159cf88137e71ae5a05f9", "fetched_at": "2026-08-28T04:07:50.671161+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/ByteX"}], "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:50.671161+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:50.671161+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:50.671161+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:43:54.719862+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e16d6ee327333509f8f9db603e1ebf145fd01a85328159cf88137e71ae5a05f9", "fetched_at": "2026-08-28T04:07:50.671161+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/ByteX"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:50.671161+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:50.671161+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:43:54.719862+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e16d6ee327333509f8f9db603e1ebf145fd01a85328159cf88137e71ae5a05f9", "fetched_at": "2026-08-28T04:07:50.671161+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/ByteX"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:50.671161+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:50.671161+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:50.671161+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:43:54.719862+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e16d6ee327333509f8f9db603e1ebf145fd01a85328159cf88137e71ae5a05f9", "fetched_at": "2026-08-28T04:07:50.671161+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/ByteX"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:50.671161+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:50.671161+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:43:54.719862+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e16d6ee327333509f8f9db603e1ebf145fd01a85328159cf88137e71ae5a05f9", "fetched_at": "2026-08-28T04:07:50.671161+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/ByteX"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:43:54.719862+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e16d6ee327333509f8f9db603e1ebf145fd01a85328159cf88137e71ae5a05f9", "fetched_at": "2026-08-28T04:07:50.671161+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/ByteX"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:43:54.719862+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e16d6ee327333509f8f9db603e1ebf145fd01a85328159cf88137e71ae5a05f9", "fetched_at": "2026-08-28T04:07:50.671161+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/ByteX"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:43:54.719862+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e16d6ee327333509f8f9db603e1ebf145fd01a85328159cf88137e71ae5a05f9", "fetched_at": "2026-08-28T04:07:50.671161+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/ByteX"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["archived"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2427, "days_push": 956, "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}}