[AI๋ก ์์ข ์ด๊ณต์์ค ๋ง๋ค๊ธฐ 3] ์ฌ์ฉํ ๊ธฐ๋ฅ โ Compose, Hilt, Repository๋ก ๋ผ๋๋ฅผ ์ด๋ ๊ฒ ์ก์๋ค
1ํธ์์ ์์ด๋์ด๋ฅผ ๊ณ ๋ฅด๊ณ , 2ํธ์์ ์กฐ์๊ณผ ํ์ ๊ท์น์ ์ ํ๋ค. ์ด์ ๊ทธ๊ฑธ ์ด๋ค ๋๊ตฌ๋ก ๋ง๋ค์๋์ง ์ ๋ฆฌํ๋ค. ์ด ๊ธ์ "์ฌ์ฉํ ๊ธฐ๋ฅ" ํธ์ด๋ค.
์ Compose๋ก ์์ํ๋
Android์์ ๋จผ์ ๋ง๋ค๊ธฐ๋ก ํ๋ค. ํ๋ฉด ๋๋ถ๋ถ์ด ์ง์ ๊ทธ๋ฆฌ๋ ๊ฒ์ ํ๋ฉด์ด๋ผ ์ ์ธํ UI๊ฐ ์ ๋ง์๋ค. Flutter ๋ฒ์ ์ Android๋ฅผ ๋๋ธ ๋ค์ ์๊ฐํ๊ธฐ๋ก ํ๋ค. [๋ณด๊ฐ: Flutter๊ฐ ์๋๋ผ Compose๋ฅผ ๋จผ์ ๊ณ ๋ฅธ ์ด์ ]
์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ
app/build.gradle.kts์ ์์กด์ฑ์ ์ญํ ๋ณ๋ก ๋ฌถ์ผ๋ฉด ์ด๋ ๋ค.
// UI
implementation(platform(libs.compose.bom))
implementation(libs.compose.material3)
implementation(libs.compose.material3.windowsize) // ํ๋ธ๋ฆฟยท๊ฐ๋ก ํ๋ฉด ๋์
implementation(libs.androidx.navigation.compose)
// ๊ตฌ์กฐ
implementation(libs.hilt.android) // ์์กด์ฑ ์ฃผ์
ksp(libs.hilt.compiler)
implementation(libs.androidx.hilt.navigation.compose)
// ๋ฐ์ดํฐ
implementation(libs.moshi) // JSON
ksp(libs.moshi.kotlin.codegen)
implementation(platform(libs.firebase.bom))
implementation(libs.firebase.auth)
implementation(libs.firebase.firestore)
// ์์ตยท๋ถ์
implementation(libs.play.services.ads) // AdMobํด๋๋ ๊ธฐ๋ฅ๋ณ๋ก ๋๋ด๋ค
feature/play ๊ฒ์ ํ๋ฉด๊ณผ ViewModel
game/logic ์๋ฅด๊ธฐยทํ์ ๊ฐ์ ์์ ๊ท์น
data/repository ์ ์ฅยท๋ถ๋ฌ์ค๊ธฐ
core/ads ๊ด๊ณ ๊ด๋ฆฌ
core/feedback ์ง๋ยทํจ๊ณผ์ ๊ฐ์ ํผ๋๋ฐฑ
core/analytics ๋ถ์ ์ด๋ฒคํธํต์ฌ์ game/logic์ด๋ค. ์๋ฅด๊ธฐ์ ํ์ ๊ท์น์ ํ๋ฉด๊ณผ ๋ถ๋ฆฌํด ๋๋ ๊ท์น์ ๋ฐ๊ฟ๋ ํ๋ฉด ์ฝ๋๋ฅผ ๊ฑฐ์ ๊ฑด๋๋ฆฌ์ง ์์๋ค. 2ํธ์์ ํ์ ๋ฐฉ์์ ๊ฐ์์์ ์ ์์๋ ๊ฒ๋ ์ด ๋๋ถ์ด๋ค.
Hilt + Repository๋ฅผ ์ด ์ด์
[๋ณด๊ฐ: ์์ ๊ฒ์์ธ๋ฐ Hilt์ Repository๊น์ง ์ด ์ด์ ๋ฅผ ๋ณธ์ธ ๋ง๋ก]
์ ๋ฆฌ
- ํ๋ฉด(Compose) / ๊ท์น(game/logic) / ์ ์ฅ(repository) / ๋ถ๊ฐ ๊ธฐ๋ฅ(ads, feedback, analytics)์ ํด๋๋ก ๋๋ด๋ค.
- ๊ท์น์ ํ๋ฉด์์ ๋ถ๋ฆฌํ๋ฉด ํ์ ๋ฐฉ์์ ๋ฐ๊ฟ๋ ์์ ๋ฒ์๊ฐ ์๋ค.
- ํ๋ธ๋ฆฟ ๋์์ฉ์ผ๋ก
material3-window-size-class๋ฅผ ๋ฃ์ด ๋์๋ค.
๋ค์ ๊ธ์์๋ AI์ ์ด ์ฝ๋๋ฅผ ์ค์ ๋ก ์ด๋ค ์์๋ก ๋ง๋ค์๋์ง, ๋ง๋ค๋ค ๊ฒช์ ๋ฒ๊ทธ์ ํจ๊ป ์ด๋ค.
