https://www.youtube.com/watch?v=YHeWQ9MNuWg
๋ค๋ฅธ ํฌ๊ธฐ์ ํ๋ฉด๋ค ๊ฐ ๋ฌด์์ ํ ์คํธํด์ผ ํ๋ฉฐ, ์ ํ ์คํธํด์ผ ํ๋๊ฐ
์๋๋ก์ด๋ ์ฑ์ ํฐ์์๋ง ์คํ๋๋ ๊ฒ์ด ์๋๋ค. ํ ๋ธ๋ฆฟ, ํด๋๋ธ, ๋ฐ์คํฌํ์์๋ ์คํ๋๋ค. ๊ฐ ๊ธฐ๊ธฐ๋ค์ ๋ค๋ฅธ ํ๋ฉด ๋ชจ์๊ณผ ํฌ๊ธฐ๋ฅผ ๊ฐ๋๋ค. ์ฌ๋ฐฑ์ ๊ณต๊ฐ์ด ๋ง๊ฑฐ๋ ๋ ํฐ ํ๋ฉด์ ๊ธฐ๊ธฐ์์๋ ๋ฉํฐํ์คํน์ด ๋ ์ฝ๋ค. ์ด๋ฌํ ๋ง์ ์ฐจ์ด์ ๋ค์ ๊ตฌ์ฑconfiguration์ผ๋ก ์์ฝ๋ ์ ์๋ค.
Configuration Changes
๋ค๋ฅธ ๊ธฐ๊ธฐ๋ค์ ๋ค๋ฅธ ๊ตฌ์ฑ ๋ฒ์๋ฅผ ๊ฐ๋๋ค. ํ์ฌ์ ๊ตฌ์ฑ์ ๊ธฐ๊ธฐ์ ํ์ , ํฌ๊ธฐ ์กฐ์ , ์ ๊ธฐ, ๋ฉํฐ์๋์ฐ ๋ชจ๋์ ๋ค์ด๊ฐ๋ค ๋์ค๋ ๊ฒ์ผ๋ก ๋ณ๊ฒฝ๋๋ค.
๊ตฌ์ฑconfiguration์ ์๋๋ก์ด๋ ๋ฆฌ์์ค๋ฅผ ํตํด ์ฌ์ฉ ๊ฐ๋ฅํ๊ณ , ํ๋ฉด ๋ชจ์, ๋ฐฉํฅ, locale์ง์ญ, density, ํฐํธ, ์ค์ผ์ผ, weight ๋ฑ์ ์ ๋ณด๋ฅผ ํฌํจํ๋ค.
Jetpack Compose์์ ํ์ฌ ๊ตฌ์ฑ์ composable function์ผ๋ก LocalComfiguration์ธ locale ์ค์ ์ ํตํด ์ฌ์ฉ ๊ฐ๋ฅํ๋ค. LocaleConfiguration.current๋ก ๊ฐ์ ๋ฐํ๋ฐ์ ๊ฐ์ด ํ์์์ ์ ๊ตฌ์ฑ์ผ๋ก recomposeํ๋ค.
ํ๋์ ๊ธฐ๊ธฐ์์ ์ฑ์ ์คํํ๋ ๊ฒ์ ์ฑ์ด ๋ค๋ฃจ๋ ๋ถ๋ถ์ ์ธ ์๋๋ฆฌ์ค๋ง ์ปค๋ฒํ๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ๋ค์ํ ๊ธฐ๊ธฐ์์ ํ ์คํธํ๋ ๊ฒ์ด ์ค์ํ๋ค. ์ฌ๋ฌ ๋ค์ํ ์ด๊ธฐ ๊ตฌ์ฑ๊ณผ ์ฑ์ด ์ด๋ฆฐ ๋์์ ๋ณ๊ฒฝ์ฌํญ์ ๋ค๋ฃฐ ๊ฒ์ด๋ค. ์ฑ์ด ์ง์ํ๋ ๊ตฌ์ฑ์ ์ ํํ๋ ๋ฐฉ๋ฒ๋ค์ด ์์ง๋ง, ๊ทธ ๋ฐฉ๋ฒ๋ค์ ์ง์ํ๊ธธ ๋ฐ๋๋ค. ์ด ์ ํ๋ค์ ๊ตฌ์ฑ ๋ณ๊ฒฝ์ ์๋ฅผ ์ค์ผ ์๋ ์์ง๋ง ๋ค๋ฅธ ๊ธฐ๊ธฐ์์๋ ํธํ๋ ์๋ ์๋ค. ์ต์ ์ ์๊ด์์ด ๊ตฌ์ฑ ๋ณ๊ฒฝ์ ๋ฐ์๋ค์ฌ๋ผ.
์ผ๋ฐ์ ์ผ๋ก ๊ตฌ์ฑ๋ณ๊ฒฝ์ด ์ผ์ด๋ ๋, ๊ฐ ์กํฐ๋นํฐ๋ ๋ค์ ์์ฑ๋๊ณ , ์ ๊ตฌ์ฑ์ผ๋ก ์ด๊ธฐํ๋๋ค. ์ ๋ฐ์ดํธ๋ ๋ฌธ์๋ฅผ ํ์ธํด ๊ตฌ์ฑ ๋ณ๊ฒฝ์ด ์ด๋ป๊ฒ ์ผ์ด๋๊ณ ์กํฐ๋นํฐ ์๋ช ์ฃผ๊ธฐ์ ์ด๋ป๊ฒ ๊ด๋ จ์๋์ง ์ดํด๋ด๋ผ.
์ด ์๋ช ์ฃผ๊ธฐ๋ ํ๋ฉด์ด ๋ ํฐ ๊ธฐ๊ธฐ์์ ํฌ๊ธฐ ์กฐ์ , ํ์ ์ด ํจ์ฌ ์์ฃผ ์ผ์ด๋๊ธฐ ๋๋ฌธ์ ์ ๋ง ์ค์ํ๋ค.
๋ค๋ฅธ ๊ตฌ์ฑ๊ณผ ๊ตฌ์ฑ ๋ณ๊ฒฝ ์ฌํญ ํ ์คํธ๋ฅผ ์ํด 3๊ฐ์ง ์ฃผ์ ํ์๋ค์ ์ดํ๋ค. ํฌ๋์, UI ์ํ ์ ์ฅ, ํธํ์ฑcompatiblity mode์ด๋ค.
App Crashes
๊ตฌ์ฑ ๋ณ๊ฒฝ ์, ์กํฐ๋นํฐ๊ฐ ์ฌ์์ฑ์ ์ฑ์ด ํฌ๋์๋์ง ์๋์ง ํ์ธํ๋ผ. ํ์ , ์ฌ์ด์ฆ ๋ณ๊ฒฝ, ์ ๊ธฐ, ์ฌ์ด์ฆ ๋ณ๊ฒฝํ๊ธฐ, ๋ถํ ํ๋ฉด ๋ชจ๋๋ก ์ง์ ํ๊ธฐ ๋ฑ.
์กํฐ๋นํฐ๊ฐ ์ฌ์์ฑ๋๋๋ฐ, ์ํ๊ฐ ์ ์ง๋๊ณ ์์ผ๋ฉด ํฌ๋์๊ฐ ๋ ์ ์๋ค.
Save UI State
๊ตฌ์ฑ ๋ณ๊ฒฝ ์ ์ฌ์ฉ์์ ์ํ๋ฅผ ์์ง ์๋๋ก ํด์ผํ๋ค. ์์ฒญ๋๊ฒ ์ค๋ง์ค๋ฌ์ด ์ฌ์ฉ์ ๊ฒฝํ์ด๊ธฐ ๋๋ฌธ์ด๋ค. ์ฌ์ฉ์๊ฐ ์ฑ ์์ ์๋ ํ ์คํธ ํ๋, ์คํฌ๋กค ์์น์ ๋ฆฌ์คํธ ์์น, ๋ฏธ๋์ด ํ๋ ์ด๋ฐฑplayback, ํ์navigation ์ํ๋ค์ ๋ฆฌ์ ๋์ด์ ์๋๋ค.
Compatibility Mode
compatibility mode์ ์ง์ ํ ์ ์๊ฒ ํ๋ผ. ๊ตฌ์ฑ์ ์ ํ ์ฌํญ๋ค์ ๋ฃ์ ์ ์๊ธฐ๋ ํ๋ฐ, ์๋๋ก์ด๋ 12L ์ด์์ ํฐ ํ๋ฉด ๊ธฐ๊ธฐ์์๋ compatiblity mode๋ก ๋ ์ ์๋ค. compatiblity mode๋ก ๊ฐ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ์กํฐ๋นํฐ๋ฅผ ํฌ๊ธฐ์กฐ์ ํ์ง ์๊ฒ ์ค์ ํ๋ ๊ฒ์ด๋ค. Android Manifest์ ์กํฐ๋นํฐ attribute์ ๋ฆฌ์ฌ์ด์ฆ ์ค์ ์ false๋ก ๋๋ค. ์ฌ์ด์ฆ๋ฅผ ๊ณ ์ ํ๋ฉด, aspectRatio ๊ฐ๋ค์ ์ค์ ํ ์ ์๋ค.
๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ํ๋ฉด ๋ฐฉํฅ ์ ํ์ Android Manifest๋ ๋ฐํ์์ผ๋ก ์ ์ํ๋ ๊ฒ์ด๋ค.
์ด๋ฐ ์ ํญ์ฌํญ๋ค์ ํตํด์ ์์คํ ์ ์ฑ์ compatibility mode๋ก ๋์ ์ ์๋ค. ๋ง์ฝ ํ์ฌ ๊ธฐ๊ธฐ ๊ตฌ์ฑconfiguration์ด ์ ํ์ฌํญ๋ค๊ณผ ํธ์๋์ง ์๋ ๊ฒฝ์ฐ์๋, ์กํฐ๋นํฐ์ ์ ์ฉ๋๋ค.
์ด๋ ๊ฒ ๋ชจ๋ ์ฑ๋ค์ด ์ธ๋ก์ ๊ฐ๋ก ๋ฐฉํฅ์์, ๋ฉํฐ ์๋์ฐ ๋ชจ๋์ ๋์๊ฐ๋๋ก ํ๋ค.
๋ง์ฝ ์ฑ์ด ์ธ๋ก ๋ฐฉํฅ ์ค์ attribute์ผ๋ก ๊ณ ์ ๋์ด ์๋ค๋ฉด, ํ๋ธ๋ฆฟ์ด ๊ฐ๋ก๋ก ๋์ฌ์ง ๋ ์ฑ์ ๋ ํฐ๋ฐ์ค๋ก, ์ฆ ๊ฐ๋ก ๋ฐฉํฅ ํ๋ฉด ์์ ์ธ๋ก ๋ทฐ์ ์ฑ ํ๋ฉด ๋ณด์ฌ์ง๋ค. ๋ง์ฝ ์ ํ๋ ์ง์restricted support์ ์ ์ธdeclaringํ๋ ๊ฒฝ์ฐ์, ์ฌ์ฉ์๊ฐ ๊ธฐ๊ธฐ๋ฅผ ํ์ ํ๊ณ ๋ฉํฐ์๋์ฐ ๋ชจ๋๋ก ๋ค์ด๊ฐ ๋์ ๊ตฌ์ฑ ๋ณ๊ฒฝconfiguration changes์ด ๊ณ์ ๋๋ค๋ ๊ฒ์ ์์๋ผ. ํฌ๊ธฐ ์ ํ ํน์, ๋ฐฉํฅ ์ ๊ธ์ ์กํฐ๋นํฐ ์๋ช ์ฃผ๊ธฐ๋ฅผ ํผํ๋ ๋ฐฉ๋ฒ์ด ์๋๋ค. (๊ทธ๋๊น, ํฌ๊ธฐ๋ฅผ ์ ํํ๊ฑฐ๋ ํ๋ฉด ๋ฐฉํฅ์ ๊ณ ์ ํด๋ ์กํฐ๋นํฐ ๋ผ์ดํ์ฌ์ดํด์ ๋์๊ฐ๊ธฐ ๋๋ฌธ์ configuration ๋ณ๊ฒฝ์ด ์ผ์ด๋๋ค๋ ๊ฒ์ ๋งํ๋ ๊ฒ ๊ฐ๋ค.)
๋ง์ฝ ์ฑ์ด ๋ชจ๋ ์์ญ์์ ์ ๋์๊ฐ๋ค๋ฉด, ๋ชจ๋ ํ๋ฉด ํฌ๊ธฐ์ ์ ์ฉ๊ฐ๋ฅํ ๊ธฐ์ดfoundations๋ค์ ๊ฐ์ง ์ ์๋ค.
Manual Testingg Tool
Large screen emulators
- Desktop emulator
- Resizable emulator
์ต์ SDK ๋ฒ์ Android 13
Device Mirroring in Android Studio
๋ฒ์ Electric Eel ์ด์
๊ฒฝ๋ก1 : Settings(Mac์์๋ Preferences) > Tools > Device Mirroring
๊ฒฝ๋ก2 : Settings(Mac์์๋ Preferences) > Ecperimental - Device Mirroring
๊ธฐ๋ฅ : ํ์ , ๋ณผ๋ฅจ ๋ณ๊ฒฝ, ์ ๊ธ, ์ ์, ํ์, ํ๋ฉด ๋ นํ
Multi Previews for Jetpack Compose
Automated testing tools
gradle์ ์ด์ฉ
copose์ฉ ํ ์คํธ ๋ฃฐ ์ค๋ช