{"adoption": {"forks": 539, "observed_at": "2026-08-28T04:07:17.448143+00:00", "stars": 2747}, "canonical_url": "https://ross.abutalabs.com/products/enjarify", "card": {"archived": true, "artifact_type": "cli-tool", "description": null, "domain": ["reverse-engineering", "security", "developer-tools", "parsers"], "enriched": true, "function": ["compiler", "parser", "reverse-engineering", "security", "developer-tools"], "health_score": 10, "homepage": null, "language": "Python", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["google/enjarify"], "name": "google/enjarify", "platform": ["windows", "python", "cli", "cross-platform"], "pushed_at": "2019-11-06T18:45:36+00:00", "repo": "google/enjarify", "stars": 2747, "tags": ["dalvik", "android", "apk", "dex", "java-bytecode", "bytecode-translation", "static-analysis", "linux", "macos"], "topics": [], "urls": [], "use_cases": ["convert an apk to a jar for analysis", "translate dalvik bytecode to java bytecode", "analyze android apps with java tools", "decompile dex files", "reverse engineer android applications", "convert multidex apk to single jar"], "what_it_is": "Enjarify is a Python 3 tool that translates Dalvik bytecode from Android APK/DEX files into equivalent Java bytecode (JAR), enabling Java analysis tools to inspect Android apps. It is a more robust alternative to dex2jar, handling many edge cases that cause dex2jar to fail.", "when_to_avoid": ["you need translated metadata such as line numbers, sourcefile attributes, or annotations", "you want actively maintained software - development moved to Storyyeller/enjarify", "you need a fast native tool - it is pure Python and slower than alternatives"], "when_to_choose": ["you need to analyze Android apps with Java-based tools like jadx or bytecode analyzers", "dex2jar fails or silently produces incorrect output on edge cases", "you need correct handling of unicode class names, implicit casts, or unusual control flow"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/enjarify", "repo": "google/enjarify", "role": "main", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:17.448143+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T08:19:00.994688+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cbff2b0c146a1d6e7d31b375d03dd00208d7aed0107f3b3f7c22b762af1cbd89", "fetched_at": "2026-08-28T04:07:17.448143+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google/enjarify"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:17.448143+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T08:19:00.994688+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cbff2b0c146a1d6e7d31b375d03dd00208d7aed0107f3b3f7c22b762af1cbd89", "fetched_at": "2026-08-28T04:07:17.448143+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google/enjarify"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T08:19:00.994688+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cbff2b0c146a1d6e7d31b375d03dd00208d7aed0107f3b3f7c22b762af1cbd89", "fetched_at": "2026-08-28T04:07:17.448143+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google/enjarify"}], "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:17.448143+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:17.448143+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:17.448143+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T08:19:00.994688+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cbff2b0c146a1d6e7d31b375d03dd00208d7aed0107f3b3f7c22b762af1cbd89", "fetched_at": "2026-08-28T04:07:17.448143+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google/enjarify"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:17.448143+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:17.448143+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T08:19:00.994688+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cbff2b0c146a1d6e7d31b375d03dd00208d7aed0107f3b3f7c22b762af1cbd89", "fetched_at": "2026-08-28T04:07:17.448143+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google/enjarify"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:17.448143+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:17.448143+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:17.448143+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T08:19:00.994688+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cbff2b0c146a1d6e7d31b375d03dd00208d7aed0107f3b3f7c22b762af1cbd89", "fetched_at": "2026-08-28T04:07:17.448143+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google/enjarify"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:17.448143+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:17.448143+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T08:19:00.994688+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cbff2b0c146a1d6e7d31b375d03dd00208d7aed0107f3b3f7c22b762af1cbd89", "fetched_at": "2026-08-28T04:07:17.448143+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google/enjarify"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T08:19:00.994688+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cbff2b0c146a1d6e7d31b375d03dd00208d7aed0107f3b3f7c22b762af1cbd89", "fetched_at": "2026-08-28T04:07:17.448143+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google/enjarify"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T08:19:00.994688+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cbff2b0c146a1d6e7d31b375d03dd00208d7aed0107f3b3f7c22b762af1cbd89", "fetched_at": "2026-08-28T04:07:17.448143+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google/enjarify"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T08:19:00.994688+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cbff2b0c146a1d6e7d31b375d03dd00208d7aed0107f3b3f7c22b762af1cbd89", "fetched_at": "2026-08-28T04:07:17.448143+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google/enjarify"}], "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": 4109, "days_push": 2492, "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}}