摘自鴻洋
推薦幾個(gè)正在密集更新的開(kāi)源項(xiàng)目,再附帶幾篇相關(guān)聯(lián)的介紹文章,也許對(duì)你有所幫助。
MatisseMatisse
MatisseMatisse 是一個(gè)用 Jetpack Compose 實(shí)現(xiàn)的 Android 圖片/視頻 選擇框架
Matisse 的特點(diǎn) & 優(yōu)勢(shì):
- 適配到 Android 13。
- 解決了多個(gè)系統(tǒng)兼容性問(wèn)題。
- 按需索取權(quán)限,極簡(jiǎn)的權(quán)限聲明。
- 完全用 Kotlin & Jetpack Compose 實(shí)現(xiàn)。
- 支持同時(shí)選擇圖片和視頻,或者單獨(dú)選擇兩者之一。
- 支持精細(xì)自定義主題,提供了日夜間兩套默認(rèn)主題。
- 支持多種拍照策略,可以自由選擇是否要申請(qǐng)權(quán)限。

關(guān)于 Matisse 可以看看這兩篇文章,以此來(lái)了解 Matisse 的設(shè)計(jì)思路
<!-- Jetpack Compose 實(shí)現(xiàn)一個(gè)圖片選擇框架 -->
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 媒體權(quán)限適配指南 -->
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 也是一個(gè) Jetpack Compose 項(xiàng)目,底層通過(guò)接入騰訊云 IM SDK 來(lái)實(shí)現(xiàn)消息通信功能,支持私聊和群聊,上層則完全用 Jetpack Compose 來(lái)實(shí)現(xiàn)
2021 年 7 月份的時(shí)候,Google 正式發(fā)布了 Jetpack Compose 的 1.0 版本。我看到后,想著馬上就接入到公司項(xiàng)目里也不太現(xiàn)實(shí),就干脆先來(lái)嘗試做一個(gè)功能比較豐富的個(gè)人項(xiàng)目得了,因此在 8 月份的時(shí)候就開(kāi)源了 compose_chat。我在 Github 上對(duì) compose_chat 的簡(jiǎn)介是:Jetpack Compose 最佳實(shí)踐,用 Jetpack Compose 寫(xiě)一個(gè) IM APP。這也是我對(duì) compose_chat 的定位,每當(dāng)我想嘗試下 Jetpack Compose 的一些新特性或新的設(shè)計(jì)模式時(shí),基本都是先在 compose_chat 上進(jìn)行實(shí)踐,因此這兩年來(lái)我陸陸續(xù)續(xù)都會(huì)做一些更新。關(guān)于 compose_chat 我也先后寫(xiě)了兩篇文章,從 Jetpack Compose 的設(shè)計(jì)理念到上手實(shí)操都有涉及到,自認(rèn)還算作是比較不錯(cuò)的 Jetpack Compose 入門(mén)教程。
* [學(xué)不動(dòng)也要學(xué),用 Jetpack Compose 寫(xiě)一個(gè) 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)
* [學(xué)不動(dòng)也要學(xué),用 Jetpack Compose 寫(xiě)一個(gè) 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 又又又是一個(gè) Jetpack Compose 項(xiàng)目,是一個(gè)俄羅斯方塊小游戲,同時(shí)支持 Android 和 Windows 平臺(tái)。
compose_tetris 的開(kāi)源時(shí)間比 compose_chat 還早,是我在 2021 年 6 月份的時(shí)候發(fā)布的,最初只是我在 Android 平臺(tái)上的一個(gè)實(shí)踐小項(xiàng)目。后來(lái)看到 JetBrains 發(fā)布了適用于多個(gè)平臺(tái)的聲明式 UI 開(kāi)發(fā)框架 Compose Multiplatform 的 1.0 正式版本,就又將 compose_tetris 移植到了 Windows 平臺(tái),所以現(xiàn)在 compose_tetris 在 Github 上的簡(jiǎn)介又變成了:不止 Android,Compose Multiplatform 實(shí)現(xiàn) Android + Desktop 俄羅斯方塊。前陣子我更新了下 compose_tetris,然后似乎被 Github 官方推薦了,在兩三天時(shí)間里 Star 數(shù)量就從三十多個(gè)漲到了一百多個(gè),最近又停下來(lái)了。關(guān)于 compose_tetris 我也先后寫(xiě)了兩篇文章,從 Jetpack Compose 實(shí)踐到 Compose Multiplatform 初探。
* [學(xué)不動(dòng)也要學(xué),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 是一個(gè)關(guān)于 Android 字節(jié)碼插樁實(shí)戰(zhàn)的項(xiàng)目,是我在 2021 年 12 月份發(fā)布的。一開(kāi)始的時(shí)候,我是想為公司的項(xiàng)目增加一個(gè)應(yīng)用雙擊防抖的功能,對(duì)于一個(gè)代碼庫(kù)已經(jīng)比較龐大的項(xiàng)目來(lái)說(shuō),這種功能就比較適合于通過(guò)字節(jié)碼插樁的方式來(lái)實(shí)現(xiàn)。我先去 Github 上找有沒(méi)有直接可用的開(kāi)源項(xiàng)目,最終發(fā)現(xiàn)要么是實(shí)現(xiàn)得不夠全面,要么就是很久沒(méi)有更新了,都無(wú)法滿足我的需求,最后就自己來(lái)動(dòng)手實(shí)現(xiàn)了。同時(shí),我也寫(xiě)了一篇文章來(lái)詳細(xì)介紹了雙擊防抖功能具體的實(shí)現(xiàn)思路以及需要考慮到的方方面面。后來(lái)看到京東發(fā)布了一篇介紹如何用字節(jié)碼插樁進(jìn)行線程整治的文章,又遇到工信部要求我公司的項(xiàng)目進(jìn)行隱私合規(guī)整改,就寫(xiě)了一系列關(guān)于 Android 字節(jié)碼插樁的功能,也陸陸續(xù)續(xù)發(fā)表了六篇文章,分別從不同方向進(jìn)行介紹,并開(kāi)源了全部的實(shí)現(xiàn)代碼。
* [ASM 字節(jié)碼插樁:實(shí)現(xiàn)雙擊防抖](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 字節(jié)碼插樁:進(jìn)行線程整治](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 字節(jié)碼插樁:助力隱私合規(guī)](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 字節(jié)碼插樁:監(jiān)控大圖加載](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 字節(jié)碼插樁:從 Lambda 表達(dá)式講起](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 字節(jié)碼插樁:Jetpack Compose 實(shí)現(xiàn)雙擊防抖](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)
今年我主要對(duì) asm-samples 進(jìn)行了兩次更新,一次是更新到了 Gradle 8.0,一次是對(duì)功能模塊進(jìn)行了拆分,從而使得整個(gè)項(xiàng)目更加貼近技術(shù)潮流,且代碼更加易于理解。此外,asm-samples 雖然開(kāi)源了全部實(shí)現(xiàn)代碼,但如果開(kāi)發(fā)者想要引入到自己項(xiàng)目中的話,還需要手動(dòng)引入源代碼,不太方便。因此最近我有打算將其中一兩個(gè)插件抽取出來(lái)并托管到公共 maven,以便開(kāi)發(fā)者可以直接遠(yuǎn)程依賴使用。
asm-samples 的 Github 地址:
*https://github.com/leavesCZY/asm-samples*
MonitorMonitor
MonitorMonitor 是一個(gè)適用于 OkHttp / Retrofit 的可視化抓包工具。
在使用 OkHttp 或者 Retrofit 的時(shí)候,我覺(jué)得大部分開(kāi)發(fā)者做得最多的自定義實(shí)現(xiàn)就是攔截器了。因?yàn)?OkHttp 的攔截器真的是太有用了,我們的很多需求:添加 Header、計(jì)算并添加簽名信息、網(wǎng)絡(luò)請(qǐng)求記錄 等都可以通過(guò)攔截器來(lái)自動(dòng)完成,只要定義好規(guī)則,就可以覆蓋到全局的 OkHttp 網(wǎng)絡(luò)請(qǐng)求了。Monitor 就是通過(guò) OkHttp 的攔截器實(shí)現(xiàn)的一個(gè)開(kāi)源庫(kù),只需要為 OkHttpClient 添加 MonitorInterceptor,就可以自動(dòng)記錄并緩存所有的網(wǎng)絡(luò)請(qǐng)求信息,并提供可視化頁(yè)面進(jìn)行查看。關(guān)于 Monitor 最早可以追溯到 2020 年的 10 月份,那時(shí)候的國(guó)慶假期我閑著無(wú)聊,就想著來(lái)寫(xiě)一系列關(guān)于 Android 開(kāi)源庫(kù)源碼解析和實(shí)戰(zhàn)演練的文章,初定下的目標(biāo)是 EventBus、ARouter、LeakCanary、Retrofit、Glide、OkHttp、Coil 等七個(gè)知名開(kāi)源庫(kù),并且每寫(xiě)一篇源碼解析文章,就再寫(xiě)一篇自定義實(shí)現(xiàn)或者是擴(kuò)展閱讀的文章,而 Monitor 就是我寫(xiě)完了 OkHttp 源碼詳解的文章后寫(xiě)的一個(gè) OkHttp 相關(guān)的開(kāi)源庫(kù)。
* [三方庫(kù)源碼筆記(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)
* [三方庫(kù)源碼筆記(2)-EventBus 自己實(shí)現(xiàn)一個(gè)](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)
* [三方庫(kù)源碼筆記(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)
* [三方庫(kù)源碼筆記(4)-ARouter 自己實(shí)現(xiàn)一個(gè)](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)
* [三方庫(kù)源碼筆記(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)
* [三方庫(kù)源碼筆記(6)-LeakCanary 擴(kuò)展閱讀](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)
* [三方庫(kù)源碼筆記(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)
* [三方庫(kù)源碼筆記(8)-Retrofit 與 LiveData 的結(jié)合使用](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)
* [三方庫(kù)源碼筆記(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)
* [三方庫(kù)源碼筆記(10)-Glide 你可能不知道的知識(shí)點(diǎn)](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)
* [三方庫(kù)源碼筆記(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)
* [三方庫(kù)源碼筆記(12)-OkHttp / Retrofit 開(kāi)發(fā)調(diào)試?yán)鱙(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)
* [三方庫(kù)源碼筆記(13)-可能是全網(wǎng)第一篇 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)
最近我也對(duì) Monitor 進(jìn)行了一次升級(jí),主要是解決一些兼容性問(wèn)題
Monitor 的 Github 地址:
*https://github.com/leavesCZY/Monitor*
6AndroidGuide目前,我的文章的發(fā)布渠道主要有三個(gè):微信公眾號(hào)、掘金、Github。AndroidGuide 正是我在 Github 上專門(mén)用于存檔文章的項(xiàng)目,我每發(fā)布一篇文章,相應(yīng)的 Markdown 文檔也都會(huì)同步保存到 AndroidGuide。

由于在微信公眾號(hào)發(fā)表的文章基本就沒(méi)法修改,因此有時(shí)候文章需要勘誤的話,我就只能修改在掘金和 AndroidGuide 上發(fā)布的文章。如果讀者想要查看上面幾個(gè)開(kāi)源庫(kù)相關(guān)聯(lián)的文章的話,建議到我的掘金主頁(yè)或者 Github 上進(jìn)行查看,微信公眾號(hào)比較適合于實(shí)時(shí)看到有文章發(fā)布。
掘金:
https://juejin.cn/user/923245496518439/posts
Github:
https://github.com/leavesCZY/AndroidGuide
最后推薦一下網(wǎng)站,玩Android: wanandroid.com ,包含詳盡的知識(shí)體系、好用的工具