Room_DB_Impl_annotation_&_Main_Thread - boostcampwm-2024/and04-Nature-Album GitHub Wiki
๐ฅ lmpl does not exist
๋ฌธ์ ์ ์
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.and04.naturealbum/com.and04.naturealbum.MainActivity}: java.lang.RuntimeException: Cannot find implementation for com.and04.naturealbum.AppDatabase. AppDatabase_Impl does not exist
- ํ๋ก์ ํธ์์ Room ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ค ํ ๋,
AppDatabase_Impl does not exist
๋ผ๋ ๋ฐํ์ ์ค๋ฅ๊ฐ ๋ฐ์ - Room์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌํ์ฒด๋ฅผ ์์ฑํ์ง ๋ชปํ์์ ์๋ฏธ
๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ
- gradle Kapt ํน์ Ksp ์ค์ ํ์ธ
๋ฌธ์ ํด๊ฒฐ ์งํ
- Kapt ์ค์ ํ์ธ:
build.gradle.kts
ํ์ผ์kapt
ํ๋ฌ๊ทธ์ธ์ ์ถ๊ฐํ๊ณ , Room ์ปดํ์ผ๋ฌ์ ๋ํkapt
์์กด์ฑ์ ์ค์ - ๊ทธ๋ฌ๋ ๋น๋ ์
Unresolved reference: kapt
์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ์งํ์ ํ ์ ์์๋ค.
- Ksp๋ก ์ ํ:
kapt
๋์ksp
(Kotlin Symbol Processing)๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ build.gradle.kts
์์ ํ์ฌ Ksp ๊ด๋ จ ์ถ๊ฐ
- ๋น๋ ๋ฐ ์คํ
ksp
๋ก ์ ํํ ํ ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๊ณ ์คํํ ๊ฒฐ๊ณผ,AppDatabase_Impl
ํด๋์ค๊ฐ ์ ์์ ์ผ๋ก ์์ฑ๋์ด ์ค๋ฅ๊ฐ ํด๊ฒฐ๋จ
๊ฒฐ๊ณผ
ksp
๋กAppDatabase_Impl
ํด๋์ค๊ฐ ์ ์์ ์ผ๋ก ์์ฑ๋์ด ์ค๋ฅ๊ฐ ํด๊ฒฐ
์ถ๊ฐ ํ์ธ ์ฌํญ:
kapt
๋ฅผ ์ฌ์ฉํ๋ ค ํ์ ๋ ๋ฐ์ํUnresolved reference: kapt
์ค๋ฅ์ ์์ธ์ ์์ง ๋ช ํํ์ง ์์kapt
์ค์ ์ด ์ฌ๋ฐ๋ฅด๊ฒ ๋์์์๋ ๋ถ๊ตฌํ๊ณ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒ์ผ๋ก ๋ณด์, ํ๋ฌ๊ทธ์ธ ๋ฒ์ ํธํ์ฑ์ด๋ Gradle ์ค์ ์ ๋ฌธ์ ์ผ ์ ์๋ค๊ณ ๋ด- ํฅํ
kapt
๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ํฉ์ด ๋ฐ์ํ ๊ฒฝ์ฐ, ํด๋น ์ค๋ฅ์ ์์ธ์ ์ถ๊ฐ๋ก ์กฐ์ฌํ๊ณ ํด๊ฒฐ ๋ฐฉ์์ ๋ชจ์ํด์ผ ํ๋ ํ์ฌ ํ๋ก์ ํธ๋ksp
๋ก ์ ์ ์๋ ๋๋ฏ๋ก ์ด๋ก ์งํ.
๐ฅ Cannot access database on the main thread
๋ฌธ์ ์ ์
- Ksp๋ฅผ ํตํด impl ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ๋๋ ์๋์ ๊ฐ์ ๋ฉ์ธ์ง ๋ฐ์
- ์์ธ์ MainActivity์ onCreate()์์ Database์ ์ ๊ทผํ์ผ๋, Database ์ ๊ทผ์ main thread์์ ํ ์ ์๋ ๊ฒ
- โ์ฅ๊ธฐ๊ฐ UI๊ฐ ์ ๊ธธ ์ ์์ผ๋ฏ๋ก ๊ธฐ๋ณธ ์ค๋ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ก์ธ์คํ ์ ์์ต๋๋ค.โ
๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ
- Main Thread๊ฐ ์๋ IO Thread์์ Database์ ์ ๊ทผํ๋๋ก ๋ณ๊ฒฝ
๋ฌธ์ ํด๊ฒฐ ์งํ
*CoroutineScope*(Dispatchers.IO).*launch
*- Room DB ํ ์คํธ๋ฅผ ์ํด IO Thread์์ Database์ ์ ๊ทผํ๋๋ก ๋ณ๊ฒฝ
๊ฒฐ๊ณผ
- ์ง๊ธ์ ์์์ ์ผ๋ก
CoroutineScope
์์ ์ฒ๋ฆฌํ๋, ์ดํ์๋ Repository + Viewmodel์ ์ฌ์ฉํ์ฌ ViewmodelScope์์ ์งํํ ์์
๐ฅ room-complier kapt ์ถ๊ฐ ํ์ธ ์ฌํญ
- Hlit ๊ด๋ จ kapt๋ฅผ ์ถ๊ฐํ ๋ kapt๊ฐ ์ ๋๋ก ์ ์ ์๋๋จ์ ํ์ธํ๊ณ ๋ค์ room-complier ๊ด๋ จ ํ์ธ์ ์งํํ๋ค. ๊ทธ๋ฆฌ๊ณ room-complier ์์ฒด๊ฐ ksp๋ฅผ kapt ๋์ ์ฌ์ฉํ๋ผ๊ณ ์๋ด๊ฐ ๋๊ณ ์์์ ํ์ธํ๋ค.
- kapt ๊ด๋ จ ๋ฌธ์ ๊ฐ ์๋ room-complier์ ๊ถ์ฅ ๋ฌธ์ ์๊ธฐ ๋๋ฌธ์ด์๋ ๊ฒ์ด๋ค.