# Android_Composedemo **Repository Path**: bchgamecat/android_-composedemo ## Basic Information - **Project Name**: Android_Composedemo - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-11 - **Last Updated**: 2026-09-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README --- projectIds: [com.shanghaizhida.newmtrader] moduleIds: [":app", ":common"] docType: Index status: Active --- # ๐Ÿ“š NEW_ZD_android ้กน็›ฎๆŠ€ๆœฏๆ–‡ๆกฃไธญๅฟƒ ๆฌข่ฟŽๆŸฅ้˜… **NEW_ZD_android**๏ผˆไธŠๆตท็›ด่พพ่ฝฏไปถๆ–ฐไธ€ไปฃๅคšๅธ‚ๅœบ็งปๅŠจไบคๆ˜“ๅฎขๆˆท็ซฏๆžถๆž„ๅŸบๅ‡†ๅทฅ็จ‹๏ผ‰ๅฎ˜ๆ–นๆŠ€ๆœฏๆ–‡ๆกฃไธญๅฟƒใ€‚ ๅทฅ็จ‹ๅŸบไบŽ **Jetpack Compose + XML ViewBinding ๆทท็ผ–ไฝ“็ณป**ใ€**Kotlin 2.1 + AGP 9.4 + Gradle 9.6** ๆž„ๅปบ๏ผŒๅบ•ๅฑ‚ `:common` ๆ ธๅฟƒๅบ“้‡‡็”จ้›ถ UI ็บฏๅ‡€ไพ่ต–ๆžถๆž„๏ผŒ้ขๅ‘ๆœชๆฅ้‡‘่žไบคๆ˜“ SDK ็‹ฌ็ซ‹ไบคไป˜ๆผ”่ฟ›ใ€‚ --- ## ๐Ÿงญ ๆ ธๅฟƒๆ–‡ๆกฃๅฏผ่ˆช ๆœฌๅทฅ็จ‹ๆŠ€ๆœฏไฝ“็ณปๅˆ†ไธบไธคๅคงๆƒๅจๆŠ€ๆœฏๅŸบๅ‡†ๆ–‡ๆกฃ๏ผŒไบ’ไธบๆ”ฏๆ’‘ใ€ๅฎšไฝๆธ…ๆ™ฐ๏ผš | ๆ ธๅฟƒๆ–‡ๆกฃ | ๆ–‡ๆกฃๅฎšไฝ | ้‡็‚นๆถต็›–่Œƒ็•ด | | :--- | :--- | :--- | | [[docs/ๆžถๆž„่ฎพ่ฎกไธŽๅ…จๅฑ€่ง„่Œƒ.md|๐Ÿ›๏ธ ้กถๅฑ‚ๆžถๆž„่ฎพ่ฎกไธŽๅ…จๅฑ€่ง„่Œƒ]] | **ๅ…จๅฑ€่ง„่ŒƒไธŽ็ณป็ปŸๆŠฝ่ฑกๅŸบๅ‡†** | โ€ข ็ณป็ปŸๆ ธๅฟƒไธšๅŠกๅŸŸๅˆ’ๅˆ†๏ผˆ่กŒๆƒ…ใ€ไบคๆ˜“ใ€่ต„ไบงใ€็™ปๅฝ•ใ€่ฎพ็ฝฎ๏ผ‰
โ€ข ็‰ฉ็†ๆจกๅ—่งฃ่€ฆ่พน็•Œ๏ผˆ`:app` ่กจ็Žฐๅฑ‚ vs `:common` ๆ ธๅฟƒๅฑ‚๏ผ‰
โ€ข ้•ฟ่ฟžๆŽฅๅ››้˜ถๆฎตๆต่ฝฌ็ฎก้“๏ผˆๆŽฅๅ…ฅยท่ฝ็›˜ยทๅˆ†ๅ‘ยทๆถˆ่ดน๏ผ‰
โ€ข ไพ่ต–ๅˆ†ๅฑ‚ๆฒป็†ไธŽ็™ฝ้ป‘ๅๅ•๏ผˆ`implementation` ไพ่ต–้š”็ฆป๏ผ‰
โ€ข Google Play ๆธ ้“ๅˆ่ง„ไธŽไพ่ต–ๅŠจๆ€ๅˆ†ๆต๏ผˆ`isGooglePlay`๏ผ‰
โ€ข ่กจ็Žฐๅฑ‚่‡ชไธปๆŽงๅˆถ็บข็บฟ๏ผˆ้ป‘็™ฝๆจกๅผๅฑ่”ฝ็ณป็ปŸๆœบๅˆถใ€ๅคš่ฏญ่จ€ i18n ๅฑ่”ฝ็ณป็ปŸไธŽ้ป˜่ฎคไธญๆ–‡ใ€ๅ—ๆŽงๅญ—ไฝ“็ผฉๆ”พไธŽๆ˜พ็คบๅคงๅฐ density ๅฑ่”ฝ็ณป็ปŸๆœบๅˆถใ€ๅ•ไธ€ๆœฌๆบ BaseActivity ๆžถๆž„่žๅˆๅ†ณ็ญ–๏ผ‰ | | [[docs/็ซฏไพงๆ ธๅฟƒๆŠ€ๆœฏๅฎž็Žฐๆ–นๆกˆ.md|๐Ÿ› ๏ธ ็ซฏไพงๆ ธๅฟƒๆŠ€ๆœฏๅฎž็Žฐๆ–นๆกˆ]] | **่ฝๅœฐๅฎž็Žฐ่ŒƒๅผไธŽ็›ดๆŽฅ่ฐƒ็”จๆŒ‡ๅ—** | โ€ข AndroidX Jetpack Navigation ็บฏไปฃ็ ่ทฏ็”ฑ่งฃ่€ฆ่Œƒๅผ๏ผˆURI DeepLinkใ€NavOptionsใ€ๆ•ฐๆฎๅ›žไผ ๏ผ‰
โ€ข ่ฝป้‡ FlowBus ไบ‹ไปถๆ€ป็บฟๅฐ่ฃ…ไธŽ็”Ÿๅ‘ฝๅ‘จๆœŸ่‡ชๅŠจๆ„Ÿ็Ÿฅ๏ผˆJava ๅ‹ๅฅฝ่ฐƒ็”จๆ”ฏๆŒ๏ผ‰
โ€ข ๆœฌๅœฐๅญ˜ๅ‚จๅˆ†็บง่ฝๅœฐ๏ผˆMMKVใ€KeyStore ็กฌไปถ AES-256-GCM ๅŠ ๅฏ†ใ€Room + KSP ๅฎžไฝ“ไธŽ DAO๏ผ‰
โ€ข ่กจ็Žฐๅฑ‚่‡ชไธปๆŽงๅˆถๅฎŒๆ•ดไปฃ็ ๏ผˆDarkModeManager ้ป‘็™ฝๆจกๅผใ€LanguageManager ๅคš่ฏญ่จ€ใ€DisplaySizeManager ๆ˜พ็คบๅคงๅฐ็ฎก็†ใ€ThemeManagerใ€BaseActivity.kt ็ปŸไธ€ๅŸบ็ฑปใ€FontSizeManagerใ€่ทจๆžถๆž„ Compose ๅผน็ช—๏ผ‰ | | [[docs/ๅคšActivityๅ…จๅฑ€่ทจๆจกๅ—่ทฏ็”ฑๆžถๆž„ๆ–นๆกˆ.md|๐ŸŒ ๅคš Activity ๅ…จๅฑ€่ทจๆจกๅ—่ทฏ็”ฑๆ–นๆกˆ]] | **Multi-Activity ่ทจๆจกๅ—่งฃ่€ฆ่ฐƒๅบฆ** | โ€ข ๅฏน้ฝ ARouter ้“พๅผ่ฐƒ็”จไฝ“้ชŒ๏ผˆ`AppRouter.build().navigation()`๏ผ‰
โ€ข ้›ถๅๅฐ„ใ€้›ถ APT/Kapt ้ป‘็›’ๆ’ๆกฉใ€ๅ…จๅทฅ็จ‹ๆž„ๅปบ็ง’่ฟ‡๏ผˆ2~3s๏ผ‰
โ€ข ็ปŸไธ€ๅ…จๅฑ€ๆ‹ฆๆˆชๅ™จ๏ผˆ้ฃŽๆŽงไธŽ็™ปๅฝ•ๆ€ๆ ก้ชŒ้˜ปๆ–ญ๏ผ‰
โ€ข ๅŽŸ็”Ÿๆ ‡ๅ‡† DeepLink / URI Query ๅ‚ๆ•ฐๅŒๅ‘่‡ชๅŠจ่งฃๆžไธŽๅ”ค้†’
โ€ข ๅ…จๅฑ€ๅŸบ็ก€่ฎพๆ–ฝๅˆๅง‹ๅŒ–็ปŸไธ€ๆ”ถๆ‹ขไบŽ `App.kt` ่ง„่Œƒ | | [[docs/FlowBusไบ‹ไปถๆ€ป็บฟๆŠ€ๆœฏๆ–นๆกˆไธŽๅผ€ๅ‘ๆ‰‹ๅ†Œ.md|โšก FlowBus ไบ‹ไปถๆ€ป็บฟๆŠ€ๆœฏๆ–นๆกˆไธŽๅผ€ๅ‘ๆ‰‹ๅ†Œ]] | **่ฝป้‡ๆ€ป็บฟๆžถๆž„ไธŽๅ…จๅœบๆ™ฏๅผ€ๅ‘ๆ‰‹ๅ†Œ** | โ€ข ๆท˜ๆฑฐ EventBus ๅฟ…็„ถๆ€งไธŽๅบ•ๅฑ‚ๆœบๅˆถๅฏนๆฏ”
โ€ข Kotlin SharedFlow ๆณ›ๅž‹ๅผบ็ฑปๅž‹ๅฏน่ฑกไผ ่พ“ไธŽๅŒ้‡ Key ๆœบๅˆถ
โ€ข ็ฒ˜ๆ€งไบ‹ไปถ `isSticky` ็”Ÿๅ‘ฝๅ‘จๆœŸ้—ญ็ŽฏไธŽ็ผ“ๅญ˜่‡ชๅŠจ้‡็ฝฎ
โ€ข Activity/Fragment ่‡ชๅŠจ็”Ÿๅ‘ฝๅ‘จๆœŸๆ„Ÿ็ŸฅไธŽ 0 ๆณ„ๆผ่งฃ็ป‘
โ€ข Compose ็›‘ๅฌไธŽๅบ•ๅฑ‚ๆ— ็”Ÿๅ‘ฝๅ‘จๆœŸไปฃ็†๏ผˆSocket/Repository/Manager๏ผ‰3 ็ง็ฎก็†ๆจกๅผ
โ€ข ้‡‘่ž็บง้€šไฟกๅŒ้€š้“ๆฒป็†็บข็บฟ๏ผˆไธฅ็ฆๆ€ป็บฟไผ ้€’้ซ˜้ข‘ Tick๏ผ‰ | --- ## ๐Ÿ›๏ธ ็‰ฉ็†ๆจกๅ—ๆ‹“ๆ‰‘ไธŽ่Œ่ดฃๅฅ‘็บฆ ```text โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐Ÿ“ฑ :app ๆจกๅ— (่กจ็Žฐๅฑ‚ / ไธšๅŠก้ฉฑๅŠจๅ‘ˆ็Žฐ) โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ ไธšๅŠกๅŠŸ่ƒฝ็›ฎๅฝ• (ui/) โ”‚ โ”‚ ่กจ็Žฐๅฑ‚ๅ…ฌๅ…ฑๅŸบ็ก€ (common/)โ”‚ โ”‚ โ”‚ โ”‚ โ€ข main: ไธป้กตๆก†ๆžถไธŽ Tab ๅฏผ่ˆช โ”‚โ”€โ”€>โ”‚ โ€ข BaseActivity (็ป‘ๅฎšๅŸบ็ฑป)โ”‚ โ”‚ โ”‚ โ”‚ โ€ข market: ่กŒๆƒ…ๅˆ—่กจ/K็บฟ่ฏฆๆƒ… โ”‚ โ”‚ โ€ข BaseDialog (ๅผน็ช—ๅŸบ็ฑป) โ”‚ โ”‚ โ”‚ โ”‚ โ€ข trade: ไธ‹ๅ•้ขๆฟ/ๆŒไป“/ๅง”ๆ‰˜ โ”‚ โ”‚ โ€ข ToastUtils (UIไบคไบ’่พ…ๅŠฉ)โ”‚ โ”‚ โ”‚ โ”‚ โ€ข login: ็™ปๅฝ•้‰ดๆƒ/ๅธญไฝ้€‰ๆ‹ฉ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ ใ€ๅ”ฏไธ€ๆ•ฐๆฎ้€š้“๏ผšๅชๅฏนๆŽฅ Repository ้—จ้ขใ€‘ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐Ÿ“ฆ :common ๆจกๅ— (ๆ ธๅฟƒๅฑ‚ / ้ข†ๅŸŸไธŽๆ•ฐๆฎไธญๅฟƒ) โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ ไธšๅŠกๆ•ฐๆฎไป“ๅบ“ไธญๅฟƒ (repository/) โ”‚ โ”‚ โ”‚ โ”‚ โ€ข MarketRepository (่กŒๆƒ…ไป“ๅบ“้—จ้ข) โ”‚ โ”‚ โ”‚ โ”‚ โ€ข TradeRepository (ไบคๆ˜“ๆŠฅๅ•/ๆ’คๅ•/ๆŒไป“ไป“ๅบ“้—จ้ข) โ”‚ โ”‚ โ”‚ โ”‚ โ€ข AccountRepository (่ต„้‡‘่ต„ไบงไป“ๅบ“้—จ้ข) โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ–ผ โ–ผ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ ้€šไฟกไธŽ้•ฟ่ฟžๆŽฅ (network/) โ”‚ โ”‚ ้ข†ๅŸŸๆจกๅž‹ (model/) โ”‚ โ”‚ โ”‚ โ”‚ โ€ข MarketSocket (่กŒๆƒ…ๆŽจๆต)โ”‚ โ”‚ โ€ข QuoteTick (Tick)โ”‚ โ”‚ โ”‚ โ”‚ โ€ข TradeSocket (ไบคๆ˜“ๅ›žๆŠฅ) โ”‚ โ”‚ โ€ข OrderEntity โ”‚ โ”‚ โ”‚ โ”‚ โ€ข ApiClient (HTTP/REST) โ”‚ โ”‚ โ€ข PositionEntity โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ ๆŒไน…ๅŒ–ไธŽๆตๅผ่ฐƒๅบฆ: ๆœฌๅœฐๆ•ฐๆฎๅบ“ใ€้ซ˜้ข‘ๆ‰น้‡ๅ†™ๅ…ฅ้˜Ÿๅˆ—ใ€Stream ่Š‚ๆตๅˆ†ๅ‘ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` --- ## ๐Ÿšฆ ๆžถๆž„็บข็บฟๅค‡ๅฟ˜ 1. ๐Ÿšซ **็ฆๆญข kapt**๏ผš็ปŸไธ€ไฝฟ็”จ KSP ไปฃ็ ็”Ÿๆˆ๏ผŒไธฅ็ฆๅผ•ๅ…ฅ `kotlin-kapt` ๆ’ไปถใ€‚ 2. ๐Ÿšซ **็ฆๆญข `findViewById`**๏ผšXML ๅธƒๅฑ€ๅผบๅˆถไฝฟ็”จ ViewBinding๏ผŒๆ–ฐๅขž้กต้ขไผ˜ๅ…ˆ Jetpack Composeใ€‚ 3. ๐Ÿšซ **็ฆๆญข ARouter**๏ผšๅ…จ้ข้‡‡็”จ Google ๅฎ˜ๆ–น AndroidX Jetpack Navigation ็บฏไปฃ็ ้ฉฑๅŠจใ€‚ 4. ๐Ÿšซ **็ฆๆญขๆ€ป็บฟไผ ้€’้ซ˜้ข‘ Tick**๏ผš้ซ˜้ข‘ๆตๅฟ…้กป่ตฐ `Repository -> Flow -> ViewModel` ็ฎก้“ๅนถ่Š‚ๆต๏ผŒไฝŽ้ข‘่ตฐ FlowBusใ€‚ 5. ๐Ÿšซ **็ฆๆญขไธป็บฟ็จ‹ๆ•ฐๆฎๅบ“/ๅŠ ๅฏ† I/O**๏ผšๅคงไฝ“้‡็ป“ๆž„ๅŒ–ๆ•ฐๆฎ่ตฐ Room + KSP ๅนถๅœจๅŽๅฐ็บฟ็จ‹ๆ‰ง่กŒ๏ผŒ็ฆๆญขๅŽŸ็”Ÿ `SharedPreferences`ใ€‚ 6. ๐Ÿšซ **ๅ…จๅฑ€ๅผบๅˆถ้”ๅฎš `fontScale = 1.0f`**๏ผšไธฅ็ฆ่ทŸ้šๆ‰‹ๆœบ็ณป็ปŸ่ถ…ๅคงๅญ—ไฝ“๏ผŒ้˜ฒ้‡‘่ž็›˜ๅฃไธŽ่กจๆ ผๆŒคๅŽ‹ๆˆชๆ–ญใ€‚ 7. ๐Ÿšซ **`:common` ้›ถ UI ไพ่ต–**๏ผšไธฅ็ฆๅผ•ๅ…ฅไปปไฝ• UI ็ป„ไปถ๏ผŒๅ†…้ƒจไพ่ต– 100% `implementation`๏ผŒ็ฆๆญข `api` ็ฉฟ้€ใ€‚