CatchUp
一款用于及时了解信息的应用。
https://www.zacsweers.dev/catching-up-on-catchup-introduction/
动机
我每天都喜欢阅读很多服务。大多数这些服务都有专门的应用程序来使用,但很多时候我只想快速浏览首页,偶尔深入了解。这就是CatchUp的用武之地:它以简洁的形式呈现多个服务的"首页"高级概览,并在你想进一步了解时智能深度链接到专门的应用程序。
CatchUp不是每个服务的全能客户端,它只是一个提供一目了然的详情和导航的平台。它不支持任何服务的登录,也不支持定制/过滤信息源。CatchUp很简单,如果你想要更多集成功能,应该使用其他许多优秀的专用应用程序。
CatchUp也是我个人深入研究各种内容的试验场,包括架构、库、模式、API特性等。这是一个非常有趣的项目,可以尖峰测试新事物。
特性
- 多种服务
- Hacker News
- Medium
- Product Hunt
- Slashdot
- Designer News
- Dribbble
- GitHub
- 支持的服务可无限滚动
- 各服务间pleasant、简单、一致的UI
- 夜间模式
- 智能深度链接到专用应用
技术
- Kotlin
- Kotlin协程
- 调试工具作为debug版本中的一等公民
- Leak Canary、Scalpel、debug drawer、Flipper、错误报告等
- AndroidX/Jetpack
- Dagger 2 + Anvil
- CatchUp一个有趣的部分是其服务架构是基于Dagger的插件系统
- SqlDelight
- Firebase
- Coil
- Apollo GraphQL
- Square标准套件:Okio/OkHttp 3/Retrofit 2/Moshi
- Inspector
- KSP
CatchUp源代码中有很多有趣的小细节,我计划写一个迷你博客系列来介绍。每个服务都有其独特之处,使得它们在代码中处理起来各不相同。
测试
虽然这是一个个人宠物项目,但你可以在这里找到大量测试。
影响
这个应用在灵感、实现细节和一般内部工作方面欠了很多其他人的债。特别是:
- Nick Butcher和他的Plaid应用
- Jake Wharton和他的u2020演示应用
开发
如果你想在本地构建CatchUp,你应该可以直接克隆并构建,不会有任何问题。项目需要libs.versions.toml
中当前定义的JDK版本。
CatchUp倾向于跟进Android Studio金丝雀版本,所以你可能需要使用金丝雀版本。请查看libs.versions.toml
中的AGP版本。
如果你想构建可工作的服务,有些服务需要API密钥。有关哪些服务需要密钥的更多详情,请参阅wiki。
欢迎修复错误。如果你喜欢的话,也欢迎提供测试,但我并不积极地试图让这个项目成为TDD的光辉典范。对于新功能或其他重要工作,请先在issue中讨论。
许可证
Copyright (C) 2017 Zac Sweers
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.