Skip to content

Repository files navigation

KMP DevHub

KMP DevHub 是一个基于 WanAndroid 开放 API 的 Kotlin Multiplatform 应用。项目共享网络、缓存、Repository、分页、会话、业务状态和 ViewModel;Android 使用 Jetpack Compose,iOS 使用 SwiftUI,不共享 UI。

README 面向开发者,说明项目是什么、如何运行、采用哪些库以及当前交付边界。Codex 的执行规范、源码集约束和 skill 路由则维护在 AGENTS.md,两者不要混写。

功能范围

  • 首页文章、置顶、Banner、热门内容、常用网站、热词和最新项目。
  • 知识体系、导航、公众号、教程、鸿蒙、项目、广场、问答、工具和 Maven 查询。
  • 搜索、登录、注册、退出、个人信息、积分和排行榜。
  • 文章/站外文章/网站收藏,用户分享和个人分享;首页与内容列表支持行内收藏切换(乐观更新,失败回滚并提示)。
  • TODO v2 的列表、筛选(全部/未完成/已完成)、新增、编辑、完成切换和删除。
  • 已读/未读消息与未读数量;读取未读消息是有服务端副作用的操作。
  • Android/iOS 原生刷新、加载更多、WebView(统一 isSafeWebUrl 安全拦截与加载进度)、暗色模式、动态字体和宽屏布局基础。

接口路径、鉴权和分页起点见 docs/API_COVERAGE.md,目录职责和命名约定见 docs/ARCHITECTURE.md

技术方案

能力 共享/Android iOS
网络 Ktor Client 3.5.2,OkHttp engine Ktor Darwin engine
JSON/异步/时间 Kotlinx Serialization、Coroutines/StateFlow、Kotlinx Datetime 观察共享状态
DI/ViewModel Koin 4.2.2、KMP ObservableViewModel 1.0.2 KMP NativeCoroutines 1.0.5
KV 与会话 腾讯官方 com.tencent:mmkv-kmp:2.4.2 同一个 KMP artifact
日志 Kermit 2.1.0 输出到系统日志
UI AndroidX Compose Material 3 SwiftUI
导航 Navigation 3 1.1.7、Material 3 Adaptive TabViewNavigationStackNavigationSplitView
图片 Coil 3.6.0 NukeUI 13.2.0
Web AndroidX WebKit WebKit / WKWebView

全部 Gradle 版本集中在 gradle/libs.versions.toml。iOS Swift Package 固定在 Xcode 工程中。

架构

Android Compose + Nav3 ─┐
                        ├─ shared ViewModel / StateFlow
iOS SwiftUI + Router ───┘              │
                               Repository(单一数据来源)
                                  ├─ Ktor RemoteDataSource
                                  └─ MMKV CacheDataSource

shared 保持为一个 framework,并按基础设施、领域模型、数据和 feature 组织:

  • core/network:Ktor、统一 Envelope、超时、GET 重试和脱敏日志。
  • core/cache:项目存储接口、MMKV 适配器、TTL 和容量控制。
  • core/session:加密 Cookie、登录状态和 -1001 会话失效。
  • core/paging:统一分页起点、请求去重、过期响应隔离和业务 ID 去重。
  • domain/model/<feature>:按 contenthometodoaccount 拆分的领域模型。
  • data/<feature>:按数据所有权拆分的 Repository;data/WanAndroidApi.kt 是远端 API 边界。
  • feature/<feature>/presentation:每个业务独立的 UiState、Effect 和 ViewModel。

平台 UI、导航、WebView、图片对象和密钥系统均留在平台侧。

MMKV 数据设计

  • public_cache_v1:公共内容 JSON;不加密,不存隐私,约 20 MiB 上限。
  • preferences_v1:主题和最多 20 条搜索历史。
  • secure_session_v1:Cookie、用户 ID 和最小会话;AES-256 加密。

Android 使用 Keystore 包装随机 MMKV 密钥,iOS 将随机密钥保存在 Keychain。密码不会单独保存,Cookie 不进入公共缓存或日志。图片缓存由 Coil/Nuke 独立管理。

公共内容采用缓存优先与后台刷新:短期内容新鲜 15 分钟、保留 7 天;栏目内容新鲜 6 小时、保留 14 天;结构数据新鲜 24 小时、保留 30 天。账号、TODO、消息和搜索结果不写入公共持久缓存。

项目结构

.
├── shared/                 # core / domain model / data / feature presentation
├── androidApp/             # feature/*/ui Scene + Navigation 3 + 公共 UI
├── iosApp/                 # Application / Navigation / Features / UI / Infrastructure
├── docs/API_COVERAGE.md    # API 覆盖矩阵
├── .agents/skills/         # 项目安装的 KMP skills
├── AGENTS.md               # Codex 项目级执行规范
└── gradle/libs.versions.toml

环境与运行

  • Android:Android Studio、兼容当前 AGP/Kotlin 的 JDK,最低 API 24。
  • iOS:macOS、Xcode,最低 iOS 16;首次打开由 Swift Package Manager 解析 Nuke 等依赖。
  • 首次构建需要网络访问 Maven 和 Swift Package 仓库。

Android Studio 中选择 androidApp 运行,或执行:

./gradlew :androidApp:assembleDebug

iOS 使用 Xcode 打开 iosApp/iosApp.xcodeproj。真机前需在 iosApp/Configuration/Config.xcconfig 配置 TEAM_ID、正式 Bundle ID 与签名。

发布门禁

当前实现是完整工程骨架与主要垂直切片,不等同于已经通过发布验收。MMKV KMP 2.4.2 仍是 experimental;正式商业发布前必须完成自动化测试、真机冷启动、登录/Cookie、全部数据形状、无障碍、性能与应用商店隐私审查。还需确认 WanAndroid 内容/商用授权、正式包标识、签名、隐私政策和商店资料。

双端 Debug 构建已在本机验证通过:./gradlew :androidApp:assembleDebugiosAppxcodebuild ... -configuration Debug build(iPhone 17 Pro 模拟器)。

本仓库当前的 Codex 验证约束是只执行 git diff --check,不会自动执行 Gradle、Xcode、测试、模拟器或截图测试。

AGENTS.md 与 skills

AGENTS.md 的推荐写法是:只写项目稳定事实和可执行约束,包括项目边界、沟通规范、修改原则、验证范围、skill 触发规则和禁止事项;不要复制 README 的产品介绍,也不要写容易过期的临时任务进度。

已安装 skills 及作用:

Skill 作用
kotlin-project-feature-implementation 新功能的源码集、分层、状态管线和最小垂直切片。
kotlin-project-architecture-review 架构、模块边界、状态持有者和演进风险评审。
kotlin-kmp-code-review 已实现代码的正确性、并发、性能、安全和维护性审查。
kotlin-project-state-management ViewModel、StateFlow、UiState、Effect 和生命周期设计。
kotlin-data-kmp-data-layer API、Repository、缓存、单一数据源和错误模型。
kotlin-platform-kmp-bridges commonMain/平台源码集、系统 API 和 Swift/Kotlin 边界。
kotlin-testing-kmp KMP 测试设计、实现与评审;不会绕过项目验证限制。
kotlin-build-kmp-gradle-governance Gradle、Version Catalog、target、插件和依赖治理。
kotlin-project-bugfix 根因定位和最小安全修复。
kotlin-kmp-refactor-safety 重构、迁移与可靠性加固的范围和兼容性控制。

每个 skill 的完整规则以 .agents/skills/<skill>/SKILL.md 为准。

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages