๐ฑ ์๋๋ก์ด๋ ์ฑ ๋น๋ ์๋ 2๋ฐฐ ๋์ด๋ 8๊ฐ์ง ์ต์ ํ ํ ๐
์ฌ๋ฌ๋ถ, ํน์ ‘์ฑ ๊ฐ๋ฐํ ๋ ๋น๋ ์๊ฐ์ด ๋๋ฌด ๊ธธ๋ค’๋ฉฐ ํ์จ ์ฌ์๋ ์ ์์ผ์ ๊ฐ์? ๐ฉ ๋น๋๊ฐ ๋๋ฆฌ๋ฉด ๊ฐ๋ฐ ์๋๋ ๋๋ ค์ง๊ณ , ํผ๋๋ฐฑ cycle๋ ๊ธธ์ด์ ธ์ ์ ๋ง ์คํธ๋ ์ค ๋ฐ๊ธฐ ๋ง๋ จ์ด์ฃ . ๊ทธ๋ฐ๋ฐ ๋ง์ฝ ์ค๋ ๋ฐฐ์ธ 8๊ฐ์ง ํ๋ง ์ ๋๋ก ์ ์ฉํ๋ค๋ฉด, ์ฌ๋ฌ๋ถ์ ์ฑ ๋น๋ ์๋๋ ๋ฌด๋ ค 2๋ฐฐ ๐ ๋นจ๋ผ์ง ์ ์๋ค๋ ์ฌ์ค! ๋๋์ฃ ? ๐
๊ทธ๋ผ, ๊ตฌ์ฒด์ ์ผ๋ก ์ด๋ค ์ต์ ํ ๋ฐฉ๋ฒ๋ค์ด ์๋์ง ํจ๊ป ์์๋ณด๋ฉด์, ๋น ๋ฅธ ๊ฐ๋ฐ์ ๊ธธ๋ก ์กฐ๊ธ ๋ ๊ฐ๊น์์ ธ ๋ณผ๊น์? ์์ํฉ๋๋ค! ๐โ๏ธ๐จ
1๏ธโฃ Gradle ์บ์ ํ์ฉํ๊ธฐ ๐พ
๐ Gradle์ ์๋๋ก์ด๋ ๋น๋์ ํต์ฌ ๋๊ตฌ์ ๋๋ค. ๋น๋ ์๋๋ฅผ ๋์ด๊ธฐ ์ํด ๊ฐ์ฅ ๋จผ์ ํ ์ผ! ๋ฐ๋ก ์บ์ ๊ธฐ๋ฅ ํ์ฑํ์ ์ด์ ๋น๋ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฌ์ฉํ๋ ๊ฒ์ด์ฃ .
โ
Tip 1: gradle.properties
ํ์ผ์ ์๋ ํญ๋ชฉ ์ถ๊ฐ
org.gradle.caching=true
org.gradle.daemon=true
(๋ฐฑ๊ทธ๋ผ์ด๋์์ JVM ํ๋ก์ธ์ค ์ ์ง)org.gradle.parallel=true
(๋ณ๋ ฌ ๋น๋)
โ
Tip 2: Gradle Daemon
ํ์ฑํ: ๋น๋ ์๊ฐ์ ํฌ๊ฒ ๋จ์ถ์์ผ์ค๋๋ค.
โ
Tip 3: ๋น๋ ์บ์ ์ฌ์ฉ: ๋ณ๊ฒฝ๋์ง ์์ ๋ชจ๋์ ๋ค์ ๋น๋ํ์ง ์๋๋ก ์ค์ ํฉ๋๋ค.
๐ ์ค์! ๋งค๋ฒ ์บ์๋ฅผ ํด๋ฆฌ์ดํ๋ ์ต๊ด์ ์คํ๋ ค ๋๋ฆฌ๊ฒ ๋ง๋ค ์ ์์ผ๋, ๊ฐ๋ฅํ ์บ์๋ฅผ ์ ๊ทน์ ์ผ๋ก ํ์ฉํ์ธ์! ๐ฏ
2๏ธโฃ ๋ถํ์ํ ๋ชจ๋/๋ฆฌ์์ค ์ ๊ฑฐ โ
๐ ํ๋ก์ ํธ์ ํ์ ์๋ ๋ชจ๋์ด๋ ๋ฆฌ์์ค๊ฐ ๋ง์ผ๋ฉด ๋น๋ ์๊ฐ๋ ๊ธฐํ๊ธ์์ ์ผ๋ก ๋์ด๋ฉ๋๋ค.
โ
Tip 1: ์ฐ์ง ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๋ชจ๋์ ์ญ์ ํ์ธ์ ๐ฎ
โ
Tip 2: build.gradle
์์ debug
์ release
๋ณ๋ก ํ์ ์๋ ๋ถ๋ถ์ ์ ๊ฑฐ ๐งน
โ
Tip 3: ์ด๋ฏธ์ง ๋ฑ ๋ฆฌ์์ค ์ต์ ํ: ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ WebP ํฌ๋งท ํ์ฉํ๊ธฐ ๐ฏ
๐ ์ด์์ ์ธ ์ ๋ฆฌ๋ฒ: ๊ฐ๊ธฐ ํ์ํ ๋ชจ๋๋ง ๋จ๊ธฐ๊ณ ์ธ๋ฐ์๋ ๊ฑด ๊ณผ๊ฐํ ์ ๋ฆฌ, ๊น๋ํ ๊ตฌ์กฐ ์ ์ง!
3๏ธโฃ Kotlin ๋ฐ Gradle ๋ฒ์ ์ ๊ทธ๋ ์ด๋ ๐
๐ ์ต์ ๋ฒ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ๊ฒ๋ง์ผ๋ก๋ ์๋นํ ๋น๋ ์๋ ํฅ์์ด ๊ธฐ๋๋ฉ๋๋ค.
โ
Tip 1: Gradle ๋ฒ์ ์ ํญ์ ์ต์ ์์ ํ ๋ฒ์ ์ผ๋ก ์
๋ฐ์ดํธํ๊ธฐ
โ
Tip 2: Kotlin ํ๋ฌ๊ทธ์ธ ์ญ์ ์ต์ ๋ฒ์ ์ ์ง
โ
Tip 3: Android Gradle Plugin(AGP)๋ ์ฃผ๊ธฐ์ ์ฒดํฌ ํ ์
๋ฐ์ดํธ
โจ ์ต์ ๋ฒ์ ๋ค์ ์ฌ์ฉํ๋ฉด ์ต์ ํ๋ ๋น๋ ๊ธฐ๋ฅ, ์ฑ๋ฅ ๊ฐ์ ์ด์ + ๋ณด์ ํจ์น๊น์ง ํ๋ฒ์! โ
4๏ธโฃ ์ธํฌ๋ฆฌ๋ฉํ ๋น๋ ํ์ฑํ ๐
๐ ์ธํฌ๋ฆฌ๋ฉํ ๋น๋๋ ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง ์๋ก ๋น๋ํด์ ์๊ฐ ์ ์ฝ ํจ๊ณผ๊ฐ ํฐ ํต์ฌ ๊ธฐ์ ์ ๋๋ค.
โ
Tip 1: gradle.properties
์ org.gradle.configureondemand=true
์ค์
โ
Tip 2: build.gradle
์ incremental
ํ๊ทธ ๋น ๋จ๋ฆฌ์ง ์๊ธฐ
โ
Tip 3: ์์ค ๋ณ๊ฒฝ ์ ์ผ๋ถ๋ง ์ฌ๋น๋๋๋๋ก ๊ตฌ์กฐ ์ค๊ณํ๊ธฐ
๐ฅ ๐ก ์์ ๋ณํ๋ ์ฆ๊ฐ ๋ฐ์! ๋น ๋ฅธ ํผ๋๋ฐฑ๊ณผ ๊ฐ๋ฐ ํจ์จ์ ๋์์ ์ก์ ์ ์์ต๋๋ค.
5๏ธโฃ ๋ณ๋ ฌ ๋น๋ ๐๏ธ
๐ ์ฌ๋ฌ ๋ชจ๋์ด ์๋ค๋ฉด ๋ณ๋ ฌ๋ก ๋น๋ํ์ฌ ์๊ฐ ์ ์ฝํ๋ค๋ ์ฌ์ค! ์์ฒญ๋ ์ฐจ์ด๋ฅผ ๋ง๋ค์ด ๋ ๋๋ค.
โ
Tip 1: gradle.properties
์ org.gradle.parallel=true
์ ์ฉ
โ
Tip 2: ๊ฐ ๋ชจ๋์ด ์ ์ ํ ์์กด์ฑ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ถ๋๋ก ์ค๊ณ
โ
Tip 3: ๋น๋ ์์
์ด ๊ณผ๋ํ๊ฒ ๋ณ๋ ฌํ๋์ง ์๋๋ก ์กฐ์ (๋ฆฌ์์ค ๊ณผ๋ถํ ๋ฐฉ์ง)
๐ก ์ฐธ๊ณ ๋ก ๋ณ๋ ฌ ๋น๋ ์ CPU(core) ์ ์ต๋ํ ํ์ฉํ๋ ๊ฒ ์ข์์! ๐ฅ๏ธ
6๏ธโฃ Proguard & R8 ์ต์ ํ ๐ฅ
๐ ๋ฐฐํฌ ๋น๋ ์ ํ์ ์๋ ์ฝ๋์ ๋ฆฌ์์ค ์ญ์ , ๋๋ ํ๋ ๋น๋ ์๊ฐ์ ๋๋ฆด ์ ์๋๋ฐ์.
โ
Tip 1: proguard-rules.pro
๊ท์น ์ต์ ํํด์ ๋ถํ์ํ ๋๋
ํ ์ต์ํ
โ
Tip 2: R8 ์ฌ์ฉ์ ์ถ์ฒ, ์ฝ๋ ์์ถ/์ต์ ํ ๊ธฐ๋ฅ ์ ๊ทน ํ์ฉ ๐งโ๏ธ
โ
Tip 3: ๋น๋ ์ minifyEnabled
์ ํ์ ์กฐ์ ๋ก ๋น๋ ์๊ฐ ์กฐ์ ๊ฐ๋ฅ
๐ก ์ด ๋ฐฉ๋ฒ๋ค๋ก ํฌ๊ธฐ์ ๋น๋ ์๊ฐ์ ๋ฌผ๋ก , ์ฑ ์ฑ๋ฅ๋ ํฅ์! ๐ฏ
7๏ธโฃ Multidex ์ค์ ์ต์ ํ ๐ข
๐ ๋ฉํฐ๋ฑ์ค(Multidex)๋ ์ฑ ํฌ๊ธฐ๊ฐ ํด ๋ ์ฌ์ฉํ์ง๋ง, ์ด ๊ณผ์ ์ด ๋๋ ค์ง ์ ์์ด์.
โ
Tip 1: ํ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ Multidex ์ฌ์ฉ ์ฌ๋ถ ์ ๊ฒ ๐
โ
Tip 2: multidex.keepFile
ํ์ฉ, ํต์ฌ ํด๋์ค๋ง ์ ์ง
โ
Tip 3: multiDexEnabled=true
๊ฐ ํ์ํ ๋๋ง ํ์ฑํํ๊ธฐ
โญ ํนํ, legacyMultidexEnabled
์ค์ ์ ๋ฐ๋ฅธ ๋น๋ ์๊ฐ ์ฐจ์ด๋ฅผ ๊ณ ๋ คํ์ธ์!
8๏ธโฃ CI/CD ์๋ํ ๋๊ตฌ ํ์ฉ ๐ค
๐ ์ต์ข ํ! ์๋ ๋น๋๋ฅผ ์ต์ํํ๊ณ , ์๋ํ๋ ๋น๋ ์ฒด๊ณ ๊ตฌ์ถ์ผ๋ก ์์ฒญ๋ ์๊ฐ ์ ์ฝ!
โ
Tip 1: Jenkins, GitHub Actions, GitLab CI ๋ฑ ํ์ฉ
โ
Tip 2: ์บ์ ์ ์ฅ, ๋ณ๋ ฌ ์ฒ๋ฆฌ, ์ธํฌ๋ฆฌ๋ฉํ ๋น๋ ์๋ ์ ์ฉ
โ
Tip 3: ์ฝ๋ ํ๋ฆฌํฐ ์ฒดํฌ์ ์๋ ํ
์คํธ๋ ๋ณํ!
๐ ์ด๋ ๊ฒ ํ๋ฉด ํ์ ๋๊ตฌ๋ ๋น ๋ฅด๊ฒ ์๋ก์ด ๋น๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์๋ณผ ์ ์์ด ํ์ ๋ ๋นจ๋ผ์ง๋ต๋๋ค! ๐
๐ฏ ๊ฒฐ๋ก : ์ง๊ธ๋ถํฐ ์ค์ฒํด์ ๋น๋ ์๊ฐ 2๋ฐฐ ๋นจ๋ฆฌ ๋ง๋ค๊ธฐ! ๐๐
๐ ์ค๋ ๋ฐฐ์ด 8๊ฐ์ง ํต์ฌ ํฌ์ธํธ ์ ๋ฆฌ!
โ
Gradle ์บ์ ํ์ฑํ๋ก ์ฌ์ฌ์ฉ ๊ทน๋ํ
โ
ํ์์๋ ๋ชจ๋ ์ ๊ฑฐ์ ๋ฆฌ์์ค ์ต์ ํ
โ
์ต์ ๋ฒ์ ์ผ๋ก ์
๊ทธ๋ ์ด๋ & ๋ณ๋ ฌ ๋น๋ ํ์ฉ
โ
์ธํฌ๋ฆฌ๋ฉํ ๋น๋์ R8 ์ค์ ์ต์ ํ
โ
Multidex ์ค์ ์ ๊ฒ ๋ฐ ๊ฐ์
โ
CI/CD ์๋ํ ๋์
์ผ๋ก ์ง์์ ๋น๋ ํจ์จ ํฅ์
์ด์ ๋ถํฐ ๋งค์ผ ์กฐ๊ธ์ฉ ์ค์ฒํ๋ฉด, ๋น๋ ์๊ฐ์ด ์ ๋ฐ์ ์ค๊ณ ๐ ๊ฐ๋ฐํ๋ ์ฌ๋ฏธ๋ ๋ ๋ฐฐ๋ก ๋์ด๋ ๊ฒ๋๋ค! ๐
๐ฅ ์์ ์ต๊ด์ ์ฐจ์ด๊ฐ ํฐ ์ฑ๊ณผ๋ฅผ ๋ง๋ญ๋๋ค. ์ง๊ธ ๋ฐ๋ก ์์ํ์ธ์! ๐๐ปโจ
“๋นจ๋ผ์ผ ์ฐ๋ค”๋ ๋ง, ์์ง ๋ง๊ณ ํ์ฐจ๊ฒ ๋์ ํ์ธ์! ๐ฅณ๐
์ด์ ๊ธ ๋ณด๊ธฐ!!