{"adoption": {"forks": 300, "observed_at": "2026-08-28T04:03:48.232070+00:00", "stars": 1157}, "canonical_url": "https://ross.abutalabs.com/products/androidframeworktutorial", "card": {"archived": false, "artifact_type": "learning-resource", "description": "写给应用开发的 Android Framework 教程", "domain": ["mobile-development", "operating-systems", "tutorials", "education", "developer-tools"], "enriched": true, "function": ["documentation", "developer-tools"], "health_score": 59, "homepage": null, "language": "C", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["yuandaimaahao/AndroidFrameworkTutorial"], "name": "yuandaimaahao/AndroidFrameworkTutorial", "platform": [], "pushed_at": "2026-01-28T01:50:13+00:00", "repo": "yuandaimaahao/AndroidFrameworkTutorial", "stars": 1157, "tags": ["android-framework", "binder", "ams", "wms", "system-development", "tutorial-series", "source-code-analysis", "android", "linux"], "topics": [], "urls": [], "use_cases": ["learn android framework internals as an app developer", "understand how binder ipc works", "prepare for android system development interviews", "transition from app development to system development", "study android source code with a guided roadmap", "learn linux basics for android framework work"], "what_it_is": "A Chinese-language tutorial series teaching the Android Framework (Binder, AMS, WMS, PMS, Handler, etc.) to application developers, hosted as a repository of articles with a learning roadmap. It covers prerequisites like Linux, C/C++, JNI, and build tools before diving into framework internals.", "when_to_avoid": ["you need official API documentation rather than internals", "you want English-language material", "you are a beginner with no Android app development experience"], "when_to_choose": ["you are an Android app developer wanting to learn Framework internals", "you want a structured roadmap for Android system development", "you prefer article-based tutorials in Chinese"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/androidframeworktutorial", "repo": "yuandaimaahao/AndroidFrameworkTutorial", "role": "main", "score": 59}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:48.232070+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:32:04.459905+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2b25b55bcbceba2efa07664c870d964fef90bec1611455b205ec101ed1aef3a5", "fetched_at": "2026-08-28T04:03:48.232070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yuandaimaahao/AndroidFrameworkTutorial"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:48.232070+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:32:04.459905+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2b25b55bcbceba2efa07664c870d964fef90bec1611455b205ec101ed1aef3a5", "fetched_at": "2026-08-28T04:03:48.232070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yuandaimaahao/AndroidFrameworkTutorial"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:32:04.459905+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2b25b55bcbceba2efa07664c870d964fef90bec1611455b205ec101ed1aef3a5", "fetched_at": "2026-08-28T04:03:48.232070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yuandaimaahao/AndroidFrameworkTutorial"}], "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:03:48.232070+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:48.232070+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:48.232070+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:32:04.459905+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2b25b55bcbceba2efa07664c870d964fef90bec1611455b205ec101ed1aef3a5", "fetched_at": "2026-08-28T04:03:48.232070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yuandaimaahao/AndroidFrameworkTutorial"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:48.232070+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:48.232070+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:32:04.459905+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2b25b55bcbceba2efa07664c870d964fef90bec1611455b205ec101ed1aef3a5", "fetched_at": "2026-08-28T04:03:48.232070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yuandaimaahao/AndroidFrameworkTutorial"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:48.232070+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:48.232070+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:48.232070+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:32:04.459905+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2b25b55bcbceba2efa07664c870d964fef90bec1611455b205ec101ed1aef3a5", "fetched_at": "2026-08-28T04:03:48.232070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yuandaimaahao/AndroidFrameworkTutorial"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:48.232070+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:48.232070+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:32:04.459905+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2b25b55bcbceba2efa07664c870d964fef90bec1611455b205ec101ed1aef3a5", "fetched_at": "2026-08-28T04:03:48.232070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yuandaimaahao/AndroidFrameworkTutorial"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:32:04.459905+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2b25b55bcbceba2efa07664c870d964fef90bec1611455b205ec101ed1aef3a5", "fetched_at": "2026-08-28T04:03:48.232070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yuandaimaahao/AndroidFrameworkTutorial"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:32:04.459905+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2b25b55bcbceba2efa07664c870d964fef90bec1611455b205ec101ed1aef3a5", "fetched_at": "2026-08-28T04:03:48.232070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yuandaimaahao/AndroidFrameworkTutorial"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:32:04.459905+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2b25b55bcbceba2efa07664c870d964fef90bec1611455b205ec101ed1aef3a5", "fetched_at": "2026-08-28T04:03:48.232070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yuandaimaahao/AndroidFrameworkTutorial"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 64, "longevity": 88, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1242, "days_push": 218, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 59, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}