曾经有人整理过Github上的Java/Android项目Top100,随着越来越多的Android项目开始转向Kotlin,我也想整理一下优秀的Kotlin/Android开源项目,便于大家更好的学习和参考。
项目选取过程很简单:
- 搜索
android kotlin
关键字,Most stars
按星量排名 - 人工二次筛选,筛掉一些面经、电子书类项目
Best match
校正,避免漏掉一些低星的人气项目- 根据
Trending
以及笔者经验不定期更新榜单,追加热门项目
最终整理结果如下( 榜单将会持续更新和维护):
No. | Repo | Desc | Star |
---|---|---|---|
1 | square/okhttp | 方块公司出品的http客户端库, 4.0的大版本功能上与3.0完全一致,只是将语言从Java换成Kotlin重写了一遍,非常适合两门语言的对照学习 | 38k+ |
2 | square/leakcanary | 同样来自方块公司出品,一款检测内存泄露工具, 帮助你在开发阶段方便的检测出内存泄露的问题, 使用起来非常简单方便,其工作原理是面试中的常见问题 | 25k+ |
3 | afollestad/material-dialogs | AppCompat的Material主题仅管支持绝大多数控件,却没法让AlertDialog也变成Material风格,这个库允许你在任意版本上实现Material风格的alertdialog,而且自定义起来也非常方便 | 18k+ |
4 | Kotlin/anko | Anko is a Kotlin library which makes Android application development faster and easier, 虽然已经不在维护,但是仍然值得学习和借鉴 | 15k+ |
5 | LouisCAD/Splitties | 由于anko-layout的废弃,想基于DSL进行UI布局的同学可以看看这个库,可以学习到KotlinDSL的更多玩法 | 1.3k |
6 | square/retrofit | okhttp虽好,但在android开发中很少直接使用,更多的是使用retrofit。其源码中处处渗透着优秀的设计模式,非常值得学习 | 36k |
7 | permissions-dispatcher/PermissionsDispatcher | 通过使用注解用来管理 Android6.0之后引入了动态权限申请, 兼容kapt的使用 | 10k+ |
8 | JakeWharton/RxBinding | J神的RxBinding,已经用Kt重写过了 | 9.5k+ |
9 | gyf-dev/ImmersionBar | android 4.4以上沉浸式状态栏和沉浸式导航栏管理,适配横竖屏切换、刘海屏、软键盘弹出等问题,可以修改状态栏字体颜色和导航栏图标颜色 | 8.6k+ |
10 | InsertKoinIO/koin | 发挥 Kotlin语法优势,配合DSL、reified等特性实现的依赖注入框架(更准确的说是个服务发现框架) | 5.9k |
11 | Kodein-Framework/Kodein-DI | 跟Koin功能和定位类似的Kotlin依赖注入框架,相对于Koin影响力略小 | 2.4k+ |
12 | zetbaitsu/Compressor | android图片压缩库,通过使用DSL接口更加易用,同时支持在Coroutine总处理异步任务 | 5.4k+ |
13 | android/android-ktx | 官方的kotlin扩展库,基本上是Kotlin/Android项目的必备工具 | 7.6k+ |
14 | square/moshi | Kotlin上首选的序列化/反序列化库,其中一些kapt的操作值得学习 | 6.5k |
15 | wasabeef/Blurry | 可能对于学习Kotlin帮助不大,但是作为Android上少有的高斯模糊库,了解一下 | 4.5k+ |
16 | square/okio | 让你更加简单的处理java.io,对于Kotlin也有很好的支持 | 7.1k+ |
17 | coil-kt/coil | android端的图片加载库,虽然没有glide、fresco的前辈的名气大,但是在我的榜单排名更靠前,因为它完全由kotlin打造,使用coroutine处理异步任务 | 4.3k+ |
18 | igorwojda/android-showcase | 虽然不是一个工具库,但是里面有很多Kotlin/Android开发的最佳实践和范例,值得学习 | 3.7k+ |
19 | kittinunf/fuel | 号称Kotlin/Androids上最简单的HTTP网络库,使用kt的lambda语法处理各种回调 | 3.6k+ |
20 | square/wire | 可用于Kotlin的gRPC库,方块出品必属精品 | 3.2k+ |
21 | airbnb/MvRx | 用于Kotlin/Android的Redux框架,充分发挥Kotlin的语法优势,例如通过by关键字创建ViewModel,比Jetpack出现更早 | 3.7k |
22 | airbnb/epoxy | Android列表库,配合MvRx可以打造响应式的列表页面,节省大量模板代码 | 6.7k+ |
23 | mikepenz/FastAdapter | 快速创建和配置RecyclerView的Adapter,核心代码基于Kotlin实现 | 3.1k+ |
24 | spekframework/spek | 基于Kotlin的单元测试框架,可以用DLS的方式写UT | 2k+ |
25 | skydoves/Pokedex | 一个学习Android的Best Practice项目,使用了Dagger Hilt, Motion, Coroutines, Flow, Jetpack (Room, ViewModel, LiveData)等各种新技术 | 3k+ |
26 | android10/Android-CleanArchitecture-Kotlin | 在Kotlin/Android中实践Clean Architecture的SampleApp,边学语言边学架构设计 | 2.7k+ |
27 | arrow-kt/arrow | 大名鼎鼎的用于基于Kotlin的函数式编程库 | 3.8k |
28 | anvil-ui/anvil | 基于React思想的Kotlin/Android的响应式UI框架 | 1.4k+ |
29 | Yalantis/JellyToolbar | 一个用于Kotlin/Android的自定义Toolbal,虽然几年前的库了 | 1.5k+ |
30 | airbnb/paris | 可以通过代码动态设置控件的Style,摆脱烦人的xml | 1.4k+ |
31 | google/flexbox-layout | 可以在android中使用Flaxbox布局的控件 | 15.9k+ |
32 | sanogueralorenzo/Android-Kotlin-Clean-Architecture | 另一款用于kotlin/android的Clean Architecture库 | 1.3k+ |
33 | xiaojinzi123/Component | 一个强大、100% 兼容、支持 AndroidX、支持 Kotlin并且灵活的组件化框架 | 2k+ |
34 | Shopify/livedata-ktx | Livedata的Kotlin扩展,像RxJava一样增加了一些链式操作符 | 460+ |
35 | arrow-kt/arrow | 大名鼎鼎的用于基于Kotlin的函数式编程库 | 3.8k |
36 | sseasonnn/RxDownload | A multi-threaded download tool written with RxJava and Kotlin | 3.9k |
37 | detekt/detekt | kotlin的静态检查工具,AST部分也是用Kotlin实现的 | 3.1k |
38 | uber/AutoDispose | 对RxJava流进行自动bind和dispose,部分代码用kotlin实现 | 3k+ |
39 | moezbhatti/qksms | Kotlin/Android的IM App | 2.9k+ |
40 | square/kotlinpoet | 与javapoet的作用一样,协助生成kotlin代码,框架本身也是用kotlin实现的 | 2.4k+ |
41 | nhaarman/mockito-kotlin | 使用Kotlin在UT中写mockito | 2.4k+ |
42 | Kotlin/kotlinx.serialization | Kotlin官方的序列化库,可用于Kotlin Multiplatform Project | 2.3k+ |
43 | pilgr/Paper | Paper是一个快速的NoSQL类存储,用于Android上的Java / Kotlin对象,支持自动模式迁移 | 2.1k+ |
44 | square/AssistedInject | 自动生成JSR330规范的DI模板代码 | 700+ |
45 | freeletics/RxRedux | 用于Kotlin/Android的Redux库,基于RxJava实现 | 500+ |
46 | babylonhealth/orbit-mvi | 这是一个用于Kotlin/Android的Model-View-Intent (MVI)框架。它的灵感来自Jake Wharton,RxFeedback和Mosby的“Managing State with RxJava" | 300+ |
47 | Foso/Jetpack-Compose-Playground | 帮助你学习Jetpack Compose的优秀项目 | 500+ |
48 | Kotlin/dokka | 像javadoc一样,用于生成Kotlin的doc | 1.7k+ |
49 | skydoves/ColorPickerPreference | Android上的颜色选取库,可实现ColorPicker,ColorPickerDialog,ColorPickerPreference等功能 | 340+ |
50 | RubyLichtenstein/RxTest | RxTest是一个用于测试RxJava的Kotlin库 | 280+ |
51 | google/iosched | GooglePlay官方APP的开源项目,同时是一个学习Kotlin/Jetpack的最佳实践 | 20k+ |
52 | ReactiveCircus/FlowBinding | 简单说就是Coroutine Flow版的RxBinding | 450+ |
to be continued…