Google IO App:一个写了十年的 Android 示例项目
文章目录
- Google I/O App:一个写了十年的 Android 示例项目
- 项目本身是干什么的
- 技术栈才是重点
- 2021 年的最后一次大更新
- 现在还能用吗
- 适合谁看
Google I/O App:一个写了十年的 Android 示例项目
Google 有个开源项目叫 iosched,是 Google I/O 开发者大会的官方 Android 应用。Star 数 2.1 万,2023 年正式归档。这个项目从 2009 年开始,一写就是十年,现在已经停止维护了。
为什么一个停更的项目还值得说?因为 Google 把它当成 Android 开发的"教科书"来写的。
项目本身是干什么的
这是 Google I/O 大会的配套 App。参会者用它查看日程、预约场次、浏览地图、标记感兴趣的演讲。功能不算复杂,但胜在完整。一个大会 App 该有的都有了:日程列表、筛选、收藏、预约、地图、信息页。
技术栈才是重点
这个项目的真正价值不在功能,在于它展示了一套完整的现代 Android 开发方案。
语言和构建:全部用 Kotlin 写的,构建脚本也是 Kotlin DSL,不是传统的 Groovy。
架构:MVVM 模式,用 ViewModel 管理逻辑,Activity 和 Fragment 只负责 UI。数据层用 Repository 模式封装,上层不关心数据从哪来。中间还加了一层轻量的 Domain 层,专门处理业务逻辑。
异步处理:用协程和 Kotlin Flows。2021 年做了一次大迁移,把 LiveData 全换成 Flows 了。
数据存储:用户数据存在 Cloud Firestore,支持离线同步。用户偏好设置用 Jetpack DataStore,替掉了老的 SharedPreferences。会议数据从远程拉取,缓存在内存里。
依赖注入:Hilt。项目还专门写了一篇从 dagger-android 迁移到 Hilt 的文章。
搜索:用 Room 数据库的 Fts4 全文检索,可以搜 session、speaker、codelab。
测试:UI 测试用 Espresso,单元测试用 JUnit4 加 Mockito。还用了 Jetpack Benchmark 测启动性能,专门跑了 Bootstrap 数据解析的基准测试。
其他:Navigation 组件管页面跳转,ViewPager2 做滑动切换,Firebase 全家桶(Firestore、Cloud Functions、Cloud Messaging、Remote Config)负责后端逻辑。
2021 年的最后一次大更新
这个项目在 2021 年做过一轮架构升级,虽然大会已经不办了,但代码还在迭代:
- LiveData 迁移到 Kotlin Flows
- 支持大屏幕和多形态设备
- SharedPreferences 换成 DataStore
- 实验性地引入 Jetpack Compose(在 compose 分支)
这些改动都是当时 Android 开发的前沿实践。
现在还能用吗
代码还能跑。项目里有个 staging 变体,编译时替换了部分模块,不依赖 Firebase 这些远程服务,不需要 API Key 就能试用。想研究代码的可以直接拉下来跑。
不过要注意,这是 2019 年的数据,UI 也是那时候的样子。想看最新的 Android 开发实践,Google 推荐去看 Now in Android 那个新项目。
适合谁看
想学 Android 架构的开发者,这个项目是现成的教材。代码组织、模块划分、技术选型,都是 Google 自己推荐的做法。比起那些小 demo,这个项目的复杂度更接近真实产品。
停更不代表没价值。十年积累的代码,该踩的坑都踩过了,该做的优化都做了。读源码比看文档学得快。
近真实产品。
停更不代表没价值。十年积累的代码,该踩的坑都踩过了,该做的优化都做了。读源码比看文档学得快。
