Skip to content

附录 A:源码导航与阅读顺序 ​

1. 主线文件地图 ​

顺序文件先看什么
1apps/mobile/App.tsxrenderer provider 的注册位置
2packages/kit/src/views/Home/NativeHomeRendererProvider.tsxkit 与 app 的解耦
3packages/kit/src/views/Home/NativeHomePageView.native.tsx页面抽象如何取 renderer
4apps/mobile/src/home/MobileNativeHomeRenderer.tsxsnapshot、slots、intent 总装配
5apps/mobile/src/home/mobileNativeHomeViewModelAdapter.tspayload 到 sections/items 的转换
6packages/native-components/src/HomeContainer.types.tspublic wire contract
7packages/native-components/src/HomeContainerProtocol.tsintent/state validator
8packages/native-components/src/HomeContainer.native.tsxNitro host、slot flatten、ref
9packages/native-components/src/HomeContainer.nitro.tsHybridView props/methods
10packages/native-components/nitro.jsonautolinking
11packages/native-components/android/.../HomeContainerModels.ktAndroid JSON decoder/invariant
12packages/native-components/android/.../HomeContainerView.ktAndroid engine/gesture/pager
13packages/native-components/android/.../HomeContainerSurfaceView.ktAndroid slot reparent
14packages/native-components/ios/HomeContainerModels.swiftiOS decoder/invariant
15packages/native-components/ios/HomeContainerView.swiftiOS engine/nested scroll
16packages/native-components/ios/HomeContainerSurfaceComponentView.mmiOS slot reparent/hit test
17packages/kit/src/views/Home/model/cache/homeDisplaySnapshotTypes.tscache schema
18packages/kit/src/views/Home/model/cache/homeDisplaySnapshotPersistQueue.tsgeneration/commit
19packages/kit/src/views/Home/nativeHomePortfolioRequestLifecycle.tsowner/epoch/single-flight
20.github/workflows/native-home-contract.ymlCI contract boundary

2. 按问题检索 ​

你想回答的问题推荐 grep 关键词
state 何时进入 native?initialStateJson, setState, submitInitialState, submitState
tab 为什么不立刻发事件?pendingPager, completePagerSelectionIfIdle, PagerTransitionState
slot 为什么没有显示?mountedSlotKeys, slotHostView, parkSlot, ownsSlot
旧账户为什么不会覆盖新账户?scopeKey, sessionId, epoch, ownerChanged, prepareViewportForOwnerChange
refresh 为什么会结束?requestId, completeRefresh, HOME_REFRESH_FEEDBACK_DURATION_MS
cache 为什么算 miss?loadPreparedHomeDisplaySnapshot, shell.kind, critical, manifest
AllNetworks 为什么判错?isSameAllNetworksAccountData, expectedRequestCount, failureCount

3. 上游链接 ​

源码上游:OneKeyHQ/app-monorepo。本文基于 2026-07-31 快照,部分路径在上游未来版本中可能变化。

4. 本地验证命令 ​

在完整 app-monorepo 源码根目录:

bash
yarn workspace @onekeyhq/native-components lint
development/scripts/test-home-container-protocol-ios.sh
development/scripts/test-home-container-protocol-android.sh
yarn jest apps/mobile/src/home/mobileNativeHomeViewModelAdapter.test.ts
yarn jest packages/native-components/src/HomeContainerProtocol.test.ts

文档站本身:

bash
npm install
npm run docs:build
npm run docs:preview

基于 app-monorepo 2026-07-31 源码快照整理 · 非官方文档