{"adoption": {"forks": 1088, "observed_at": "2026-08-28T04:09:50.936799+00:00", "stars": 6857}, "canonical_url": "https://ross.abutalabs.com/products/walle", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Android Signature V2 Scheme签名下的新一代渠道包打包神器", "domain": ["mobile-development", "android-tools", "developer-tools"], "enriched": true, "function": ["build-tool", "cli", "security"], "health_score": 20, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["Meituan-Dianping/walle"], "name": "Meituan-Dianping/walle", "platform": ["cli", "jvm", "cross-platform"], "pushed_at": "2024-05-30T09:26:19+00:00", "repo": "Meituan-Dianping/walle", "stars": 6857, "tags": ["android", "gradle-plugin", "apk-signing", "channel-packaging", "apk-signature-scheme-v2", "multi-channel-distribution", "automation"], "topics": ["android", "gradle", "apk-signature-scheme-v2", "v2signingenabled"], "urls": [], "use_cases": ["generate channel-specific APKs for Android app distribution", "embed channel metadata into APKs without breaking V2 signatures", "read the channel name at runtime inside an Android app", "integrate channel packaging into a Gradle build", "serve channel APK generation over HTTP for build systems"], "what_it_is": "Walle is a tool from Meituan-Dianping for generating Android channel (multi-market distribution) APK packages under the APK Signature Scheme V2. It embeds custom channel information into the APK Signature Block, works as a Gradle plugin or a standalone command-line/HTTP tool, and is far faster than repackaging per channel.", "when_to_avoid": ["you do not need multi-channel APK distribution", "your APKs are signed only with V1 scheme or you target other platforms", "you need actively developed tooling with recent Android Gradle Plugin compatibility guarantees"], "when_to_choose": ["you distribute your Android app through multiple Chinese app stores and need many channel builds quickly", "your APKs use APK Signature Scheme V2 and legacy repackaging tools break the signature", "you want channel packaging integrated into Gradle or as a CLI step in CI"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/walle", "repo": "Meituan-Dianping/walle", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:50.936799+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:41:44.161446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "73d30b0caa6e37c3e2160eb3d903d2d74c6f01592410c58f273253bf9e0a4e8d", "fetched_at": "2026-08-28T04:09:50.936799+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Meituan-Dianping/walle"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:50.936799+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:41:44.161446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "73d30b0caa6e37c3e2160eb3d903d2d74c6f01592410c58f273253bf9e0a4e8d", "fetched_at": "2026-08-28T04:09:50.936799+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Meituan-Dianping/walle"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:41:44.161446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "73d30b0caa6e37c3e2160eb3d903d2d74c6f01592410c58f273253bf9e0a4e8d", "fetched_at": "2026-08-28T04:09:50.936799+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Meituan-Dianping/walle"}], "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:09:50.936799+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:50.936799+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:50.936799+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:41:44.161446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "73d30b0caa6e37c3e2160eb3d903d2d74c6f01592410c58f273253bf9e0a4e8d", "fetched_at": "2026-08-28T04:09:50.936799+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Meituan-Dianping/walle"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:50.936799+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:50.936799+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:41:44.161446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "73d30b0caa6e37c3e2160eb3d903d2d74c6f01592410c58f273253bf9e0a4e8d", "fetched_at": "2026-08-28T04:09:50.936799+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Meituan-Dianping/walle"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:50.936799+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:50.936799+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:50.936799+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:41:44.161446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "73d30b0caa6e37c3e2160eb3d903d2d74c6f01592410c58f273253bf9e0a4e8d", "fetched_at": "2026-08-28T04:09:50.936799+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Meituan-Dianping/walle"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:50.936799+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:50.936799+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:41:44.161446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "73d30b0caa6e37c3e2160eb3d903d2d74c6f01592410c58f273253bf9e0a4e8d", "fetched_at": "2026-08-28T04:09:50.936799+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Meituan-Dianping/walle"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:41:44.161446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "73d30b0caa6e37c3e2160eb3d903d2d74c6f01592410c58f273253bf9e0a4e8d", "fetched_at": "2026-08-28T04:09:50.936799+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Meituan-Dianping/walle"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:41:44.161446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "73d30b0caa6e37c3e2160eb3d903d2d74c6f01592410c58f273253bf9e0a4e8d", "fetched_at": "2026-08-28T04:09:50.936799+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Meituan-Dianping/walle"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:41:44.161446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "73d30b0caa6e37c3e2160eb3d903d2d74c6f01592410c58f273253bf9e0a4e8d", "fetched_at": "2026-08-28T04:09:50.936799+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Meituan-Dianping/walle"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3522, "days_push": 825, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}