fragmject:一個 Kotlin 和 Jetpack Compose 學習專案
fragmject 是一個為 Kotlin 和 Jetpack Compose 準備的學習專案。 | Fragmject Kotlin Compose 應用程式 Fragmject Android 開發人員。
秒懂
- 它是什麼?
- fragmject:一個 Kotlin 和 Jetpack Compose 學習專案。本文整理 README 明確列出的入口、組成與採用邊界。
- 適合誰用?
- 適合需要 Kotlin 2.4.x、Jetpack Compose、WindowSizeClass、DetailPane、SharedFlowBus、Room 3、Hilt、WanNavGraph.kt 所描述工作流、並能維護相依環境的團隊;不適合把 README 介紹當作完整生產保證。先依 miaowmiaow/fragmject 的文件完成最小案例,核對命令、設定與專案專屬輸出,再決定是否擴大使用。
- 可以商用嗎?
- 可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
- 還在維護嗎?
- 有在維護。儲存庫最近一次提交在 9 天前。
- 用什麼語言寫的?
- 主要是 Kotlin(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。
開源專案深度解析
fragmject 處理的問題
miaowmiaow/fragmject 的 README 將專案定位為「fragmject is a learning project prepared for Kotlin and Jetpack Compose. | fragmject Kotlin Compose App fragmject Android Developer .」。本文只採用 README 與素材中能核實的內容,公開統計中的 star 數為 1464,不把它當成品質或效能證明。文件摘錄的線索包括: Read this in [English](README.EN.md) ## 前言 刚开始学习 Kotlin 其实挺痛苦的,相关的书籍或视频偏向于知识点的讲解,没有完整的项目实操。 开源项目业务复杂,代码层层封装,用来上手实在不合适,于是便有了 fragmject 项目。 在此感谢 [玩Android](https://www.wanandroid.com/) 及其提供 [开放API](https://wanandroid.com/blog/show/2) 。 ## 简介 fragmject 是一个为初学者准备的上手项目。 通过对 Kotlin 和 Compose 的系统运用,实现的一个功能完备符合主流市场标准应用。 fragmject 没有复杂的业务和多余的封装, 完全依照 [Android Developer](https://developer.android.google.cn/) 官方的写法。 代码简单,内容全面,快速上手,对理解其他项目设计思想和封装技巧也很有帮助。 ### 技术栈 - 语言 :Kotlin 2.4.x + Compose - 架构 :MVVM / MVI 混合,多模块( core + feature + app ) - 导航 :Navigation 3( NavBackStack + NavDisplay ) - UI :Material 3 + WindowSizeClass 大屏自适应 - DI :Hilt - 数据库 :Room 3 - 网络 :Retrofit + OkHttp - 构建 :Gradle Kotlin DSL + Version Catalog + Convention Plugins 学习本项目你将有如下收获: - Kotlin + Compose 声明式 UI - Navigation 3(类型安全导航 + List-Detail 同屏) - WindowSizeClass 大屏/折叠屏自适应 - MVVM、MVI - 常用控件封装(图片选择器、图片编辑器、日历控件、滚轮控件、全面屏沉浸、屏幕录制...) - 字节码插桩(ASM...) ## 开发环境 为了您能正常运行本项目,请先更新你的 Android Studio (可能需要梯子)。 [Download Android Studio | Android Developer](https://developer.android.google.cn/studio?hl=zh-cn) 您也可以自行配置 AGP 和 compose 来进行适配。 [libs.versions.toml](https://github.com/miaowmiaow/fragmject/blob/master/gradle/libs.versions.toml) ## 将 Android 应用迁移到版本目录 [将 build 迁移到版本目录 | Android Developer](https://developer.android.google.cn/studio/build/migrate-to-catalogs?hl=zh-cn) ## 前置知识 在学习前希望您能了解以下知识,这将帮助您更快的上手本项目。 - [Kotlin 语言学习 | Android Developer](https://developer.android.google.cn/kotlin/learn?hl=zh cn) - [Kotlin 代码示例 | Android Developer](https://play.kotlinlang.org/byExample/overview) - [ViewModel 使用入门 | Android Developer](https://developer.android.google.cn/topic/libraries/architecture/viewmodel?hl=zh cn) - [Coroutines 使用入门 | Android Developer](https://developer.android.google.cn/kotlin/coroutines?hl=zh cn) - [Room 使用入门 | Android Developer](https://developer.android.google.cn/training/data-storage/room?hl=zh cn) - [Compose 使用入门 | Android Developer](https://developer.android.google.cn/jetpack/compose) ## 为什么很少依赖其他库 在日常开发中我推荐使用 Hilt 、 Paging 等库,不仅提高效率也能减少bug。 但是初学者过早依赖第三方库,可能会有以下危害: - 增加学习负担,第三方库用起来简单但是底层实现往往复杂,阅读源码容易打击学习积极性。 - 造成基础薄弱,初学者容易把第三方库能力当成自己的能力,脱离第三方库开发能力大大下降。 因此,本项目尽量多去自己实现,可能不是很优雅但一定能让你学习到更多。 ## 截图展示 | | | | | ------------------------------------------------------------ |------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------| ## 项目目录结构 ├── app app 壳工程 | └── src | └── main | | ├── assets assets 目录(HTML/JS/JSON 测试数据) | | └── java 源码目录 | | ├── WanActivity.kt 唯一 Activity | | ├── WanApplication.kt Application(Hilt 入口) | | └── WanNavGraph.kt 导航图(Navigation 3 + WindowSizeClass 自适应) | | | ├── build.gradle.kts 模块构建配置 | ├── dictionary 自定义混淆字典 | └── proguard-rules.pro ## 下载体验 - [](https://github.com/miaowmiaow/fragmject/blob/master/app/free/release/wan-release-1.6.0-free.apk) ## 大屏自适应(WindowSizeClass) 项目基于 material3-window-size-class 实现了完整的大屏/折叠屏自适应布局。 ### 布局策略 | 窗口尺寸 | 宽度 | 导航组件 | 详情展示 | |---------|------|---------|---------| | Compact | B["DetailPane (50%)"] B --> C["WebScreen"] B --> D["UserScreen"] B --> E["SettingScreen"] B --> F["..."] ### 涉及文件 - [LocalWindowSizeClass.k
從這些描述可以看出,fragmject 的價值在於把 Kotlin 2.4.x、Jetpack Compose、WindowSizeClass、DetailPane、SharedFlowBus、Room 3、Hilt、WanNavGraph.kt 放進一條可理解的工作路徑。它不是抽象的技術名詞集合:README 給出的命令、目錄、設定鍵或元件名稱,才是使用者能拿來對照程式碼的邊界。文件沒有交代的執行環境、相容性或效能,不應由專案名稱推測。
實作時還要把專案的責任邊界寫進團隊紀錄。fragmject 的 README 只保證它明確展示的路徑,不能替代部署環境、資料格式與權限規則的設計。先確認輸入資料能被正確讀取,再確認中間狀態沒有遺失,最後檢查輸出能否被下一個步驟使用。若流程需要網路、作業系統特性或外部服務,請將它們列為驗收前提,並保存實際版本。
遇到文件與程式碼不一致時,以目前檢出的程式碼和可重現的錯誤為準,回頭查看 miaowmiaow/fragmject 的 issue 與提交紀錄。不要只依賴介面看起來正常,還要檢查重複執行、空輸入、錯誤輸入和中斷後重啟等情況。這些觀察能讓採用決策落在 Kotlin 2.4.x、Jetpack Compose、WindowSizeClass、DetailPane、SharedFlowBus、Room 3、Hilt、WanNavGraph.kt 的實際行為,而不是停留在宣傳式描述。
fragmject 的入口與組成
閱讀 miaowmiaow/fragmject 時,先沿著 README 出現的 Kotlin 2.4.x、Jetpack Compose、WindowSizeClass、DetailPane、SharedFlowBus、Room 3、Hilt、WanNavGraph.kt 尋找入口。安裝命令、設定檔和主要模組應分開理解,因為它們分別回答如何取得、如何配置,以及功能在哪裡發生。若一個名稱只出現在介紹段落,卻沒有範例或檔案位置,就只能列為待確認項目。
這種讀法也能避免把展示用途誤認成穩定介面。實際整合時,應追蹤輸入如何進入元件、輸出由哪個檔案產生,以及錯誤是否有明確處理;README 未說明的生命週期與限制,本文不替它補上保證。
文件中最有用的細節 · miaowmiaow fragmject
README 對 Kotlin 2.4.x、Jetpack Compose、WindowSizeClass、DetailPane、SharedFlowBus、Room 3、Hilt、WanNavGraph.kt 的描述提供了具體線索,也透露專案預期的使用者。命令列工具需要留意參數與目前目錄,框架或函式庫則要核對元件名稱、設定鍵和版本;服務型專案還要把連接埠、資料來源與權限列入檢查。這些細節比一句「容易使用」更能決定導入成本。
若素材只展示單一路徑,選型結論就應限制在那條路徑。不要把範例延伸成所有平台、資料規模或部署模式都適用,也不要用 star 數替代相容性測試。
針對 fragmject 的最小驗收
在乾淨工作目錄取得 miaowmiaow/fragmject 後,依 README 執行 Kotlin 2.4.x、Jetpack Compose、WindowSizeClass、DetailPane、SharedFlowBus、Room 3、Hilt、WanNavGraph.kt 所涉及的入口,並保存終端輸出、依賴版本與產生的檔案。先確認命令能啟動或完成,接著使用 README 的示例輸入,觀察專案專屬的輸出、頁面、清單、日誌或設定結果。若涉及 Kotlin 程式碼,將錯誤位置連回實際檔案,而不是只記錄「失敗」。
重跑時比較同一輸入的結果,並分開記錄環境差異與程式錯誤。對 fragmject 而言,至少要核對 Kotlin 2.4.x、Jetpack Compose、WindowSizeClass、DetailPane、SharedFlowBus、Room 3、Hilt、WanNavGraph.kt 是否與文件一致;若關鍵設定沒有說明、輸出無法接到現有流程,便先停止擴大導入。
維護與變更的觀察點 · miaowmiaow fragmject
miaowmiaow/fragmject 的維護判斷應落在它自己的命令與檔案上。升級後重新檢查 Kotlin 2.4.x、Jetpack Compose、WindowSizeClass、DetailPane、SharedFlowBus、Room 3、Hilt、WanNavGraph.kt,查看介面名稱、設定格式、建置結果與測試輸出是否改變;若 README 提到 release、migration 或特定目錄,就把那裡列為升級審查點。素材沒有提供支援期限或完整相容性矩陣,因此不能替作者承諾長期穩定。
授權欄位為「Apache-2.0」時,商業使用前應直接閱讀倉庫 LICENSE,並依其條件保留聲明、辨識相依套件義務。沒有授權文字不等於可以任意複製程式碼。
適合的採用情境 · miaowmiaow fragmject
這個專案適合需求確實落在 Kotlin 2.4.x、Jetpack Compose、WindowSizeClass、DetailPane、SharedFlowBus、Room 3、Hilt、WanNavGraph.kt、且團隊能閱讀 miaowmiaow/fragmject 文件與程式碼的情境。它不適合把 README 當成完整產品規格,或需要素材沒有承諾的高可用、平台覆蓋與支援服務。最後的判斷應來自上述最小驗收:命令是否可重跑、專案專屬輸出是否符合預期、以及維護者能否處理升級後的差異。
從文件回到實際專案 · miaowmiaow fragmject
針對 fragmject,真正需要確認的是文件描述與目前程式碼之間是否仍然相符。先在版本控制中記下檢出的分支與 commit,再逐項對照 Kotlin 2.4.x、Jetpack Compose、WindowSizeClass、DetailPane、SharedFlowBus、Room 3、Hilt、WanNavGraph.kt。若是函式庫,確認匯入名稱、輸入型別、預設值和事件回呼;若是命令列或服務,確認啟動參數、組態檔、連接埠、資料目錄和停止方式。若是 Android、桌面或行動端專案,還要確認建置工具能找到素材提及的模組與資源。
驗收紀錄應保留成功與失敗兩種結果。成功時記下實際輸出檔案、畫面或日誌中代表完成的訊息;失敗時記下第一個錯誤、觸發它的輸入,以及是否能在相同環境重現。這些紀錄可以回答 miaowmiaow/fragmject 是否適合目前團隊,而不是只回答範例能否在作者環境運作。若需求需要的功能只在 issue 或討論中出現,應先視為未承諾能力。
編輯結論
適合需要 Kotlin 2.4.x、Jetpack Compose、WindowSizeClass、DetailPane、SharedFlowBus、Room 3、Hilt、WanNavGraph.kt 所描述工作流、並能維護相依環境的團隊;不適合把 README 介紹當作完整生產保證。先依 miaowmiaow/fragmject 的文件完成最小案例,核對命令、設定與專案專屬輸出,再決定是否擴大使用。
社群筆記