Google IO App:一个写了十年的 Android 示例项目

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这个项目的复杂度更接近真实产品。停更不代表没价值。十年积累的代码该踩的坑都踩过了该做的优化都做了。读源码比看文档学得快。近真实产品。停更不代表没价值。十年积累的代码该踩的坑都踩过了该做的优化都做了。读源码比看文档学得快。