- Published on
StreetComplete iOS版现已进入公开测试
- Authors
- Name
- Snowly
- github.com
项目概述
StreetComplete 是一款面向 OpenStreetMap 的移动端地图编辑应用,旨在让用户通过简单的问答形式轻松贡献地图数据。此前仅支持 Android 平台,如今其 iOS 移植版已进入公开测试阶段。该项目在 GitHub 上以 Issue #5421 作为主跟踪议题,由开发者 westnordost 于 2023 年 12 月发起,替代了更早的 #1892 讨论。
技术路线
跨平台方案选择
开发团队决定采用 Kotlin Multiplatform 作为核心跨平台框架。StreetComplete 的代码库 100% 使用 Kotlin 编写,而 Kotlin 与 Swift 语法相似,且能编译为 JavaScript 或原生机器码。借助 Kotlin Multiplatform,应用逻辑层可以完全共享。UI 层则使用 Compose Multiplatform(Jetpack Compose 的跨平台分支),其 API 与 Android 原生 Compose 高度一致,开发者只需用代码定义界面(类似 SwiftUI 或 Flutter)。
迁移步骤
- 将平台特定代码与业务逻辑分离。
- 用 Kotlin Multiplatform 依赖替换 Android/Java 依赖。
- 逐步将 UI 代码迁移至 Compose Multiplatform:先分离数据访问和 UI 状态(使用 ViewModel 模式),再将 Android XML 布局迁移到 Jetpack Compose,最后从 Jetpack Compose 迁移到 Compose Multiplatform。
这种方案相比使用 Flutter(如 Every Door 应用)的优势在于:无需将整个代码库重写为 Dart,维护成本不会显著增加,仍保持单一代码库。
当前进展
截至 2024 年上半年,开发者全职投入了约半年时间,整体移植进度已达 50%。项目使用看板(Project Board)管理任务,部分任务尚未创建(因依赖前置任务)。团队粗略估计完整移植需要约一人年的工作量,因此社区贡献至关重要。
社区贡献方式
- 认领看板上的未完成任务。
- 学习 Jetpack Compose / Compose Multiplatform 技术,为后续贡献做准备。
- 通过 GitHub 赞助项目,帮助开发者投入更多时间。
- 协助日常维护和问题分类,节省开发者时间。
未来展望
StreetComplete iOS 版的公开测试标志着开源地图编辑工具向多平台迈出重要一步。随着更多贡献者加入,iOS 用户将能像 Android 用户一样便捷地参与 OpenStreetMap 数据完善。该项目也展示了 Kotlin Multiplatform 在现实应用中的可行性,为其他跨平台项目提供了参考。
原标题:StreetComplete on iOS is now in public beta。 HN 原始发布时间:2026年10月1日星期四。当前记录为 619 分、170 条评论。