摘自鸿洋
推荐几个正在密集更新的开源项目,再附带几篇相关联的介绍文章,也许对你有所帮助。
MatisseMatisse
MatisseMatisse 是一个用 Jetpack Compose 实现的 Android 图片/视频 选择框架Matisse 的特点 & 优势:
- 适配到 Android 13。
- 解决了多个系统兼容性问题。
- 按需索取权限,极简的权限声明。
- 完全用 Kotlin & Jetpack Compose 实现。
- 支持同时选择图片和视频,或者单独选择两者之一。
- 支持精细自定义主题,提供了日夜间两套默认主题。
- 支持多种拍照策略,可以自由选择是否要申请权限。
关于 Matisse 可以看看这两篇文章,以此来了解 Matisse 的设计思路
<!-- Jetpack Compose 实现一个图片选择框架 -->
https://mp.weixin.qq.com/s__biz=MzAxMTYzNTIyMA==&mid=2247493419&idx=1
&sn=de67a5616123b47d7d30b55176aa503a&chksm=9bbcb850accb31463b178b7064fdf94dd237
557baca6f5ed0409ffbf0e6f1efbfe9be8d3952b
&token=567242032&lang=zh_CN&scene=21#wechat_redirect
<!-- Android 13 媒体权限适配指南 -->
https://mp.weixin.qq.com/s__biz=MzAxMTYzNTIyMA==&mid=2247493630
&idx=1&sn=4a988068593a2e9385d81ff07f48b47d
&chksm=9bbcb885accb319393fad52c305df9348182c5e3d0c875d9798bfb2905f645f80a653f20736d
&token=567242032&lang=zh_CN&scene=21#wechat_redirect
Matisse 的 Github 地址:*https://github.com/leavesCZY/Matisse*
compose_chat
compose_chat 也是一个 Jetpack Compose 项目,底层通过接入腾讯云 IM SDK 来实现消息通信功能,支持私聊和群聊,上层则完全用 Jetpack Compose 来实现2021 年 7 月份的时候,Google 正式发布了 Jetpack Compose 的 1.0 版本。我看到后,想着马上就接入到公司项目里也不太现实,就干脆先来尝试做一个功能比较丰富的个人项目得了,因此在 8 月份的时候就开源了 compose_chat。我在 Github 上对 compose_chat 的简介是:Jetpack Compose 最佳实践,用 Jetpack Compose 写一个 IM APP。这也是我对 compose_chat 的定位,每当我想尝试下 Jetpack Compose 的一些新特性或新的设计模式时,基本都是先在 compose_chat 上进行实践,因此这两年来我陆陆续续都会做一些更新。关于 compose_chat 我也先后写了两篇文章,从 Jetpack Compose 的设计理念到上手实操都有涉及到,自认还算作是比较不错的 Jetpack Compose 入门教程。
* [学不动也要学,用 Jetpack Compose 写一个 IM APP(一)](https://mp.weixin.qq.com/s?__biz=MzAxMTYzNTIyMA==&mid=2247490718&idx=1&sn=0f80462c7c32c143aa0060c8cb7b90a0&chksm=9bbf43e5acc8caf375c6caf701c74ac7324b8664ea5f80b19bbc84c607a5af529c6c0f69a223&token=567242032&lang=zh_CN&scene=21#wechat_redirect)
* [学不动也要学,用 Jetpack Compose 写一个 IM APP(二)](https://mp.weixin.qq.com/s?__biz=MzAxMTYzNTIyMA==&mid=2247490756&idx=1&sn=b57632b5d200d397573202628783d284&chksm=9bbf43bfacc8caa93ae140f2a9fe49635e7da39f53ee378161caccb0abbe944bdf9dbbe024f7&token=567242032&lang=zh_CN&scene=21#wechat_redirect)
compose_chat 的 Github 地址:
*https://github.com/leavesCZY/compose_chat*
compose_tetris
compose_tetris 又又又是一个 Jetpack Compose 项目,是一个俄罗斯方块小游戏,同时支持 Android 和 Windows 平台。compose_tetris 的开源时间比 compose_chat 还早,是我在 2021 年 6 月份的时候发布的,最初只是我在 Android 平台上的一个实践小项目。后来看到 JetBrains 发布了适用于多个平台的声明式 UI 开发框架 Compose Multiplatform 的 1.0 正式版本,就又将 compose_tetris 移植到了 Windows 平台,所以现在 compose_tetris 在 Github 上的简介又变成了:不止 Android,Compose Multiplatform 实现 Android + Desktop 俄罗斯方块。前阵子我更新了下 compose_tetris,然后似乎被 Github 官方推荐了,在两三天时间里 Star 数量就从三十多个涨到了一百多个,最近又停下来了。关于 compose_tetris 我也先后写了两篇文章,从 Jetpack Compose 实践到 Compose Multiplatform 初探。
* [学不动也要学,Jetpack Compose 玩一把俄罗斯方块](https://mp.weixin.qq.com/s?__biz=MzAxMTYzNTIyMA==&mid=2247490635&idx=1&sn=1a8ca8374325b1fa6ac512cc58e18f30&chksm=9bbf4330acc8ca26d297466378114ba07da7ffbbd4974ee61429e6a82478e473b3a86b09b1f0&token=567242032&lang=zh_CN&scene=21#wechat_redirect)
* [不止 Android,Compose Multiplatform 初探](https://mp.weixin.qq.com/s?__biz=MzAxMTYzNTIyMA==&mid=2247490795&idx=1&sn=4111505595f1303103fb1a8673f4bf82&chksm=9bbf4390acc8ca860041fc1d7435970d36f5aa0a472c539dee55006d2bcdac01c130ea529c9e&token=567242032&lang=zh_CN&scene=21#wechat_redirect)
compose_tetris 的 Github 地址:
*https://github.com/leavesCZY/compose_tetris*
asm-samples
asm-samples 是一个关于 Android 字节码插桩实战的项目,是我在 2021 年 12 月份发布的。一开始的时候,我是想为公司的项目增加一个应用双击防抖的功能,对于一个代码库已经比较庞大的项目来说,这种功能就比较适合于通过字节码插桩的方式来实现。我先去 Github 上找有没有直接可用的开源项目,最终发现要么是实现得不够全面,要么就是很久没有更新了,都无法满足我的需求,最后就自己来动手实现了。同时,我也写了一篇文章来详细介绍了双击防抖功能具体的实现思路以及需要考虑到的方方面面。后来看到京东发布了一篇介绍如何用字节码插桩进行线程整治的文章,又遇到工信部要求我公司的项目进行隐私合规整改,就写了一系列关于 Android 字节码插桩的功能,也陆陆续续发表了六篇文章,分别从不同方向进行介绍,并开源了全部的实现代码。
* [ASM 字节码插桩:实现双击防抖](https://mp.weixin.qq.com/s?__biz=MzAxMTYzNTIyMA==&mid=2247492383&idx=1&sn=fe3a7db1ad7b5c1e506df5674836f016&chksm=9bbcbc64accb3572202cb1ea6163534b0cb66c67195a01f4d0ecc8040f66b55ea618a0a09ca9&token=567242032&lang=zh_CN&scene=21#wechat_redirect)
* [ASM 字节码插桩:进行线程整治](https://mp.weixin.qq.com/s?__biz=MzAxMTYzNTIyMA==&mid=2247492405&idx=1&sn=69ba6a0af55c9ae0da5b87439f356ee5&chksm=9bbcbc4eaccb3558efa2b18e9a0a028f64828429fb1925cbac23ccaa43a5c6b8f6cd960f7f5c&token=567242032&lang=zh_CN&scene=21#wechat_redirect)
* [ASM 字节码插桩:助力隐私合规](https://mp.weixin.qq.com/s?__biz=MzAxMTYzNTIyMA==&mid=2247492421&idx=1&sn=72bc5e58f028dd77abf59cf8fb8e0013&chksm=9bbcbc3eaccb35287e4e4b2b8f520e3baefea93a754e80fa5d2c2cb32b5b0475ea6e4b1db176&token=567242032&lang=zh_CN&scene=21#wechat_redirect)
* [ASM 字节码插桩:监控大图加载](https://mp.weixin.qq.com/s?__biz=MzAxMTYzNTIyMA==&mid=2247492435&idx=1&sn=20d3ce289f4393b1ef23d2eff53d9c47&chksm=9bbcbc28accb353eafe3762ee9cda2629003e0249dd17e3e68b836fd5b2401cba3d575914269&token=567242032&lang=zh_CN&scene=21#wechat_redirect)
* [ASM 字节码插桩:从 Lambda 表达式讲起](https://mp.weixin.qq.com/s?__biz=MzAxMTYzNTIyMA==&mid=2247493517&idx=1&sn=e6e6fe2c24083e6734e8e76c0d8655ec&chksm=9bbcb8f6accb31e017ba20cd6523f4426c8d04c07ed652ccea731c078873cd8fbd48118689f5&token=567242032&lang=zh_CN&scene=21#wechat_redirect)
* [ASM 字节码插桩:Jetpack Compose 实现双击防抖](https://mp.weixin.qq.com/s?__biz=MzAxMTYzNTIyMA==&mid=2247493615&idx=1&sn=5832413492fc9801397d95fb30dcd34a&chksm=9bbcb894accb3182e73a4f5d527e0b7b82ad4850b63d56d91b7a0ca5bc76426a804bb8275185&token=567242032&lang=zh_CN&scene=21#wechat_redirect)
今年我主要对 asm-samples 进行了两次更新,一次是更新到了 Gradle 8.0,一次是对功能模块进行了拆分,从而使得整个项目更加贴近技术潮流,且代码更加易于理解。此外,asm-samples 虽然开源了全部实现代码,但如果开发者想要引入到自己项目中的话,还需要手动引入源代码,不太方便。因此最近我有打算将其中一两个插件抽取出来并托管到公共 maven,以便开发者可以直接远程依赖使用。
asm-samples 的 Github 地址:
*https://github.com/leavesCZY/asm-samples*
MonitorMonitor
MonitorMonitor 是一个适用于 OkHttp / Retrofit 的可视化抓包工具。在使用 OkHttp 或者 Retrofit 的时候,我觉得大部分开发者做得最多的自定义实现就是拦截器了。因为 OkHttp 的拦截器真的是太有用了,我们的很多需求:添加 Header、计算并添加签名信息、网络请求记录 等都可以通过拦截器来自动完成,只要定义好规则,就可以覆盖到全局的 OkHttp 网络请求了。Monitor 就是通过 OkHttp 的拦截器实现的一个开源库,只需要为 OkHttpClient 添加 MonitorInterceptor,就可以自动记录并缓存所有的网络请求信息,并提供可视化页面进行查看。关于 Monitor 最早可以追溯到 2020 年的 10 月份,那时候的国庆假期我闲着无聊,就想着来写一系列关于 Android 开源库源码解析和实战演练的文章,初定下的目标是 EventBus、ARouter、LeakCanary、Retrofit、Glide、OkHttp、Coil 等七个知名开源库,并且每写一篇源码解析文章,就再写一篇自定义实现或者是扩展阅读的文章,而 Monitor 就是我写完了 OkHttp 源码详解的文章后写的一个 OkHttp 相关的开源库。
* [三方库源码笔记(1)-EventBus 源码详解](https://mp.weixin.qq.com/s?__biz=MzAxMTYzNTIyMA==&mid=2247490363&idx=1&sn=667f53430a21948aac3570b5db91c76c&chksm=9bbf4440acc8cd5612d548095c2e66e3c2bf5272986756ae1bb70ebbfcf073b82ee4aadb2dab&token=567242032&lang=zh_CN&scene=21#wechat_redirect)
* [三方库源码笔记(2)-EventBus 自己实现一个](https://mp.weixin.qq.com/s?__biz=MzAxMTYzNTIyMA==&mid=2247490364&idx=1&sn=632b8ad09494aef66677b0ede7088712&chksm=9bbf4447acc8cd5152f3e1a8148cd1052b9b52314cb6b9c1fa01d3bb7f411951ed0e7a2d36e7&token=567242032&lang=zh_CN&scene=21#wechat_redirect)
* [三方库源码笔记(3)-ARouter 源码详解](https://mp.weixin.qq.com/s?__biz=MzAxMTYzNTIyMA==&mid=2247490365&idx=1&sn=4d51748edfbc098acf354b7e5e86ecc4&chksm=9bbf4446acc8cd503f723f8a622635bda37671bf2235d50f4ae6ff9151ebe7f309db3e085828&token=567242032&lang=zh_CN&scene=21#wechat_redirect)
* [三方库源码笔记(4)-ARouter 自己实现一个](https://mp.weixin.qq.com/s?__biz=MzAxMTYzNTIyMA==&mid=2247490366&idx=1&sn=0e71562defa1ff9782e578b34f4f5068&chksm=9bbf4445acc8cd53b7e13144f99886ed06b49ffca6809eab16ec9512051e30671ad3ef7649a0&token=567242032&lang=zh_CN&scene=21#wechat_redirect)
* [三方库源码笔记(5)-LeakCanary 源码详解](https://mp.weixin.qq.com/s?__biz=MzAxMTYzNTIyMA==&mid=2247490367&idx=1&sn=dcf66a6ec01e10e4cafe6f066cb3a9eb&chksm=9bbf4444acc8cd529f7d80d37fda4e0be501b474ef960b7c92b249267eaea1d311c64f24232d&token=567242032&lang=zh_CN&scene=21#wechat_redirect)
* [三方库源码笔记(6)-LeakCanary 扩展阅读](https://mp.weixin.qq.com/s?__biz=MzAxMTYzNTIyMA==&mid=2247490368&idx=1&sn=da491b0483754c13eecd783394e4d09a&chksm=9bbf443bacc8cd2de38764165a30d5724c8341e0383bf8da27ab6020954680ceb7c83be2b928&token=567242032&lang=zh_CN&scene=21#wechat_redirect)
* [三方库源码笔记(7)-Retrofit 源码详解](https://mp.weixin.qq.com/s?__biz=MzAxMTYzNTIyMA==&mid=2247490369&idx=1&sn=2259304db3a02f24bad4c7227e04d254&chksm=9bbf443aacc8cd2c2da6195d3183e6b72dbe557cbb071f75c35337f6256d6d087e48b9515030&token=567242032&lang=zh_CN&scene=21#wechat_redirect)
* [三方库源码笔记(8)-Retrofit 与 LiveData 的结合使用](https://mp.weixin.qq.com/s?__biz=MzAxMTYzNTIyMA==&mid=2247490383&idx=1&sn=72f5d6716dbac31c80efae8205cf5061&chksm=9bbf4434acc8cd228f33e62306b5bf0333ad2c90b924d2a91d0431e053d4839bbe61857826b4&token=567242032&lang=zh_CN&scene=21#wechat_redirect)
* [三方库源码笔记(9)-Glide 源码详解](https://mp.weixin.qq.com/s?__biz=MzAxMTYzNTIyMA==&mid=2247490426&idx=1&sn=55a51449e43cb5cc327f09d74db619f3&chksm=9bbf4401acc8cd173641c0de43aff54bac743638eabbd4c861de2dcce2f65144e904d5825111&token=567242032&lang=zh_CN&scene=21#wechat_redirect)
* [三方库源码笔记(10)-Glide 你可能不知道的知识点](https://mp.weixin.qq.com/s?__biz=MzAxMTYzNTIyMA==&mid=2247490448&idx=1&sn=5f6a560a173f76f9898c203b05435ca3&chksm=9bbf44ebacc8cdfd6338a2c91e804cc062be1167e0bc6ff4fc91bf9434cbc089f7ba6ec6c4b4&token=567242032&lang=zh_CN&scene=21#wechat_redirect)
* [三方库源码笔记(11)-OkHttp 源码详解](https://mp.weixin.qq.com/s?__biz=MzAxMTYzNTIyMA==&mid=2247490538&idx=1&sn=a8ebb3540acd7b5e5ff73dbb4713c263&chksm=9bbf4491acc8cd879eaba0d906e745493fade80c5e5d1a49f71da9b95185989ef5def7043bed&token=567242032&lang=zh_CN&scene=21#wechat_redirect)
* [三方库源码笔记(12)-OkHttp / Retrofit 开发调试利器](https://mp.weixin.qq.com/s?__biz=MzAxMTYzNTIyMA==&mid=2247490548&idx=1&sn=aaf88459ae8e0c300830a1c411585634&chksm=9bbf448facc8cd99c93adb06cd7c4ccdd821ea1e2936043adf40cabb1e7c063815e0fa12d4e5&token=567242032&lang=zh_CN&scene=21#wechat_redirect)
* [三方库源码笔记(13)-可能是全网第一篇 Coil 的源码分析文章](https://mp.weixin.qq.com/s?__biz=MzAxMTYzNTIyMA==&mid=2247490612&idx=1&sn=771f0ad82ff1413b9ee7a5209a540bd7&chksm=9bbf434facc8ca596c1f12eb96763a139b08192d11fbb666e1313f7607db3dfa7b0fcd1b37ee&token=567242032&lang=zh_CN&scene=21#wechat_redirect)
最近我也对 Monitor 进行了一次升级,主要是解决一些兼容性问题
Monitor 的 Github 地址:
*https://github.com/leavesCZY/Monitor*
6AndroidGuide目前,我的文章的发布渠道主要有三个:微信公众号、掘金、Github。AndroidGuide 正是我在 Github 上专门用于存档文章的项目,我每发布一篇文章,相应的 Markdown 文档也都会同步保存到 AndroidGuide。
由于在微信公众号发表的文章基本就没法修改,因此有时候文章需要勘误的话,我就只能修改在掘金和 AndroidGuide 上发布的文章。如果读者想要查看上面几个开源库相关联的文章的话,建议到我的掘金主页或者 Github 上进行查看,微信公众号比较适合于实时看到有文章发布。
掘金:
https://juejin.cn/user/923245496518439/posts
Github:
https://github.com/leavesCZY/AndroidGuide
最后推荐一下网站,玩Android: wanandroid.com ,包含详尽的知识体系、好用的工具