Jetpack Compose ์์ํ๊ธฐ: ์ด๋ณด์ ๊ฐ์ด๋
Jetpack Compose์ ๋ํ ์ด ํฌ๊ด์ ์ธ ์ด๋ณด์ ๊ฐ์ด๋๋ฅผ ํตํด ์ต์ Android UI ๊ฐ๋ฐ์ ์ธ๊ณ๋ฅผ ์์๋ณด์ธ์. ์ด ์ ์ธ์ ํ๋ ์์ํฌ๊ฐ ์ธํฐํ์ด์ค ๊ตฌ์ถ ๋ฐฉ์์ ์ด๋ป๊ฒ ํ์ ํ๋์ง ์์๋ณด์ธ์.

Android ์ฑ ๊ฐ๋ฐ ์ฌ์ ์ ์์ํ๋ ค๋ฉด ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ ์ ์ดํดํ๋ ๊ฒ๋ฟ๋ง ์๋๋ผ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์์ฑ์ ๊ฐ์ํํ๋ ๋๊ตฌ์ ํ๋ ์์ํฌ๋ฅผ ํ์ ํ๋ ๊ฒ๋ ํ์ํฉ๋๋ค. Jetpack Compose ๋ทฐ ์ฒ๋ฆฌ์ ๋ช ๋ นํ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์ต์ํ ๊ฐ๋ฐ์์๊ฒ ๋ ์ง๊ด์ ์ด๊ณ ํจ์จ์ ์ธ ํ๋ก์ธ์ค๋ฅผ ํฅํ ํจ๋ฌ๋ค์ ์ ํ์ ๋ถ๋ฌ์ผ์ผํค๋ ์ ์ ํ ๊ณต๊ธฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก Jetpack Compose ๊ธฐ๋ณธ Android UI๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ Google์ ์ต์ ๋๊ตฌ ํคํธ์ ๋๋ค. ์ด๋ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๊ณ , ์์ฉ๊ตฌ ์ฝ๋๋ฅผ ์ค์ด๊ณ , Android ๋ฒ์ ๊ณผ ๊ธฐ๊ธฐ ์ ๋ฐ์ ๊ฑธ์ณ ์ผ๊ด๋๊ฒ ์๋ํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ Jetpack ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ํ๊ตฐ์ ์ผ๋ถ์ ๋๋ค.
Compose๋ ๊ด๋ฒ์ํ XML ๊ตฌ์กฐ๋ฅผ ํตํด ๋ ์ด์์์ ๋น๋ํ๋ ๋์ UI ์์๋ฅผ ๋ด๋ณด๋ด๋ ํจ์์ธ ์ปดํฌ์ ๋ธ์ ํธ์ถํ์ฌ UI๋ฅผ ์ค๋ช ํ๋ ์ ์ธ์ UI ๊ฐ๋ฐ ์ ๊ทผ ๋ฐฉ์์ ๊ฐ์กฐํฉ๋๋ค. ์ปดํฌ์ ๋ธ์ ์ํ ๋ณ๊ฒฝ์ ๋ฐ์ํ๊ณ ๊ฐ๋ฐ์์ ์ต์ํ์ ์ ๋ ฅ์ผ๋ก UI๋ฅผ ์๋์ผ๋ก ์ ๋ฐ์ดํธํ๋ฏ๋ก UI โโ์ํ ๊ด๋ฆฌ์ ์์๋๋ ์๊ฐ์ ์ค์ด๊ณ ์ฌ์ฉ์ ํ๊ฒฝ์ ์ ์ํ๋ ๋ฐ ๋ ๋ง์ ์๊ฐ์ ํ ์ ํ ์ ์์ต๋๋ค.
Jetpack Compose ์ฌ์ฉ์ ๋ ๋ค๋ฅธ ์ฅ์ ์ 2017๋ ๋ถํฐ Android์์ ๊ถ์ฅํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ธ Kotlin ๊ณผ์ ๊ธด๋ฐํ ํตํฉ์ ๋๋ค. Kotlin์ ๊ฐ๊ฒฐํ ๊ตฌ๋ฌธ๊ณผ ๊ธฐ๋ฅ์ ๊ธฐ๋ฅ์ Compose์ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ํฅ์์์ผ ์ฐ์ํ๊ณ ์ฝ๊ธฐ ์ฌ์ด ๋ชจ๋์ ์ฝ๋๋ก ์ด์ด์ง๋๋ค. ์ด๋ Compose์ ๋ด์ฅ๋ ๋จธํฐ๋ฆฌ์ผ ๋์์ธ ๊ตฌ์ฑ์์ ๋ฐ ํ๋ถํ ์ ๋๋ฉ์ด์ ๊ณผ ๊ฒฐํฉ๋์ด ํ๋์ ์ด๊ณ ์๊ฐ์ ์ผ๋ก ๋งค๋ ฅ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๊ธฐ ์ํ ๋งค๋ ฅ์ ์ธ ๋๊ตฌ ํคํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๊ฐ๋ฐ์๋ Compose๋ฅผ ์ฌ์ฉํ๋ฉด Android ๋ทฐ ์์คํ ์ ๋ณต์ก์ฑ์ ์ดํดํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์๋ก์ด Android ๊ฐ๋ฐ์์ ํ์ต ๊ณก์ ์ ์ค์ด๋ ๋ฐฉ๋ฒ์ ์ฐพ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ํ ์ฝ๋์ UI ๊ตฌ์ฑ ์์๋ฅผ ์ง์ ํํํ๋ฉด ์์ธก์ด ๋์์ธ์ ์๋ํ๋ ์ฑ ์ธํฐํ์ด์ค๋ก ๋ ์ฝ๊ฒ ๋ณํํ ์ ์์ผ๋ฏ๋ก ๋์์ด๋์ ๊ฐ๋ฐ์ ๊ฐ์ ๋ณด๋ค ์ํํ ํ์ ์ด ๊ฐ๋ฅํด์ง๋๋ค.
์๋ง๋ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ Jetpack Compose ์ ๋ถ ์๋๋ฉด ์ ๋ฌดํ ์ ์์ด ์๋๋ผ๋ ์ ์ ๋๋ค. ๊ธฐ์กด Android ๋ทฐ ์์คํ ๊ณผ์ ์ํธ ์ด์ฉ์ฑ์ ํตํด ๊ฐ๋ฐ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ํ ๋ค์ ์์ฑํ ํ์ ์์ด ๊ธฐ์กด ํ๋ก์ ํธ์์ Compose๋ฅผ ์กฐ๊ธ์ฉ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฝ๋ ์๋ ๊ฒฝํ์ ๊ด์ฌ์ด ์๋ ์ฌ๋๋ค์ ์ํด AppMaster ์ ๊ฐ์ ํ๋ซํผ์ Jetpack Compose ์์คํ ์ ํตํฉํ์ฌ ๊ท์คํ ๊ฒฝ๋ก๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ํตํด ์ฌ์ฉ์๋ AppMaster ํ๋ซํผ์ drag-and-drop ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ฉ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋์์ธํ๊ณ ์ฝ๋๋ฅผ ์์ธํ ์ดํด๋ณด์ง ์๊ณ ๋ Compose์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ํ์ฉํ ์ ์์ต๋๋ค.
Compose๋ฅผ ํตํด Android UI ๊ฐ๋ฐ์ ๋์ฑ ๋น ๋ฅด๊ฒ ์งํ๋๊ณ , ๋ํํ์ด๋ฉฐ, ์ ์ง ๊ด๋ฆฌ๊ฐ ์ฌ์ด ์ํ๊ณ๋ก ๋์๊ฐ๊ณ ์์ต๋๋ค. ์ด๋ ์ ๊ท ์ฌ์ฉ์์ ๋ ธ๋ จํ Android ๋ฒ ํ ๋ ๋ชจ๋๊ฐ ์ดํดํ ์ ์๋ ๊ฐ๋ฐ ์ฒ ํ์ ๋๋ค.

์ด๋ฏธ์ง ์ถ์ฒ: ProAndroidDev
์ ์ธ์ UI ํ๋ก๊ทธ๋๋ฐ ์ดํด
Jetpack Compose ๋ก ์ฌ์ ์ ์์ํ๋ ค๋ฉด ์ ์ธ์ UI ํ๋ก๊ทธ๋๋ฐ์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ์ดํด๊ฐ ํ์ํฉ๋๋ค. ์ด ํจ๋ฌ๋ค์์ Compose์ ํต์ฌ์ด๋ฉฐ Android ๊ฐ๋ฐ์ ์ ํต์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ช ๋ นํ ์ ๊ทผ ๋ฐฉ์์์ ์ค์ํ ๋ณํ๋ฅผ ๋ํ๋ ๋๋ค. ํ์ง๋ง ์ด๊ฒ์ด ๊ฐ๋ฐ์๋ก์ ๋น์ ์๊ฒ ์ ํํ ๋ฌด์์ ์๋ฏธํฉ๋๊น?
์ ์ธ์ UI ํ๋ก๊ทธ๋๋ฐ์ UI ๊ตฌ์ฑ์ ๋จ๊ณ๋ณ ํ๋ก์ธ์ค๋ฅผ ์์ธํ ์ค๋ช ํ๋ ๋์ UI๊ฐ ์ด๋ค ๋ชจ์ต์ด์ด์ผ ํ๋์ง ์ค๋ช ํ๋ ์คํ์ผ์ ๋๋ค. ๋ค์ํ UI ์ํ๋ฅผ ์ ์ํ๋ฉด ์ํ ๋ณ๊ฒฝ์ด ๋ฐ์ํ ๋๋ง๋ค ํ๋ ์์ํฌ๊ฐ UI๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฝ๋๊ฐ ๋จ์ํ๋๊ณ ์์ธก ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋๋ค.
DOM(๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ) ์์๋ฅผ ์๋์ผ๋ก ์กฐ์ํ๊ณ UI ์ํ ๊ฐ์ ์ ํํ ์ ํ์ ์ง์ ํ๋ ๋ช ๋ นํ ํ๋ก๊ทธ๋๋ฐ๊ณผ ๋ฌ๋ฆฌ ์ ์ธ์ ํ๋ก๊ทธ๋๋ฐ์ ์ด๋ฌํ ๋ณต์ก์ฑ์ ์ถ์ํํฉ๋๋ค. ๊ทํ์ ์ญํ ์ ํน์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ์ดํฐ ์ํ์ ๋ํ UI์ ์ต์ข ์ํ๋ฅผ ์ค๋ช ํ๋ ๊ฒ์ผ๋ก ์ ํ๋ฉ๋๋ค.
Jetpack Compose ์ ๊ฐ์ ์ ์ธ์ UI ํ๋ ์์ํฌ๋ ์ํ ๋ณ๊ฒฝ์ ์์ ํ๊ณ ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก UI๋ฅผ ์๋์ผ๋ก ๋ค์ ๋ ๋๋งํฉ๋๋ค. ์ด ๋ฐ์ํ ๋ชจ๋ธ์ ๋ ์ด์ ๋ณด๊ธฐ ์์ ฏ๊ณผ ๋ณด๊ธฐ ๊ณ์ธต ๊ตฌ์กฐ์ ๋ณต์ก์ฑ์ ์ ๊ฒฝ ์ฐ์ง ์์๋ ๋๋ฏ๋ก ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ๋ ๋ณด๋ค ์ง๊ด์ ์ด๊ณ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ์ด์งํฉ๋๋ค.
๋์ฑ์ด ์ ์ธ์ UI๋ ๋ณธ์ง์ ์ผ๋ก ๊ฐ๋จํ ํน์ฑ์ผ๋ก ์ธํด ์ ์ง ๊ด๋ฆฌ๊ฐ ๋ ์ฝ๊ณ ๋๋ฒ๊น ๋ ๋ ์ฝ์ต๋๋ค. ์ฝ๋๋ ๋ชจ๋ ์ํ์์ ์ธํฐํ์ด์ค๊ฐ ์ด๋ค ๋ชจ์ต์ด์ด์ผ ํ๋์ง๋ฅผ ๋ํ๋ด๋ฏ๋ก ๊ฐ๋ฐ์์ ์ ์ ์ ๋ถ๋ด์ ์ค์ฌ์ค๋๋ค. ์ํ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ํ๋ ์์ํฌ๋ UI๋ฅผ ํจ์จ์ ์ผ๋ก ๋ค์ ๊ณ์ฐํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์์ฑ๊ณผ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
์ ์ธ์ UI๋ฅผ ์ดํดํ๋ฉด ๊ฐ๋ฐ์๋ ์ต์ ์ํํธ์จ์ด ๋ํฅ์ ์์ฉํ๊ณ ์์ฐ์ฑ์ ์ต์ ํํ๋ฉฐ ์ ๊ตํ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ง๋ค ์ ์์ต๋๋ค. ์ด ๊ฐ๋ ์ ์ตํ๋ฉด Jetpack Compose ์ ์ ์ฌ๋ ฅ์ ์ต๋ํ ํ์ฉํ๊ณ ๋ฏธํ์ ์ผ๋ก ๋ง์กฑ์ค๋ฝ๊ณ ๊ธฐ๋ฅ์ ์ผ๋ก ํ๋ถํ Android ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
๋ํ ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉ์๊ฐ ์ฝ๋๋ฅผ ๊น์ด ํ๊ณ ๋ค์ง ์๊ณ ๋ ์๊ฐ์ ์ผ๋ก ๋งค๋ ฅ์ ์ธ ์ฑ์ ๋์์ธํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ AppMaster ์ ๊ฐ์ no-code ํ๋ซํผ์ ์ฒ ํ๊ณผ ์๋ฒฝํ๊ฒ ์ผ์นํฉ๋๋ค. ์ ์ธ์ UI๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ธ๋ จํ ๊ฐ๋ฐ์์ ์ฝ๋ฉ์ ์ฒ์ ์ ํ๋ ๊ฐ๋ฐ์ ๋ชจ๋ ๋์์์ด ์งํํ๋ ์ฑ ๊ฐ๋ฐ ์ธ๊ณ์์ ์ฑ๊ณตํ ์ ์์ต๋๋ค.
๊ฐ๋ฐ ํ๊ฒฝ ์ค์
Jetpack Compose ์ฌ์ฉํ์ฌ ์ฌ์ ์ ์์ํ๋ ค๋ฉด Android ๊ฐ๋ฐ ํ๊ฒฝ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ผ๋ฐ์ ์ผ๋ก Android Studio ์ค์น, Compose๋ฅผ ์ฌ์ฉํ๋๋ก ํ๋ก์ ํธ ๊ตฌ์ฑ, ๊ธฐ๋ณธ ๋น๋ ๊ตฌ์ฑ ์์ง ๋ฑ ์ผ๋ จ์ ๋จ๊ณ๊ฐ ํฌํจ๋ฉ๋๋ค.
Android Studio ์ค์น
๋จผ์ , ์๋๋ก์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ํ ๊ณต์ ํตํฉ ๊ฐ๋ฐ ํ๊ฒฝ(IDE)์ธ Android Studio (Android Studio)๋ฅผ ๋ค์ด๋ก๋ํ์ฌ ์ค์นํ์ธ์. Jetpack Compose ์ง์ํ๋ ๋ฒ์ ์ ์ ํํ์ธ์. ์ผ๋ฐ์ ์ผ๋ก ์ต์ ์์ ๋ฒ์ ์ด ๊ถ์ฅ๋ฉ๋๋ค.
์ ํ๋ก์ ํธ ๋ง๋ค๊ธฐ
Android Studio ์คํ๋๋ฉด ์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ญ๋๋ค. Compose ํ๋ก์ ํธ์ ํ์ํ ์ค์ ์ด ํฌํจ๋ 'Empty Compose Activity' ํ ํ๋ฆฟ์ ์ ํํฉ๋๋ค. ํ๋ก์ ํธ ์ด๋ฆ์ ์ ๊ณตํ๊ณ ํ์์ ๋ฐ๋ผ ์ ์ฅ ์์น, ์ธ์ด(Kotlin), ์ต์ SDK์ ๊ฐ์ ๊ธฐํ ์ค์ ์ ๊ตฌ์ฑํฉ๋๋ค.
build.gradle ํ์ผ ๊ตฌ์ฑ
Jetpack Compose ์ฌ์ฉํ๋ ค๋ฉด ํ๋ก์ ํธ์ build.gradle (Module: app) ํ์ผ์ ํน์ ์ข
์ ํญ๋ชฉ์ ํฌํจํด์ผ ํฉ๋๋ค. ํด๋น Compose ์ปดํ์ผ๋ฌ ๋ฐ UI ์์ ฏ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
dependencies { implementation "androidx.compose.ui:ui:1.xx" // Add more Compose dependencies as needed for UI, Material design etc. kapt "androidx.compose.compiler:compiler:1.xx"}
"1.xx"๋ฅผ Compose ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ํฉํ ๋ฒ์ ๋ฒํธ๋ก ๋ฐ๊พธ๋ ๊ฒ์ ์์ง ๋ง์ธ์. ๋ํ Compose ๋ฒ์ ๊ณผ ํธํ๋๋ ์ฌ๋ฐ๋ฅธ Kotlin ๋ฒ์ ์ด ์ค์น๋์ด ์๋์ง ํ์ธํ์ธ์. ์ด๋ ํ๋ก์ ํธ์ build.gradle (Project: YourAppName) ํ์ผ์์ ํ์ธํ ์ ์์ต๋๋ค.
Kotlin ์ปดํ์ผ๋ฌ ์ต์ ๊ตฌ์ฑ
Jetpack Compose build.gradle (Module: app) ํ์ผ์์ ํ์ฑํํด์ผ ํ๋ Kotlin ์ปดํ์ผ๋ฌ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํฉ๋๋ค.
android { ... kotlinOptions { jvmTarget = "1.8" useIR = true // Enable the new Kotlin IR compiler } ...}
๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ฃผ์ ํ์ฑํ
Jetpack ComposeAndroid Studio ์ ๋์์ธ ๋ทฐ์์ ์ปดํฌ์ ๋ธ์ ๋ณผ ์ ์๋ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ธฐ๋ฅ์ด ํจ๊ป ์ ๊ณต๋ฉ๋๋ค. ์ด๋ฅผ ํ์ฑํํ๋ ค๋ฉด Preferences/Settings -> Experimental๋ก ์ด๋ํ๊ณ 'Enable Compose Preview Annotations'๋ฅผ ์ ํํ์ฌ Android Studio ์์ ์คํ์ ๊ธฐ๋ฅ์ ํ์ฑํํ์ธ์. ์ด๋ UI ๊ตฌ์ฑ์์์ ์ค์๊ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ ๊ฒฝํ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
ํ๋ก์ ํธ ์คํ
Android Studio ์ค์นํ๊ณ , Compose ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ ์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ณ , ํ์ํ ์ข ์ ํญ๋ชฉ์ ์ถ๊ฐํ๊ณ , Kotlin ์ปดํ์ผ๋ฌ๋ฅผ ๊ตฌ์ฑํ๊ณ ๋๋ฉด ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๊ณ ์คํํ ์ค๋น๊ฐ ๋ ๊ฒ์ ๋๋ค. Android Studio ์์ '์คํ' ๋ฒํผ์ ๋๋ฅด๊ณ ์ฌ์ฉ ๊ฐ๋ฅํ ์๋ฎฌ๋ ์ดํฐ๋ ์ค์ ๊ธฐ๊ธฐ๋ฅผ ์ ํํ๋ฉด Jetpack Compose ์ฑ์ด ์์๋๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์ถํํฉ๋๋ค. Jetpack Compose ์ฉ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ฑ๊ณต์ ์ผ๋ก ์ค์ ํ์ต๋๋ค!
Android ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ์ ๋ง์ ์ฝ๋ฉ, ํ ์คํธ ๋ฐ ๊ฒํ ์ฃผ๊ธฐ๊ฐ ํฌํจ๋ ๋ฐ๋ณต์ ์ธ ํ๋ก์ธ์ค๋ผ๋ ์ ์ ๊ธฐ์ตํ์ธ์. ํจ์จ์ฑ๊ณผ ์์ฐ์ฑ์ ์ ์งํ๋ ค๋ฉด ์ ๊ตฌ์ฑ๋ ๊ฐ๋ฐ ํ๊ฒฝ์ด ์ค์ํฉ๋๋ค.
๋ํ, ์ฝ๋์ ๋ํด ์์ธํ ์์๋ณด์ง ์๊ณ ์ฑ ๊ฐ๋ฐ์ ํ์ํ๋ ค๋ ๊ฒฝ์ฐ Jetpack Compose ์ง์ํ๋ no-code ํ๋ซํผ์ธ AppMaster ์ดํด๋ณด์ธ์. ์ด๋ฅผ ํตํด ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ฉ UI๋ฅผ ์๊ฐ์ ์ผ๋ก ๋์์ธํ๊ณ Kotlin ์ฝ๋๋ฅผ ์๋์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค.
Compose์์ ์ํ ๊ด๋ฆฌ
Android ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ํ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ ์ข ์ข ๋ฒ๊ทธ์ ๋ณต์ก์ฑ์ ์์ธ์ด ๋์ด ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ์ด๋ ต๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. Jetpack Compose ๊ฐ๋ฐ์์ ์์ ์ ๋จ์ํํ๋ ์ํ ๊ด๋ฆฌ์ ๋ํ ๋ฐ์ํ ์ ๊ทผ ๋ฐฉ์์ ๋์ ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Jetpack Compose ์ ์ํ๋ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ณ๊ฒฝ๋์ด UI์ ์ํฅ์ ์ค ์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ ๋๋ค. ์ํ๊ฐ ๋ณ๊ฒฝ๋๋ฉด UI๋ ์ด ์๋ก์ด ํ์ค์ ๋ฐ์ํ๋๋ก ์๋์ผ๋ก ์ ๋ฐ์ดํธ๋์ด ๋ณด๋ค ๊ธฐ๋ฅ์ ์ด๊ณ ์ค๋ฅ๊ฐ ๋ ๋ฐ์ํ๋ ๋ฐฉ๋ฒ๋ก ์ ์์ฉํฉ๋๋ค.
Jetpack Compose ์์ ์ํ๋ฅผ ์ฒ๋ฆฌํ๋ ค๋ฉด Compose ๋ฐํ์์ ํตํฉ๋ ๋ค์ํ ์ํ ํ๋์ ํจํด์ ์ฌ์ฉํฉ๋๋ค. ๋ช ๊ฐ์ง ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
- ๊ธฐ์ตํ์ธ์: Compose์ ์ค์ถ์ ์ธ ๊ธฐ๋ฅ์ ๋ฆฌ์ปดํฌ์ง์
์ ์ฒด์์ ๊ฐ์ ๊ธฐ์ตํ๋
remember์ ๋๋ค. ์ฌ์ฉ์ ์ ๋ ฅ์ด๋ ์คํฌ๋กค ๋ชฉ๋ก์ ์์น์ ๊ฐ์ ์ํ๋ฅผ ๋ณด์กดํ๋ ๋ฐ ์ฌ์ฉํฉ๋๋ค. - MutableState:
mutableStateOfํจ์๋ Compose ๋ฐํ์์ด ๋ฐ์ํ๋ ๊ด์ฐฐ ๊ฐ๋ฅํMutableState์ธ์คํด์ค๋ฅผ ๋ฐํํ์ฌ ๊ฐ์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ฌ๊ตฌ์ฑ์ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค. - ์ํ ํธ์ด์คํ : ์ปดํฌ์ ๋ธ์ ์์ํ๊ฒ ์ ์งํ๊ธฐ ์ํด ์ํ ํธ์ด์คํ ์ด ์ฌ์ฉ๋ฉ๋๋ค. ์ด ํจํด์๋ ์ํ ๊ด๋ฆฌ๋ฅผ ์์ ์ปดํฌ์ ๋ธ๋ก ์ด๋ํ๊ณ ์ํ ๋ฐ ์ด๋ฒคํธ ์ฝ๋ฐฑ์ ํ์ ์ปดํฌ์ ๋ธ์ ์ ๋ฌํ๋ ์์ ์ด ํฌํจ๋ฉ๋๋ค.
- ViewModel: ๋ณด๋ค ๋ณต์กํ ์๋๋ฆฌ์ค์์๋
ViewModel์ฌ์ฉํ์ฌ ์ํ๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค. ๊ตฌ์ฑ ๋ณ๊ฒฝ ํ์๋ ์ ์ง๋๋ฉฐ ์ปดํฌ์ ๋ธ ๊ฐ์ ๊ณต์ ๋ ์ ์์ด ๊น๋ํ ์ํคํ ์ฒ๋ฅผ ์ด์งํฉ๋๋ค.
์ด๋ฌํ ๊ธฐ์ ์ ํ์ฉํ๋ฉด Compose๋ ๋ ์ ์ ์ฝ๋๋ก UI ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๋์์ ๋ถ์์ฉ ์ฒ๋ฆฌ๋ฅผ ์ด์งํ ์ ์์ต๋๋ค. ์ด๋ ์ํ ๋ณ๊ฒฝ์ ๋ํ ์๋ต์ผ๋ก ๋คํธ์ํฌ ์์ฒญ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ๋์ญ์ ๊ณผ ๊ฐ์ ์์ ์ ์ํํ๋ ๋ฐ ์ค์ํฉ๋๋ค. Jetpack Compose UI๋ฅผ ์ฑ ์ํ๋ฅผ ์ง์ ์ ์ผ๋ก ๋ฐ์ํ์ฌ ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๊ด๋ฆฌ์ฑ์ ํฅ์์ํค๋ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ผ๋ก ์๊ฐํ๋๋ก ๊ถ์ฅํฉ๋๋ค.
์ํ ๊ด๋ฆฌ์ ์
๋ชฉ๋ก์ ํญ๋ชฉ์ ์ถ๊ฐํ๋ ๋ฒํผ์ด ์๋ ํ๋ฉด์ด ์๋ค๊ณ ์์ํด ๋ณด์ธ์. ๋ค์์ ๊ตฌ์ฑ ๊ฐ๋ฅํ ํจ์์์ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ฐ๋จํ ์์ ๋๋ค.
val itemList = remember { mutableStateListOf<String>() } Button(onClick = { itemList.add("New Item") }) { Text("Add Item") } LazyColumn { items(itemList) { item -> Text(item) } }
์ฐ๋ฆฌ๋ mutableStateListOf ์ ํจ๊ป remember ์ฌ์ฉํ์ฌ ๋์ ๋ฌธ์์ด ๋ชฉ๋ก์ ์ถ์ ํ๊ณ ์ด ๋ชฉ๋ก์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ(์: ์ ํญ๋ชฉ ์ถ๊ฐ)์ ์ด ์ํ๊ฐ ์ฐธ์กฐ๋๋ UI๋ฅผ ์๋์ผ๋ก ์๋ก ๊ณ ์นฉ๋๋ค. ์ด ํจ๋ฌ๋ค์์ UI ์ํ ๋ถ์ผ์น์ ์ํ์ ์ค์ด๊ณ ๊ฐ๋ฐ์๊ฐ UI ๋์์ธ์ ์ฐฝ์์ ์ธ ์ธก๋ฉด์ ๋ ์ง์คํ ์ ์๋๋ก ํด์ค๋๋ค.
AppMasterno-code ํ๋ซํผ ์์ญ์์ ์ํ ๊ด๋ฆฌ๋ฅผ ๋์ฑ ์ฝ๊ฒ ํด์ค๋๋ค. ์๊ฐ์ ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์ ์ฌ์ฉํ๋ฉด ์ํ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฝ๋๋ฅผ ์์ฑํ ํ์์กฐ์ฐจ ์์ต๋๋ค. ํ๋ซํผ์ ์ ๊ตํ ๋๊ตฌ๋ ์ํ ๊ด๋ฆฌ๋ฅผ ์ํด Jetpack Compose ์ ์ ์ฌํ ์์น์ ์ฌ์ฉํ๋ฏ๋ก ์ํ ๋๊ธฐํ๋ฅผ ์๋์ผ๋ก ์ฒ๋ฆฌํ๋ ๋์์ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ ์ ์์ต๋๋ค.
Jetpack Compose ์ ์ํํ ์ํ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ฑ๋ฅ์ ํฅ์ํ๊ณ ๊ฐ๋ฐ์๊ฐ ๊ฒฝํ ์์ค์ ๊ด๊ณ์์ด ํ๋ถํ๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ๋ํํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์๋๋ก ์ง์ํฉ๋๋ค.
๊ตฌ์ฑ ๊ฐ๋ฅํ ํจ์: ์ฌ์ฌ์ฉ์ฑ ๋ฐ ๊ตฌ์ฑ
Jetpack Compose ์์ธํ ์ดํด๋ณด๋ฉด ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ธ ๊ตฌ์ฑ ๊ฐ๋ฅํ ํจ์๋ฅผ ๋น ๋ฅด๊ฒ ์ ํ๊ฒ ๋ฉ๋๋ค. ์ด๋ Compose์์ UI์ ๊ตฌ์ฑ ์์์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ค์ ์ฐจ๋ณํํ๋ ์ ์ ์ฌ์ฌ์ฉ ๋ฐ ์ค์ฒฉ์ด ๊ฐ๋ฅํ์ฌ Android UI ์์ฑ์ ๋ํ ๋ชจ๋์์ ํจ์จ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ๊ฐ๋ฅํ๊ฒ ํ๋ค๋ ๊ฒ์ ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๊ตฌ์ฑ ๊ฐ๋ฅํ ํจ์๋ ๊ฐ๋จํ ์์น์ ๋ฐ๋ผ ์๋ํฉ๋๋ค. ์ฆ, ํ ์ํ์์ ๋ค๋ฅธ ์ํ๋ก ์ ํํ๋ ๋ฐฉ๋ฒ์ด ์๋๋ผ ํน์ ์ํ์ ๋ํ UI์ ๋ชจ์์ ์ค๋ช ํฉ๋๋ค. ์ด ์ ์ธ์ ์คํ์ผ์ ๊ธฐ์กด Android ๊ฐ๋ฐ์ ์ฌ์ฉ๋๋ ๋ช ๋ นํ UI ๊ตฌ์ฑ ๋ฐฉ๋ฒ๋ณด๋ค ๋ ์ง๊ด์ ์ด๊ณ ์ง์ ์ ์ ๋๋ค.
๊ทธ๋ฌ๋ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์๋ ฅ์ ๊ธฐ๋ฅ์ ๊ตฌ์ฑํ๊ธฐ ์์ํ๊ณ ๋ ์๊ณ ๊ด๋ฆฌ ๊ฐ๋ฅํ๋ฉฐ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋ถ๋ถ์ผ๋ก ๋ณต์กํ UI๋ฅผ ์กฐ๋ฆฝํ ๋ ๋น๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ ํ๋ก์ธ์ค๊ฐ ์ ๋ฆฌ๋๊ณ ์ฑ ๋์์ธ์ ์ผ๊ด์ฑ๊ณผ ํ์ฅ์ฑ์ด ํฅ์๋ฉ๋๋ค.
Jetpack Compose ์ฌ์ฉํ์ฌ ์ฌ์ฌ์ฉ์ฑ๊ณผ ๊ตฌ์ฑ์ ๊ทน๋ํํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์๊ณ ์ง์ค์ ์ผ๋ก ์ ์ง : ํ ๊ฐ์ง ์์ ์ ์ ์ํํ๋ ์ปดํฌ์ ๋ธ์ ๋น๋ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ดํด, ์ ์ง ๊ด๋ฆฌ ๋ฐ ์ฌ์ฌ์ฉ์ด ๋ ์ฌ์์ง๋๋ค.
- ๋งค๊ฐ๋ณ์ํ : ๋งค๊ฐ๋ณ์๋ฅผ ํ์ฉํ๋ฉด ์ปดํฌ์ ๋ธ์ ๋ค์ํ ์ปจํ ์คํธ์ ์๊ตฌ์ฌํญ์ ๋ง๊ฒ ์กฐ์ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ค์์ฑ์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ํน์ฑ์ ๋ท๋ฐ์นจํฉ๋๋ค.
- ํ ๋ง ์ง์ ๋ฐ ์คํ์ผ๋ง : Jetpack Compose ํ ๋ง ์ง์ ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค. ์ด๋ฅผ ํ์ฉํ๋ฉด ์ปดํฌ์ ๋ธ์ ์คํ์ผ์ด ์ฑ ์ ์ฒด์์ ์ผ๊ด๋๊ฒ ์ง์ ๋๋๋ก ํ ์ ์์ต๋๋ค.
- ์ค์ฒฉ ์ปดํฌ์ ๋ธ : Compose๋ ์ค๊ณ์ ๋ฐ๋ผ ์ค์ฒฉ์ ๊ถ์ฅํฉ๋๋ค. ๋น๋ฉ ๋ธ๋ก ์๊ธฐ์ ๊ฐ์ ๊ฐ๋จํ ์ปดํฌ์ ๋ธ์ ๊ฒฐํฉํ์ฌ ๋ณต์กํ UI๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
- ์์ ์ : ์ปดํฌ์ ๋ธ์ ๋ชจ์์ด๋ ๋์์ ์์ ํ๋ ์ฐ์ฐ์์ ๋๋ค. ์ด๋ Compose API์ ๋ด์ฅ๋์ด ์์ผ๋ฏ๋ก ๊ตฌ์ฑ ๊ฐ๋ฅํ ๊ธฐ๋ฅ์ ์ ๊ฒํ์ง ์๊ณ ๋ UI๋ฅผ ๊ฐ๋จํ๊ฒ ๋ง์ถค์ค์ ํ ์ ์์ต๋๋ค.
๋ํ AppMaster ์ ๊ฐ์ ํ๋ซํผ์ ์ฌ์ฉํ๋ฉด Jetpack Compose ๊ธฐ์กด ์ฑ์ด๋ ์ ํ๋ก์ ํธ์ ์ํํ๊ฒ ํตํฉํ ์ ์์ต๋๋ค. no-code ํ๋ซํผ์ Kotlin ์ฝ๋๋ฅผ ํ ์ค๋ ์์ฑํ์ง ์๊ณ ๋ Jetpack Compose ์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์์ฑ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค. Compose์ no-code ํ๋ซํผ์ ๊ฒฐํฉ์ ์ ๋ฌธ๊ฐ์ ์ด๋ณด์ ๋ชจ๋๊ฐ ์ ํต์ ์ผ๋ก ํ์ํ ๋ ธ๋ ฅ์ ์ผ๋ถ๋ง์ผ๋ก ์ฐ์ํ๊ณ ๊ธฐ๋ฅ์ ์ธ Android ์ฑ์ ๋น๋ํ ์ ์๋ ๊ธฐํ๋ฅผ ์ด์ด์ค๋๋ค.
๊ฐ๋ ฅํ ์บก์ํ์ ๊ฐ๋จํ ๊ตฌ์ฑ์์๋ฅผ ์ฌ์ฌ์ฉํ์ฌ ๋ณต์กํ UI๋ฅผ ์์ฑํ๋ ๊ธฐ๋ฅ ๋๋ถ์ Jetpack Compose Android UI ๊ฐ๋ฐ์ ์ต์ ์ ์ ์๊ฒ ๋์์ต๋๋ค. ์ด๋ฌํ ๊ธฐ๋ฅ์ ํ์ฉํ๋ฉด ๊ฒฝ์์ด ์น์ดํ ์ฑ ์์ฅ์์ ๋์ ๋๋ ์ต์ ๋ฐ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
Jetpack Compose ๊ธฐ์กด ์ฑ๊ณผ ํตํฉ
Jetpack Compose ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๊ตฌ์ถ์ ๋ํ ์ ์ธ์ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํ์ฌ Android ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ํจ๋ฌ๋ค์ ์ ํ์ ๋ํ๋ ๋๋ค. ํ์ง๋ง Jetpack Compose ์ฌ์ฉํ๊ธฐ ์ํด ๊ธฐ์กด ์ฑ์ ์์ ํ ๋ค์ ์์ฑํ๋ ๊ฒ์ด ํญ์ ๊ฐ๋ฅํ๊ฑฐ๋ ํ์ํ ๊ฒ์ ์๋๋๋ค. ๋คํํ Jetpack Compose ๊ธฐ์กด Android ๋ณด๊ธฐ์ ๊ณต์กดํ๋๋ก ์ค๊ณ๋์ด ํ์ฌ ํ๋ก์ ํธ์ ํ๋์ฉ ํตํฉํ ์ ์์ต๋๋ค.
Jetpack Compose ๊ธฐ์กด Android ์ฑ์ ํตํฉํ๋ ค๋ฉด ๋จ๊ณ๋ณ ์ ๊ทผ ๋ฐฉ์์ ๋ฐ๋ฅด์ธ์. ๋จผ์ Android Studio ์ต์ ๋ฒ์ ์ผ๋ก ์
๋ฐ์ดํธํ๊ณ ํ์ํ ์ข
์ ํญ๋ชฉ๊ณผ Kotlin ์ง์์ผ๋ก ์ฑ์ build.gradle ํ์ผ์ ๊ตฌ์ฑํ์ฌ ํ๋ก์ ํธ๊ฐ Compose๋ฅผ ์ฌ์ฉํ ์ค๋น๊ฐ ๋์๋์ง ํ์ธํ์ธ์.
๋ค์์ผ๋ก ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์
์ด ์๋ ๊ฐ๋ณ ํ๋ฉด์ด๋ ๊ตฌ์ฑ ์์๋ฅผ ๋ณํํ๋ ๊ฒ๋ถํฐ ์์ํ ์ ์์ต๋๋ค. Android์ ComposeView XML ๋ ์ด์์์์ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ ๊ฐ๋ฅํ ํจ์๋ฅผ ์บก์ํํ ์ ์์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ์๋ก์ด ๊ธฐ๋ฅ์ ์ํด Compose๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๊ธฐ์กด ๊ตฌ์ฑ์์๋ฅผ ์ ์ง์ ์ผ๋ก ๊ต์ฒดํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ๊ธฐ์กด RecyclerView๋ฅผ ์ปดํฌ์ ๋ธ ๋ชฉ๋ก์ผ๋ก ๋ฐ๊พธ๋ ค๋ฉด ComposeView ๋ด์ ์ปดํฌ์ ๋ธ ์์ ฏ์ ์ฝ์
ํ์ฌ ๊ธฐ์กด XML ๋ ์ด์์ ๋ด์์ ์ด๋ฅผ ์ํํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์, Observable์ Compose๊ฐ ๋ฐ์ํ ์ ์๋ ์ํ๋ก ๋ณํํ๊ธฐ ์ํด observeAsState() ์ฌ์ฉํ์ฌ LiveData ๋ฐ ViewModel์ด Composable ํจ์์ ์ํํ๊ฒ ์๋ํ๋์ง ํ์ธํฉ๋๋ค.
์ฑ ์ ์ฒด์์ ์ผ๊ด๋ ๋์์ธ๊ณผ ๋๋์ ์ ์งํ๋ ค๋ฉด ์คํ์ผ ๋ฐ ํ ๋ง ์ธก๋ฉด์์ ์ปดํฌ์ ๋ธ๊ณผ ๊ธฐ์กด ๋ทฐ๋ฅผ ํผํฉํ๋๋ก ๊ณํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ฑ์ ๋ค๋ฅธ ๊ณณ์์ ์ฌ์ฉ๋๋ ๊ธฐ์กด ๋จธํฐ๋ฆฌ์ผ ๋์์ธ ๊ตฌ์ฑ์์์ ํจ๊ป ์๋ํ๋ Compose์ MaterialTheme๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก ํ์ ๋ฐ ์ ๋๋ฉ์ด์ ๊ณผ ๊ฐ์ Compose์ ์ผ๋ถ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ฉด ๊ธฐ์กด ์ฝ๋์ ๋์ฑ ์ง์ค์ ์ผ๋ก ํตํฉํด์ผ ํ๋ค๋ ์ ์ ๋ช ์ฌํ์ธ์. Jetpack Compose Navigation์ ์ฌ์ฉํ๋ฉด ๋จ์ผ ํ๋ ์ฑ์์ ๋ ์ํํ๊ฒ ์ ํํ๊ณ ๋ ์ง๊ด์ ์ผ๋ก ๊ตฌํํ ์ ์์ง๋ง ๊ธฐ์กด ํ์ ๊ตฌ์ฑ์์๋ฅผ ์ ์คํ๊ฒ ์กฐ์ ํด์ผ ํฉ๋๋ค.
Jetpack Compose ์ฑํํ๋ฉด ๊ฐ๋ฐ ์ค ์ค๋จ์ด ์ ์ง์ ์ผ๋ก ์ต์ํ๋๊ณ ์ ์ด๋๊ณ ์น์ํ ์ปจํ ์คํธ์์ Compose ๊ฐ๋ ์ ์ ์ฉํ๋ ํ์ต ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ ๋ง์ ๊ตฌ์ฑ์์์ ํ๋ฉด์ ๋ณํํ๋ฉด Jetpack Compose ์ ๋ชจ๋ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ UI ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๋จ์ํํ๊ณ ๊ฐ์ํํ ์ ์์ต๋๋ค.
๋ํ AppMaster ์ ๊ฐ์ no-code ํ๋ซํผ์ ๋งฅ๋ฝ์์ Jetpack Compose ์ ํตํฉ์ ๋๋ถ๋ถ ์ถ์ํ๋ฉ๋๋ค. ์ด๋ฌํ ํ๋ซํผ์ ์ฌ์ฉ์๋ ์๋ ํตํฉ์ ๋ณต์ก์ฑ์ ๊ด๋ฆฌํ ํ์ ์์ด ์ต์ UI ๋์์ธ ์ ์ด์ ์ ๋๋ฆด ์ ์์ต๋๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ Compose๊ฐ ๋ด๋ถ์ ์ผ๋ก ์ด๋ป๊ฒ ์๋ํ๋์ง ์ดํดํ๋ฉด Compose๋ฅผ ์ง์ํ๋ ํ๋ซํผ์ผ๋ก ์์ ํ๋ ๊ฒฝํ์ด ํฅ์๋์ด ์ฝ๋๊ฐ ์๊ฑฐ๋ low-code ๊ฐ๋ฐ ํ๊ฒฝ์ผ๋ก ๋ ์ํํ๊ฒ ์ ํํ ์ ์์ต๋๋ค.
Jetpack Compose ์ฌ์ฉํ์ฌ Android ์ฑ์ ํ๋ํํ๋ ๊ธธ์ ๋ณด๋ ์๊ณ ๋ ์ ์ฐํ๊ณ ๋ฐ์์ ์ด๋ฉฐ ์ ์ง ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ ์ฝ๋๋ฒ ์ด์ค๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ์ฝ๋๋ก ์ง์ ์์ ํ๋ no-code ํ๋ซํผ์ ํ์ฉํ๋ Jetpack Compose ์ ๊ธฐ์กด Android ๊ฐ๋ฐ ๋ฐฉ์์ ์ํธ ์ด์ฉ์ฑ์ Android UI ๋์์ธ์ ๋ฏธ๋๋ก ๋์ฑ ์ํํ๊ฒ ์ ํํ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
๊ตฌ์ฑ ๊ฐ๋ฅํ ํจ์ ํ ์คํธ
ํ ์คํธ ์์ฑ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ขฐ์ฑ๊ณผ ์์ ์ฑ์ ๋ณด์ฅํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ์ ์ค์ํ ๋ถ๋ถ์ ๋๋ค. Jetpack Compose ์ฌ์ฉํ ์ต์ UI ๊ฐ๋ฐ๊ณผ ๊ด๋ จํ์ฌ ํ ์คํธ ํจ๋ฌ๋ค์์ ํ๋ ์์ํฌ์ ์ ์ธ์ ํน์ฑ์ ์์ฉํ๋๋ก ๋ฐ์ ํ์ต๋๋ค.
Jetpack Compose ์ฌ์ฉํ ํ
์คํธ๋ ์ฃผ๋ก ComposeTestRule ์ค์ฌ์ผ๋ก ์งํ๋ฉ๋๋ค. ์ด ํ
์คํธ ์ ํธ๋ฆฌํฐ๋ ๊ตฌ์ฑ ๊ฐ๋ฅํ ํจ์์ ์ํธ์์ฉํ๋๋ก ํน๋ณํ ์ค๊ณ๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ตฌ์ฑ ๊ฐ๋ฅํ ๊ธฐ๋ฅ์ ํ
์คํธํ๋ ค๋ฉด UI ํ
์คํธ๋ฅผ ์ํ ๊ฐ๋ ฅํ๊ณ ์ํํ API๋ฅผ ์ ๊ณตํ๋ androidx.ui.test ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ๊ป Junit 4 ๋๋ Junit 5 ์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
ํ ์คํธ ํ๊ฒฝ ์ค์
๊ตฌ์ฑ ๊ฐ๋ฅํ ํจ์์ ๋ํ ํ
์คํธ ์์ฑ์ ์์ํ๋ ค๋ฉด ๋จผ์ ํ
์คํธ ํ๊ฒฝ์ ์ค์ ํด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ Gradle ํ์ผ์ ๊ด๋ จ ์ข
์์ฑ์ ์ถ๊ฐํ๊ณ ํ
์คํธ ์คํ๊ธฐ๋ฅผ ๊ตฌ์ฑํ๋ ์์
์ด ํฌํจ๋ฉ๋๋ค. Jetpack Compose ์ ์ ์ฉ ํ
์คํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ด ํ๋ก์ธ์ค๊ฐ ๊ฐ๋จํด์ง๋๋ค. ํ
์คํธ ๊ตฌ์ฑ์ androidx.compose.ui:ui-test-junit4 ๋ฐ ๊ด๋ จ ์ข
์์ฑ์ ํฌํจํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
Compose ํ ์คํธ ์์ฑ
Jetpack Compose ์ฌ์ฉํ๋ฉด ๊ฐ ํ ์คํธ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ ์ฌํ ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฆ ๋๋ค.
- ํ์ํ ํ ์คํธ ๋ฐ์ดํฐ์ ์ํ๋ฅผ ์ค์ ํฉ๋๋ค.
- ํ
์คํธ ์ค์ธ ์ปดํฌ์ ๋ธ์ ๋ฐฐ์นํ๋
composeTestRule์ฌ์ฉํ์ฌ ํ ์คํธ ์ปดํฌ์ง์ ์ ๋ง๋ญ๋๋ค. - ํ ์คํธ API๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ํธ ์์ฉ์ ์๋ฎฌ๋ ์ด์ ํ๊ฑฐ๋ ํน์ ์ด๋ฒคํธ ํ UI ์ํ๋ฅผ ํ์ธํ์ธ์.
- ์ด์ค์ ์ ํ์ธํ์ฌ ์ปดํฌ์ ๋ธ์ด ์ํธ์์ฉ์ด๋ ์ํ ๋ณ๊ฒฝ์ ์์๋๋ก ๋ฐ์ํ๋์ง ๊ฒ์ฆํฉ๋๋ค.
Compose์ ์ ์ฉํ ํ ์คํธ API
Jetpack Compose ์ ํน์ง ์ค ํ๋๋ ํด๋ฆญ, ์คํฌ๋กค, ์
๋ ฅ๊ณผ ๊ฐ์ ์์
์ ์ํํ๊ณ ๊ฐ์์ฑ ๋ฐ ํ
์คํธ ์ฝํ
์ธ ์ ๊ฐ์ ์ํ๋ฅผ ํ์ธํ ์ ์๋ ํ
์คํธ API ๋ชจ์์
๋๋ค. ๋๋ฆฌ ์ฌ์ฉ๋๋ API๋ก๋ onNode , performClick ๋ฐ assertTextEquals ์์ต๋๋ค.
AppMaster ์ No-Code ํ๋ซํผ๊ณผ ํตํฉ
Jetpack Compose ์๋์ผ๋ก ์ฝ๋ฉ๋ Android ๊ฐ๋ฐ์ ํ๋ช ์ ์ผ์ผ์ผฐ๋ค๋ฉด AppMaster ์ ๊ฐ์ ํ๋ซํผ์ ์ด๋ฌํ ์ต์ ํ๋ ์์ํฌ๋ฅผ no-code ํ๊ฒฝ์ ํตํฉํ์ฌ ์ด๋ฅผ ๋์ฑ ๋ฐ์ ์ํต๋๋ค. AppMaster ์ฌ์ฉํ๋ฉด ๋จ์ํ UI๋ฅผ ์๊ฐ์ ์ผ๋ก ๋์์ธํ๋ ๊ฒ์ด ์๋๋๋ค. ๋ํ Jetpack Compose ์ํ๊ณ ๋ด์์ ์ผ๊ด๋๊ฒ ์๋ํ๋ ์ ์ฅ์, ํธ๋ค๋ฌ, ์ด๋ํฐ๋ฅผ ํตํฉํ ์๋ ์์ต๋๋ค. ๋ํ ํ๋ซํผ์ ์์ฑํ ์๊ฐ์ ๋ชจ๋ธ์์ ํ ์คํธ ๊ฐ๋ฅํ ๊ตฌ์ฑ ์์ ์์ฑ์ ์์ฉํ๋ฏ๋ก ํ์ ํ ์คํธ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ๋ฐ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๋ณด์ํฉ๋๋ค.
Jetpack Compose ์์์ ํ ์คํธ๋ ํ๋ ์์ํฌ ์์ฒด๋งํผ์ด๋ ๊น์ ์ฃผ์ ์ ๋๋ค. ๋๋ค ์คํ ์บก์ฒ ๋ฐ ํ์ธ๋ถํฐ ์ ๋๋ฉ์ด์ ๋ฐ ์ฌ์ฉ์ ์ง์ ๋์ ์ฒ๋ฆฌ์ ์ด๋ฅด๊ธฐ๊น์ง ์ดํด๋ณผ ๋ด์ฉ์ด ๋ง์ต๋๋ค. ์ปดํฌ์ ๋ธ ํ ์คํธ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋๊ตฌ์ ์ ๊ทผ ๋ฐฉ์์ ์ดํดํ๋ฉด Android ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฅ๊ณผ ๋ฐ๋ณต์ ์ธ ๊ฐ์ ์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ ๊ทธ ์ด์: ๊ณ ๊ธ ์์ฑ ๊ธฐ์
Jetpack Compose ์ ๊ธฐ๋ณธ ์ฌํญ์ ์์งํ๋ค๋ฉด ์ด์ ๊ณ ๊ธ ๊ธฐ์ ๋ก UI ๋๊ตฌ ํคํธ๋ฅผ ๊ฐํํ์ฌ Android ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ๋จ๊ณ ๋ ๋ฐ์ ์ํฌ ์ฐจ๋ก์ ๋๋ค. ์ ๋๋ฉ์ด์ ๋ถํฐ ๋ง์ถค ๋ ์ด์์๊น์ง Jetpack Compose ๋ณต์กํ UI ์๋๋ฆฌ์ค ๋ฐ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ถฉ์กฑํ๋ ํ๋ถํ API ์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. Compose UI๋ฅผ ๋๋ณด์ด๊ฒ ํ ์ ์๋ ๋ช ๊ฐ์ง ๊ฐ๋ ฅํ ๊ธฐ๋ฅ๊ณผ ๊ถ์ฅ์ฌํญ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
Jetpack Compose ์ ์ ๋๋ฉ์ด์
์ ๋๋ฉ์ด์ ์ ๋งค๋ ฅ์ ์ด๊ณ ๋ํํ UI๋ฅผ ๋ง๋๋ ๋ฐ ์์ด ์ค์ํ ์ธก๋ฉด์ ๋๋ค. Jetpack Compose ๋ชจ์ ์ ๊ตฌ์ฑ์์์ ์ํํ๊ฒ ํตํฉํ๋ ๊ฐ๋ ฅํ ์ ๋๋ฉ์ด์ ์์คํ ์ด ์์ต๋๋ค. ์ ํ API๋ฅผ ์ฌ์ฉํ๋ฉด ์์ฑ, ์ํ ๋ณ๊ฒฝ์ ๋ฌผ๋ก ๋ ์ด์์ ๋ณ๊ฒฝ๊น์ง ์ ๋๋ฉ์ด์ ์ผ๋ก ํ์ํ ์ ์์ต๋๋ค. ์ ๋๋ฉ์ด์ ์ ๊ตฌํํ๋ ค๋ฉด:
- ์ปดํฌ์ ๋ธ ์์ฑ์ ์ด๊ธฐ ๋ฐ ๋์ ์ํ๋ฅผ ์ ์ํฉ๋๋ค.
animateFloatAsState๋๋animateContentSize์ ๊ฐ์animate*ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ํ ๊ฐ์ ์ํํ๊ฒ ์ ํํ ์ ์์ต๋๋ค.- ๋ ๋ณต์กํ ์ํ์ค๋ฅผ ์ํด
TransitionAPI๋ฅผ ํตํฉํ๊ณ ์ฌ๋ฌ ์ ๋๋ฉ์ด์ ์ ํจ๊ป ์๋ฌดํฉ๋๋ค.
๊ณผ๋ํ ๋ชจ์ ์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ํ์ํฌ ์ ์์ผ๋ฏ๋ก ์ ๋๋ฉ์ด์ ์ ๋ชฉ์ ์ ๋ง๊ฒ ์ ์งํ๊ณ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
๋ง์ถค ๋ ์ด์์
ํ์ค Compose ๋ ์ด์์์ด ๋์์ธ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํ์ง ์๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ์ฌ์ฉ์ ์ ์ ๋ ์ด์์์ด ์๋ํ๋ ๊ณณ์
๋๋ค. Compose๋ฅผ ์ฌ์ฉํ๋ฉด Layout ์ปดํฌ์ ๋ธ์ ์ฌ์ฉํ์ฌ ๋๋ง์ ๋ ์ด์์์ ๋ง๋ค ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด UI์์ ์ปดํฌ์ ๋ธ์ ๋ฐฐ์ดํ๋ ๋ฐ ์์ ํ ์ ์ฐ์ฑ์ด ํ์ฉ๋ฉ๋๋ค.
- ๋ง์ถค ๋ ์ด์์ ๊ตฌ์ฑ ๊ฐ๋ฅ ํจ์๋ฅผ ์ ์ํ๋ ๊ฒ๋ถํฐ ์์ํ์ธ์.
- ์ ๊ณต๋
MeasurePolicy์ฌ์ฉํ์ฌ ํ์ ์ปดํฌ์ ๋ธ์ ์ธก์ ํ๊ณ ๋ฐฐ์นํฉ๋๋ค. Modifier.layout์ฌ์ฉํ์ฌ ๊ฐ ํ์ ํญ๋ชฉ์ ์ธก์ ๋ฐ ๋ฐฐ์น ๋จ๊ณ์ ๊ณ ์ ํ๊ฒ ์ํฅ์ ์ค๋๋ค.
๋ง์ถค ๋ ์ด์์์ ๊ฐ๋ฐํ๋ ค๋ฉด Compose์ ๋ ์ด์์ ๋ชจ๋ธ์ ์ ์ดํดํด์ผ ํ๋ฏ๋ก ๊ธฐ๋ณธ ๋ ์ด์์ ๋ฉ์ปค๋์ฆ์ ์ต์ํ ์ฌ์ฉ์์๊ฒ ๊ถ์ฅ๋ฉ๋๋ค.
์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํ ์ง์ฐ ์ปดํฌ์ ๋ธ
ํฐ ๋ชฉ๋ก์ด๋ ๊ทธ๋ฆฌ๋๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ UI ๊ฐ๋ฐ์์ ์ผ๋ฐ์ ์ธ ๊ณผ์ ์
๋๋ค. Jetpack Compose ์ด๋ฌํ ์๋๋ฆฌ์ค์ LazyColumn ๋ฐ LazyRow ์ ๊ณตํฉ๋๋ค. ์ด๋ ๊ธฐ์กด Android ๋ทฐ์ RecyclerView์ ์ ์ฌํ๊ฒ ํ์ฌ ์ฌ์ฉ์์๊ฒ ํ์๋๋ ์์๋ง ๊ตฌ์ฑํ๊ณ ์ฌํ์ฉํฉ๋๋ค.
- ์ธ๋ก ๋ชฉ๋ก์๋
LazyColumn์ฌ์ฉํ๊ณ ๊ฐ๋ก ๋ชฉ๋ก์๋LazyRow์ฌ์ฉํฉ๋๋ค. items,itemsIndexed๋ฐ ๊ธฐํ Lazy DSL ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ๋ชฉ๋ก ์ฝํ ์ธ ๋ฅผ ๋์ ์ผ๋ก ๊ด๋ฆฌํ์ธ์.- ์์ฒด Lazy ๋ชฉ๋ก ์ํ๋ฅผ ๊ตฌํํ์ฌ ์ฑ๋ฅ์ ๋์ฑ ์ต์ ํํ๊ฑฐ๋ ํญ๋ชฉ ํค๋ฅผ ์ ์ํ์ฌ ๋ถํ์ํ ์ฌ๊ตฌ์ฑ์ ๋ฐฉ์งํ์ธ์.
์ด๋ฌํ ๊ฐ๋ ์ ํจ๊ณผ์ ์ผ๋ก ํตํฉํ๋ฉด ๊ด๋ฒ์ํ ๋ฐ์ดํฐ ์ธํธ๊ฐ ์์ด๋ ๋ถ๋๋ฝ๊ณ ๋งค๋๋ฌ์ด UI๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
๊ธฐ์กด ๋ทฐ ์์คํ ๊ณผ์ ์ํธ ์ด์ฉ์ฑ
๋ง์ ์ฑ์ด ์ฌ์ ํ ๊ธฐ์กด Android ๋ณด๊ธฐ ์์คํ ์ ์ฌ์ฉํ๊ฑฐ๋ Compose์์ ์์ง ์ฌ์ฉํ ์ ์๋ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํตํฉ์ด ํ์ํ ์ ์์ต๋๋ค. ๋คํํ Compose๋ ์ํธ ์ด์ฉ์ฑ์ ํ์ฉํฉ๋๋ค.
- ๊ธฐ์กด ๋ทฐ์์ Compose UI๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด
ComposeView์ฌ์ฉํ์ฌ ๋ํํ์ธ์. - Compose ๋ ์ด์์ ๋ด์ ๊ธฐ์กด ๋ทฐ๋ฅผ ํฌํจํ๋ ค๋ฉด
AndroidView์ปดํฌ์ ๋ธ์ ์ฌ์ฉํ์ธ์. ViewInterop์ฌ์ฉํ์ฌ Compose์ ๊ธฐ์กด Android ๋ทฐ ์์คํ ์ ์ฐ๊ฒฐํ๊ณ ์๋ช ์ฃผ๊ธฐ์ ์ปจํ ์คํธ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌํฉ๋๋ค.
๊ธฐ์กด UI ๋๊ตฌ ํคํธ์ ์ต์ UI ๋๊ตฌ ํคํธ ๊ฐ์ ์ ํํ๋ฉด ๊ธฐ์กด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจํด์ ๊ณ์ ํ์ฉํ๋ฉด์ Compose๋ก ์ ์ง์ ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ์ ์์ต๋๋ค.
ํ ๋ง ๋ฐ ์คํ์ผ๋ง
Compose๋ฅผ ์ฌ์ฉํ๋ฉด ๊ด๋ฒ์ํ ํ ๋ง ์ค์ ๋ฐ ์คํ์ผ๋ง ๊ธฐ๋ฅ์ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์์ ๋ธ๋๋ ์ผ๊ด์ฑ๊ณผ ๋์์ธ ์ถฉ์ค๋๋ฅผ ๋ณด์ฅํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ ํ ๋ง ์ธ์๋ ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์ ์ ์ ํ
๋ง ์์ฑ์ ์์ฑํ๊ณ ๋ฏธ๋ฆฌ ์ ์๋
MaterialTheme์ฑ์ ๊ณ ์ ํ ๋์์ธ ์ธ์ด์ ๋ง๊ฒ ํ์ฅํ์ธ์. - ํต์ผ๋ ๋ชจ์๊ณผ ๋๋์ ์ํด ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ดํฌ๊ทธ๋ํผ, ๋ชจ์ ๋ฐ ์์ ๊ตฌ์ฑํ๋ฅผ ์ ์ํ๊ณ ์ฌ์ฉํฉ๋๋ค.
- Compose์ ํ ๋ง ์์คํ ์ ์ฌ์ฉํ์ฌ ์ต์ํ์ ๋ ธ๋ ฅ์ผ๋ก ์ด๋์ด ๋ชจ๋ ์ง์์ ๊ตฌํํ์ธ์.
ํจ๊ณผ์ ์ธ ํ ๋ง ์ง์ ์ ์๊ฐ์ ๋งค๋ ฅ๋ฟ๋ง ์๋๋ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฉ์ฑ๋ ํฅ์์ํต๋๋ค.
Jetpack Compose ์ ํจ๊ป AppMaster ์ No-Code ํ๋ซํผ ์ฌ์ฉ
์ฝ๋์ ๋ํ ์ฌ์ธต์ ์ธ ๋ถ์ ์์ด ๋ชจ๋ฐ์ผ ์ฑ์ ๊ฐ๋ฐํ๋ ค๋ ์ฌ๋๋ค์ ์ํด AppMasterJetpack Compose ์ง์ํ๋ ๊ณ ๊ธ no-code ํ๋ซํผ์ ์ ๊ณตํฉ๋๋ค. drag-and-drop ํตํด ๋ชจ๋ฐ์ผ ์ฑ์ UI๋ฅผ ์ง๊ด์ ์ผ๋ก ๋์์ธํ๊ณ AppMaster ์ฌ์ฉํ๋ ์๋ฒ ๊ธฐ๋ฐ ํ๋ ์์ํฌ๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
- ํ์์ ๋ฐ๋ผ ์ฌ์ฉ์ ์ ์ํ ์ ์๋ ์ฌ์ ๊ตฌ์ถ๋ ๋ค์ํ ๊ตฌ์ฑ ์์ ์ธํธ์ ์ก์ธ์คํ์ธ์.
- no-code ์ปค๋ฅํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ๊ตฌ์ฑ ์์๋ฅผ ๋ฐฑ์๋ ์๋น์ค ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํํ๊ฒ ์ฐ๊ฒฐํ์ธ์.
- ๊ธฐ๋ณธ ์ฑ ๊ธฐ๋ฅ์ ์ํด ์์ฑ๋ Kotlin ๋ฐ Jetpack Compose ์ฝ๋๋ฅผ ํ์ฉํ์ธ์.
์ด๋ฌํ ํตํฉ์ ๊ฐ์ํ๋ ๊ฐ๋ฐ ์ฃผ๊ธฐ๋ฅผ ์ ๊ณตํ๋ฉฐ, Jetpack Compose ์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ํตํด AppMaster ๊ฐ๋ฐ์์ ๋น๊ฐ๋ฐ์ ๋ชจ๋์๊ฒ ๊ฐ๋ ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ๋น ๋ฅด๊ฒ ์์ฅ์ ์ถ์ํ ์ ์๋ ์ ๊ตํ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค.
AppMaster ์ No-Code ํ๋ซํผ๊ณผ ํจ๊ป Jetpack Compose ์ฌ์ฉ
Jetpack Compose Android ์ฑ ๊ฐ๋ฐ ์ธ๊ณ์ ๋ฐ์ด๋๋ ๊ฐ๋ฐ์๋ฅผ ์ํ ๋ณด๋ค ์ง๊ด์ ์ด๊ณ ํํ๋ ฅ์ด ํ๋ถํ UI ๋์์ธ์ ํฅํ ํจ๋ฌ๋ค์ ์ ํ์ ๋ํ๋ ๋๋ค. ๊ทธ๋ฌ๋ ์ฒ์๋ถํฐ ์ฝ๋ฉํ๋ ๊ฒ์ ๋ชจ๋ ์ฌ๋์๊ฒ ๊ฐ์ฅ ํจ์จ์ ์ธ ๊ฒฝ๋ก๋ ์๋ ์ ์์ต๋๋ค. ํนํ ์ฝ๋ฉ ๊ฒฝํ์ด ์ ํ์ ์ด๊ฑฐ๋ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ๋ ค๋ ์ฌ๋๋ค์๊ฒ๋ ๋์ฑ ๊ทธ๋ ์ต๋๋ค. ๋ฐ๋ก ์ฌ๊ธฐ์ no-code ๊ฐ๋ฐ ํ๋ซํผ์ธ AppMaster ๊ฐ๋ ฅํ ๋๋งน์๋ก ๋ฑ์ฅํฉ๋๋ค.
AppMaster ์ ํ๋ฆฌ์ผ์ด์ ์์ฑ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ํํ๋๋ก ์ค๊ณ๋์ด ๊ตฌ์ฑ ์์๋ฅผ ๋์ด์ ๋์ ์ ๊ตํ ์ฑ์ ํ์ฑํ ์ ์๋ ์๊ฐ์ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค. Jetpack Compose ํตํฉํจ์ผ๋ก์จ AppMasterno-code ์ ๊ทผ ๋ฐฉ์๊ณผ ์ต์ฒจ๋จ ๊ธฐ์ ์ ์ํํ ์ตํฉ์ ์ ๊ณตํ๋ฏ๋ก ์ฌ์ฉ์๋ no-code ์ปจํ ์คํธ ๋ด์์ Compose์ ์ด์ ์ ํ์ฉํ ์ ์์ต๋๋ค.
AppMaster ๋ด์์ Jetpack Compose ํ์ฉํ๊ธฐ ์ํด ์ฌ์ฉ์๋ Kotlin ์ฝ๋๋ฅผ ์๋์ผ๋ก ์์ฑํ ํ์๊ฐ ์์ต๋๋ค. ๋์ drag-and-drop ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ UI ์์๋ฅผ ๋ง๋ค ์ ์์ผ๋ฉฐ ํ๋ซํผ์ ๋ฐฑ์๋๋ Jetpack Compose ํ์ฉํ์ฌ ํด๋น ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ ํ๋์ ์ธ ์ฑ ๋์์ธ์ ๋ฏผ์ฃผํํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ฌ์ฉ์๋ ๋ณต์กํ ์ฝ๋๋ฅผ ํ๊ตฌํ์ง ์๊ณ ๋ ๊ธฐ๋ฅ์ด ํ๋ถํ๊ณ ๋ฏธํ์ ์ผ๋ก ๋ง์กฑ์ค๋ฌ์ด ์ฑ์ ๋ง๋ค ์ ์์ต๋๋ค.
AppMaster ์ ํจ๊ป Jetpack Compose ์ฌ์ฉ์ ์์ํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- AppMaster ํ๋ซํผ์ ๋ก๊ทธ์ธํ๊ณ ์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ์ธ์.
- ๋ชจ๋ฐ์ผ ์ฑ ๋น๋ ์น์ ์ ์ก์ธ์คํ๊ณ ๋น์ฃผ์ผ ํธ์ง๊ธฐ๋ก ์ฑ ๋์์ธ์ ์์ํ์ธ์.
- UI ๊ตฌ์ฑ์์๋ฅผ ์ถ๊ฐํ๋ฉด ํ๋ซํผ์์ ์๋์ผ๋ก Jetpack Compose ์ฌ์ฉํ์ฌ ๋์์ธ์ Android ์ฑ์ผ๋ก ์ปดํ์ผํ ์ ์๋ ์ค์ Kotlin ์ฝ๋๋ก ๋ณํํฉ๋๋ค.
- ๋ช ์์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ์ง ์๊ณ ๋ AppMaster ์ ์๊ฐ์ ๋น์ฆ๋์ค ํ๋ก์ธ์ค(BP)๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ์ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ์ํธ ์์ฉ์ ์ ์ํ์ธ์.
- ์ฑ ๋์์ธ์ด ์๋ฃ๋๋ฉด '๊ฒ์' ๋ฒํผ์ ์ฌ์ฉํ์ฌ ํ๋ซํผ ๋ด์์ ์์ค ์ฝ๋๋ฅผ ์์ฑํ๊ณ , ์ฑ์ ์ปดํ์ผํ๊ณ , ํด๋ผ์ฐ๋์ ๋ฐฐํฌํ์ธ์.
- ํ์ํ ๊ฒฝ์ฐ ์คํ ๊ฐ๋ฅํ ๋ฐ์ด๋๋ฆฌ ํ์ผ์ด๋ ์์ค ์ฝ๋(Enterprise ๊ตฌ๋ ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ)๋ฅผ ๊ฐ์ ธ์ ์จํ๋ ๋ฏธ์ค์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํธ์คํ ํ ์ ์์ต๋๋ค.
์ฑ ๊ฐ๋ฐ์ ๋ ๋ฐ์ ์ํค๋ ค๋ ๊ฒฝ์ฐ ์๋ ์์ฑ๋ Jetpack Compose ์์์ ํจ๊ป ๋ง์ถค Kotlin ์ฝ๋๋ฅผ ํตํฉํ์ฌ no-code ํ๊ฒฝ์ ํจ์จ์ฑ์ ํฌ์ํ์ง ์๊ณ ๋ ๋์ ์์ค์ ๋ง์ถค์ค์ ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
AppMaster Android ๊ฐ๋ฐ ์ฌ์ ์ ๋จ์ํํ ๋ฟ๋ง ์๋๋ผ ๋ชจ๋ ๋ฐฐ๊ฒฝ์ ํฌ๋ฆฌ์์ดํฐ๋ธ๊ฐ Jetpack Compose ์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ํ์ฉํ ์ ์๋๋ก ํ์ฌ ์ด๋ฅผ ๋์ฑ ํ๋ถํ๊ฒ ๋ง๋ญ๋๋ค. ์ฑ ์ปจ์ ์ ์คํํ๋ ค๋ ์ด๋ณด์์ด๋ ์ ์ํ ํ๋กํ ํ์ดํ ๊ธฐ๋ฅ์ ์ํ๋ ๋ ธ๋ จํ ๊ฐ๋ฐ์์ด๋ ๊ด๊ณ์์ด AppMaster ์ Jetpack Compose ์ ์๋์ง ํจ๊ณผ๋ ๊ฐ๋ฐ ์ํฌํ๋ก๋ฅผ ํฌ๊ฒ ํฅ์์ํฌ ์ค๋น๊ฐ ๋์ด ์์ต๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
Jetpack Compose ๋ ๊ธฐ๋ณธ Android UI๋ฅผ ๋น๋ํ๊ธฐ ์ํ ์ต์ ๋๊ตฌ ํคํธ์ ๋๋ค. ์ ์ ์ฝ๋, ๊ฐ๋ ฅํ ๋๊ตฌ, Kotlin ๊ธฐ๋ฐ์ ์ง๊ด์ ์ธ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ Android์์ UI ๊ฐ๋ฐ์ ๋จ์ํํ๊ณ ๊ฐ์ํํฉ๋๋ค.
Jetpack Compose UI ๊ฐ๋ฐ์ ๋ํ ๊ฐ์ํ๋๊ณ ์ ์ธ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํ๋ฏ๋ก ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์์ฉ๊ตฌ ์ฝ๋๋ฅผ ์ค์ด๊ณ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ฉ์ดํ๊ณ ๊ฐ๊ฒฐํ ์ฝ๋๋ฒ ์ด์ค๋ก ๋ณต์กํ UI๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
์, Jetpack Compose Kotlin์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์์ผ๋ฉฐ ํ๋ ์์ํฌ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๋ ค๋ฉด Kotlin์ ๋ํ ์ง์์ด ํ์ํฉ๋๋ค.
์ ์ ์ผ๋ก! Jetpack Compose ๊ธฐ์กด Android ์ฑ๊ณผ ํตํฉ๋ ์ ์์ผ๋ฏ๋ก ๊ฐ๋ฐ์๋ ํ์ฌ ํ๋ก์ ํธ์์ ํ๋ ์์ํฌ๋ฅผ ์ ์ง์ ์ผ๋ก ์ฑํํ ์ ์์ต๋๋ค.
Jetpack Compose ๋ฐ์ํ ๋ฐ์ดํฐ ํ๋ฆ ๋ชจ๋ธ์ ํตํด ์ํ ๊ด๋ฆฌ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. Compose ๊ธฐ๋ฅ์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ์๋์ผ๋ก ์๋ตํ์ฌ ์ผ๊ด๋๊ณ ๋ฒ๊ทธ ์๋ UI๋ฅผ ์ ๊ณตํฉ๋๋ค.
์, ๊ตฌ์ฑ ๊ฐ๋ฅํ ํจ์๋ฅผ ํ ์คํธํ๋ ค๋ฉด ๊ธฐ์กด Android ๋ทฐ ๋์ ๊ตฌ์ฑ ๊ฐ๋ฅํ ํจ์์ ํน๋ณํ ๋ง๋ ComposeTestRule ๋ฐ ๊ด๋ จ API๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ํฌํจ๋ฉ๋๋ค.
์, AppMaster Jetpack Compose ํ๋ ์์ํฌ๋ฅผ ํ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ์ง๊ด์ ์ธ no-code ํ๋ซํผ์ผ๋ก ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ฉ UI๋ฅผ ๋์์ธํ ์ ์๋๋ก ํฉ๋๋ค.
Jetpack Compose ์์ํ๊ธฐ ์ ์ Android ๊ฐ๋ฐ ๋ฐ Kotlin ์ธ์ด ๊ตฌ๋ฌธ์ ๊ธฐ๋ณธ ์ฌํญ์ ์์งํด์ผ ํฉ๋๋ค.
Jetpack Compose ๋ ๋ง์ถค์ค์ ์ด ๊ฐ๋ฅํ๋ฏ๋ก ๊ฐ๋ฐ์๊ฐ ๋์์ธ ์ฌ์์ ๋ง๋ ๊ณ ์ ํ UI ๊ตฌ์ฑ์์๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
Jetpack Compose ์ฌ์ฉํ๋ฉด ํ๋์ ์ด๊ณ ํจ์จ์ ์ด๋ฉฐ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ UI์ ์ค์ ์ ๋๊ณ ๋จ์ํ ๊ฒ๋ถํฐ ๋ณต์กํ ๊ฒ๊น์ง ๋ชจ๋ ์ข ๋ฅ์ Android ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
๊ณต์ Android ๊ฐ๋ฐ์ ์น์ฌ์ดํธ๋ฅผ ํ๋ก์ฐํ๊ณ , ๊ด๋ จ ๋ด์ค๋ ํฐ๋ฅผ ๊ตฌ๋ ํ๊ณ , ์ปค๋ฎค๋ํฐ ํฌ๋ผ์ ๊ฐ์ ํ์ฌ ์ต์ Jetpack Compose ์ ๋ฐ์ดํธ์ ๋ํ ์ต์ ์ ๋ณด๋ฅผ ๋ฐ์๋ณด์ธ์.
์, Jetpack Compose ํ๋ก๋์ ์ค๋น๊ฐ ๋์ด ์๊ณ Google์์ ์ ๊ทน์ ์ผ๋ก ์ ์ง๊ด๋ฆฌํ๋ฏ๋ก ์ต์ Android ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐ ์ ๋ขฐํ ์ ์๋ ์ ํ์ ๋๋ค.


