๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ๋นŒ๋“œ ์†๋„ 2๋ฐฐ ๋†’์ด๋Š” 8๊ฐ€์ง€ ์ตœ์ ํ™” ํŒ

by ์—์ด์—์Šค๋น„ํƒ€ 2025. 4. 18.
๋ฐ˜์‘ํ˜•

๐Ÿ“ฑ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ๋นŒ๋“œ ์†๋„ 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 ์ž๋™ํ™” ๋„์ž…์œผ๋กœ ์ง€์†์  ๋นŒ๋“œ ํšจ์œจ ํ–ฅ์ƒ

์ด์ œ๋ถ€ํ„ฐ ๋งค์ผ ์กฐ๊ธˆ์”ฉ ์‹ค์ฒœํ•˜๋ฉด, ๋นŒ๋“œ ์‹œ๊ฐ„์ด ์ ˆ๋ฐ˜์€ ์ค„๊ณ  ๐Ÿ˜Ž ๊ฐœ๋ฐœํ•˜๋Š” ์žฌ๋ฏธ๋Š” ๋‘ ๋ฐฐ๋กœ ๋Š˜์–ด๋‚  ๊ฒ๋‹ˆ๋‹ค! ๐Ÿ“ˆ

๐Ÿ”ฅ ์ž‘์€ ์Šต๊ด€์˜ ์ฐจ์ด๊ฐ€ ํฐ ์„ฑ๊ณผ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋ฐ”๋กœ ์‹œ์ž‘ํ•˜์„ธ์š”! ๐Ÿš€๐Ÿ’ปโœจ


“๋นจ๋ผ์•ผ ์‚ฐ๋‹ค”๋Š” ๋ง, ์žŠ์ง€ ๋ง๊ณ  ํž˜์ฐจ๊ฒŒ ๋„์ „ํ•˜์„ธ์š”! ๐Ÿฅณ๐ŸŽ‰

์ด์ „ ๊ธ€ ๋ณด๊ธฐ!!

๋ฐ˜์‘ํ˜•