{"adoption": {"forks": 428, "observed_at": "2026-08-28T04:05:02.039219+00:00", "stars": 1549}, "canonical_url": "https://ross.abutalabs.com/products/androidnativeemu", "card": {"archived": false, "artifact_type": "library", "description": "Allows you to partly emulate an Android native library.", "domain": ["reverse-engineering", "security", "android-tools", "developer-tools"], "enriched": true, "function": ["simulation", "reverse-engineering", "security", "parser"], "health_score": 35, "homepage": null, "language": "Python", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["AeonLucid/AndroidNativeEmu"], "name": "AeonLucid/AndroidNativeEmu", "platform": ["python", "windows", "cross-platform"], "pushed_at": "2025-02-13T23:10:05+00:00", "repo": "AeonLucid/AndroidNativeEmu", "stars": 1549, "tags": ["android", "jni", "unicorn-engine", "arm-emulation", "elf", "native-library", "emulation", "linux", "macos"], "topics": ["emulator", "android", "arm", "android-native-library", "unicorn"], "urls": [], "use_cases": ["emulate an android native library without a device", "run jni_onload from an .so file in python", "reverse engineer android native code", "hook native functions by symbol table", "analyze arm native library behavior offline", "trace syscalls in an android .so"], "what_it_is": "A Python library that partially emulates Android native (.so) libraries on a host machine using the Unicorn CPU emulator. It emulates the JNI Invocation API, native memory, syscalls, and symbol-based hooking so native code can run and be analyzed outside a device.", "when_to_avoid": ["you need full Android app emulation or a complete runtime environment", "you require perfect fidelity for all syscalls or file system behavior", "you need a maintained production-grade emulation platform rather than an educational tool"], "when_to_choose": ["you need to execute or analyze Android .so files from Python without an emulator or device", "you want to hook JNI functions and native symbols programmatically", "you are studying ELF loading and JNI internals"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/androidnativeemu", "repo": "AeonLucid/AndroidNativeEmu", "role": "main", "score": 26}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.039219+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:30:20.803886+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71a3c73abc0cb63acb304d58ccd8c00368af92a3cc4ddcb3d2eedb93f815b058", "fetched_at": "2026-08-28T04:05:02.039219+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AeonLucid/AndroidNativeEmu"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.039219+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:30:20.803886+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71a3c73abc0cb63acb304d58ccd8c00368af92a3cc4ddcb3d2eedb93f815b058", "fetched_at": "2026-08-28T04:05:02.039219+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AeonLucid/AndroidNativeEmu"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:30:20.803886+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71a3c73abc0cb63acb304d58ccd8c00368af92a3cc4ddcb3d2eedb93f815b058", "fetched_at": "2026-08-28T04:05:02.039219+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AeonLucid/AndroidNativeEmu"}], "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:05:02.039219+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.039219+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.039219+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:30:20.803886+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71a3c73abc0cb63acb304d58ccd8c00368af92a3cc4ddcb3d2eedb93f815b058", "fetched_at": "2026-08-28T04:05:02.039219+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AeonLucid/AndroidNativeEmu"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.039219+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.039219+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:30:20.803886+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71a3c73abc0cb63acb304d58ccd8c00368af92a3cc4ddcb3d2eedb93f815b058", "fetched_at": "2026-08-28T04:05:02.039219+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AeonLucid/AndroidNativeEmu"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.039219+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.039219+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.039219+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:30:20.803886+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71a3c73abc0cb63acb304d58ccd8c00368af92a3cc4ddcb3d2eedb93f815b058", "fetched_at": "2026-08-28T04:05:02.039219+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AeonLucid/AndroidNativeEmu"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.039219+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.039219+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:30:20.803886+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71a3c73abc0cb63acb304d58ccd8c00368af92a3cc4ddcb3d2eedb93f815b058", "fetched_at": "2026-08-28T04:05:02.039219+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AeonLucid/AndroidNativeEmu"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:30:20.803886+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71a3c73abc0cb63acb304d58ccd8c00368af92a3cc4ddcb3d2eedb93f815b058", "fetched_at": "2026-08-28T04:05:02.039219+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AeonLucid/AndroidNativeEmu"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:30:20.803886+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71a3c73abc0cb63acb304d58ccd8c00368af92a3cc4ddcb3d2eedb93f815b058", "fetched_at": "2026-08-28T04:05:02.039219+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AeonLucid/AndroidNativeEmu"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:30:20.803886+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71a3c73abc0cb63acb304d58ccd8c00368af92a3cc4ddcb3d2eedb93f815b058", "fetched_at": "2026-08-28T04:05:02.039219+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AeonLucid/AndroidNativeEmu"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 6, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2977, "days_push": 566, "days_rel": 566, "gap_med": null, "n_releases_24m": 1}, "score": 26, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}