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

๊ฐœ๋ฐœ์ž ํ•„์ˆ˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ๋นŒ๋“œ ์ตœ์ ํ™” ์™„๋ฒฝ ๊ฐ€์ด๋“œ

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

๊ฐœ๋ฐœ์ž ํ•„์ˆ˜! ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ๋นŒ๋“œ ์ตœ์ ํ™” ์™„๋ฒฝ ๊ฐ€์ด๋“œ ๐Ÿš€๐Ÿ“ฑโœจ

์•ˆ๋…•ํ•˜์„ธ์š”, ์•ฑ ๊ฐœ๋ฐœ์ž ์—ฌ๋Ÿฌ๋ถ„! ์˜ค๋Š˜์€ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ์„ ๋งŒ๋“ค ๋•Œ ํ•„์ˆ˜๋กœ ๋งˆ์Šคํ„ฐํ•ด์•ผ ํ•  ‘๋นŒ๋“œ ์ตœ์ ํ™”’์— ๊ด€ํ•œ ์ดˆํŠน๊ธ‰ ๊ฐ€์ด๋“œ๋ฅผ ์ค€๋น„ํ–ˆ์–ด์š”. ๐Ÿ˜Ž๐Ÿ”ง๐Ÿ’ก ํ˜น์‹œ “์•ฑ ์„ฑ๋Šฅ์ด ๋А๋ ค์„œ ์‚ฌ์šฉ์ž ๋ถˆ๋งŒ์ด ์Œ“์ด๋ฉด ์–ด์ฉŒ์ง€?” ๐Ÿค” ๋˜๋Š” “๋ฐฐํฌ ํ›„ ์•ฑ ํฌ๊ธฐ ๋„ˆ๋ฌด ํฌ๋ฉด ์–ด์บ ํ•˜์ง€?” ๐Ÿ˜ต ๋ผ๊ณ  ๊ณ ๋ฏผํ–ˆ๋˜ ์  ์žˆ์œผ์‹ ๊ฐ€์š”? ๊ทธ ๋‹ต, ๋ฐ”๋กœ ์—ฌ๊ธฐ ์žˆ์Šต๋‹ˆ๋‹ค! ๐ŸŒŸ๐ŸŽฏ

๊ทธ๋Ÿผ ์ง€๊ธˆ๋ถ€ํ„ฐ ‘๊ฐœ๋ฐœ์ž ํ•„์ˆ˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ๋นŒ๋“œ ์ตœ์ ํ™” ์™„๋ฒฝ ๊ฐ€์ด๋“œ’๋ฅผ ์ฐจ๊ทผ์ฐจ๊ทผ ์‚ดํŽด๋ณผ๊ฒŒ์š”! ๐Ÿš€๐Ÿ“ฑ๐Ÿ”ฅ


๐Ÿ”ฅ ์™œ ๋นŒ๋“œ ์ตœ์ ํ™”๊ฐ€ ์ค‘์š”ํ•œ๊ฐ€์š”? ๐ŸŒŸ

๐Ÿ’ก ์ตœ์ ํ™” ์—†์ด ๊ฐœ๋ฐœํ•˜๋ฉด ์ด๋Ÿฐ ๋ฌธ์ œ๋“ค์ด!

  • ์•ฑ ์‹คํ–‰ ์†๋„ ์ง€์—ฐ โฑ๏ธ๐Ÿšถ‍โ™‚๏ธ
  • APK/ABA ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์ปค์ง ๐Ÿ“ฆ๐Ÿ’พ
  • ๋ฐฐํ„ฐ๋ฆฌ ์†Œ๋ชจ ๊ธ‰์ฆ ๐Ÿ”‹๐Ÿ”ฅ
  • ์‚ฌ์šฉ์ž ํ‰์  ํ•˜๋ฝ ๐Ÿ“‰๐Ÿคฌ
  • ์—…๋ฐ์ดํŠธ ์šฉ๋Ÿ‰ ๋ถ€๋‹ด ์ฆ๊ฐ€ ๐Ÿ“ค๐Ÿ“ˆ

โญ ์ž˜ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋“ค์€ ์™œ ์ตœ์ ํ™”์— ์ง‘์ฐฉํ• ๊นŒ?

  • ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ตœ์šฐ์„ ! ๐ŸŽจ๐Ÿ•น๏ธ
  • ์•ฑ ์Šคํ† ์–ด ๋…ธ์ถœ ํ–ฅ์ƒ! ๐Ÿ“ˆ๐ŸŽฏ
  • ๋ฐฐํฌ ๋ฐ ์—…๋ฐ์ดํŠธ ์šฉ์ด! ๐Ÿš€๐Ÿงฉ

๐Ÿšฉ ๋นŒ๋“œ ์ตœ์ ํ™” ํ•ต์‹ฌ ์ „๋žต ์ฒดํฌ๋ฆฌ์ŠคํŠธ ๐Ÿ”ฅ

1. ๋นŒ๋“œ ์„ค์ •๋ถ€ํ„ฐ ์ ๊ฒ€! ๐Ÿ› ๏ธ๐Ÿ”

2. ์•ฑ ํฌ๊ธฐ ์ค„์ด๊ธฐ! ๐Ÿ“ฆโœ‚๏ธ

3. ์„ฑ๋Šฅ ํ–ฅ์ƒ ๊ธฐ์ˆ  ์ ์šฉ! โšก๐Ÿ’จ

๊ฐ ํ•ญ๋ชฉ๋ณ„ ์ž์„ธํ•œ ๋‚ด์šฉ, ์ง€๊ธˆ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค! ๐Ÿ‘‡


1. ๋นŒ๋“œ ์„ค์ • ์ตœ์ ํ™” ๐Ÿงฉโš™๏ธ

โœ… Gradle ์„ค์ • ์ตœ์ ํ™”

  • ๐Ÿ”ธ minifyEnabled true ์‚ฌ์šฉ (ProGuard ๋˜๋Š” R8!): ๐Ÿ”’์ฝ”๋“œ ๋‚œ๋…ํ™” ๋ฐ ์ตœ์ ํ™”! ๐Ÿ›ก๏ธ
  • ๐Ÿ”ธ shrinkResources true: ๐Ÿšฎ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฆฌ์†Œ์Šค ์ œ๊ฑฐ! โœ‚๏ธ
  • ๐Ÿ”ธ debuggable false: ๋ฆฌํ…Œ์ผ(Release) ํ™˜๊ฒฝ์—์„œ๋Š” ๋””๋ฒ„๊ทธ ๋ชจ๋“œ ๋น„ํ™œ์„ฑ! ๐Ÿ“ด
  • ๐Ÿ”ธ signingConfigs ์ œ๋Œ€๋กœ ์„ค์ •: ๐Ÿ”‘์•ฑ ์„œ๋ช… ๋ฌธ์ œ ๋ฐฉ์ง€!

โœ… ๋นŒ๋“œFlavor ๋ฐ BuildType ํ™œ์šฉ

  • ๐Ÿท๏ธ ๊ฐœ๋ฐœ์šฉ, ๋ฐฐํฌ์šฉ ๋“ฑ ๋ณ„๋„ ๋นŒ๋“œ ํƒ€์ž… ๋˜๋Š” flavor ๋งŒ๋“ค๊ธฐ! ๐Ÿงช๐Ÿ› ๏ธ
  • โœ… ์บ์‹œ ํ™œ์šฉ: Gradle Daemon, ๋นŒ๋“œ ์บ์‹œ ํ™œ์„ฑํ™”! โš™๏ธ๐Ÿงฎ

โœ… ๋ฉ€ํ‹ฐ ๋ชจ๋“ˆ ๊ตฌ์กฐ ์ฑ„ํƒ

  • ๐Ÿงฉ ์•ฑ ๋ชจ๋“ˆ ๋ถ„๋ฆฌ๋กœ ์œ ์—ฐํ•œ ๊ด€๋ฆฌ์™€ ์ตœ์ ํ™” ๊ฐ€๋Šฅ! ๐Ÿ”

2. ์•ฑ ํฌ๊ธฐ ์ค„์ด๊ธฐ! ๐Ÿ“ฆโœ‚๏ธ

โœ… ์ด๋ฏธ์ง€ ํŒŒ์ผ ์ตœ์ ํ™”

  • ๐ŸŒ„ WebP ํฌ๋งท ๋„์ž…! (JPEG/PNG๋ณด๋‹ค ์••์ถ•๋ฅ  ๋†’์Œ) ๐ŸŒŸ
  • ๐Ÿ”น ์ ์ ˆํ•œ ํ•ด์ƒ๋„ ์„ ํƒ! ๐Ÿ“ฑ๐Ÿ’ป
  • ๐Ÿ”น ์ด๋ฏธ์ง€ ์••์ถ• ํˆด ์‚ฌ์šฉ! TinyPNG, ImageOptim ์ถ”์ฒœ! ๐ŸŽฏ

โœ… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ตœ์ ํ™”

  • ๐Ÿ”ธ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ œ๊ฑฐ! ๐Ÿ—‘๏ธ
  • ๐Ÿ”ธ ProGuard/ R8๋กœ ๋ถˆํ•„์š” ์ฝ”๋“œ ์ œ๊ฑฐ! ๐Ÿ›ก๏ธ
  • ๐Ÿ”ธ ๋ฉ€ํ‹ฐํŒฉ, AARํŒŒ์ผ ํฌ๊ธฐ ์‹ ๊ฒฝ์“ฐ๊ธฐ! ๐Ÿ“

โœ… ๋ฆฌ์†Œ์Šค ์ตœ์ ํ™”

  • ๐Ÿ”น ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฆฌ์†Œ์Šค ์‚ญ์ œ! ๐Ÿ—‘๏ธ๐ŸŽจ
  • ๐Ÿ”น res/ ํด๋” ์ •๋ฆฌ: ํ•„์š” ์—†๋Š” ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ ์ œ๊ฑฐ! ๐Ÿงน

โœ… ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ ์ตœ์ ํ™”

  • ๐Ÿ”ธ abiFilters ํ™œ์šฉํ•˜์—ฌ ํ•„์š”ํ•œ ์•„ํ‚คํ…์ฒ˜๋งŒ ๋นŒ๋“œ! ๐Ÿ—๏ธ
  • ๐Ÿ”ธ native-multilanguage ํฌ๊ธฐ ์กฐ์ •! ๐Ÿ‡ฐ๐Ÿ‡ท๐Ÿ‡บ๐Ÿ‡ธ

3. ์„ฑ๋Šฅ ํ–ฅ์ƒ ๊ธฐ์ˆ  ์ ์šฉ โšก๐Ÿ’จ

โœ… View์™€ UI ์ตœ์ ํ™”

  • ๐Ÿ”ธ ConstraintLayout ์ ๊ทน ํ™œ์šฉ! ๐Ÿ’ช
  • ๐Ÿ”ธ View ์ค‘์ฒฉ ์ตœ์†Œํ™”! ๐Ÿšซ๐Ÿ”
  • ๐Ÿ”ธ RecyclingView ๋ฐ ๋ทฐ ํ™€๋” ํŒจํ„ด ์ ์šฉ! ๐Ÿ‘

โœ… ์•ฑ ์‹คํ–‰ ์†๋„ ๊ฐœ์„ 

  • ๐Ÿ”น ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ(AsyncTask, Coroutines, RxJava) ํ™œ์šฉ! ๐Ÿš€
  • ๐Ÿ”น Lazy loading ๋ฐ Paging ๋„์ž…! ๐Ÿ“š
  • ๐Ÿ”น ๋ฐ์ดํ„ฐ ์บ์‹ฑ ์ ๊ทน ํ™œ์šฉ! ๐Ÿงณ

โœ… ์•ฑ ๋ฐฐํ„ฐ๋ฆฌ ์†Œ๋ชจ ์ค„์ด๊ธฐ

  • ๐Ÿ”ธ ๋ถˆํ•„์š”ํ•œ ๊ฐฑ์‹  ์ฃผ๊ธฐ ์กฐ์ •! โฒ๏ธ
  • ๐Ÿ”ธ WorkManager, JobScheduler๋กœ ๋ฐฐ๊ฒฝ์ž‘์—… ๊ด€๋ฆฌ! ๐Ÿ”ง
  • ๐Ÿ”ธ ์œ„์น˜ ์„œ๋น„์Šค, ์„ผ์„œ ํ™œ์šฉ ์ตœ์ ํ™”! โš™๏ธ

โœ… ์•ฑ์˜ ์•ˆ์ •์„ฑ ํ™•๋ณด

  • ๐Ÿ”น Crashlytics, Firebase Performance Monitoring ํ™œ์šฉ! ๐ŸŽฏ
  • ๐Ÿ”น ์ตœ์ ํ™” ๋„๊ตฌ(Profiler, LeakCanary) ์‚ฌ์šฉ! ๐Ÿ•ต๏ธ‍โ™‚๏ธ

๐Ÿ ์‹ค์ „ ๋นŒ๋“œ ์ตœ์ ํ™” ์ฒดํฌ๋ฆฌ์ŠคํŠธ โœ…โœ…โœ…

  • build.gradle ํ™•์ธ & ์ˆ˜์ •
  • ์˜ˆ์ƒ๋ณด๋‹ค ํฐ ๋ฆฌ์†Œ์Šค ๋ฐœ๊ฒฌ ์‹œ ์ œ๊ฑฐ ๋˜๋Š” ์••์ถ•
  • proguard-rules.pro์— ๋ถˆํ•„์š” ์ฝ”๋“œ ์ œ๊ฑฐ ๊ทœ์น™ ์ถ”๊ฐ€
  • ์ด๋ฏธ์ง€ ํฌ๋งท WebP๋กœ ๊ต์ฒด
  • ๋ฉ€ํ‹ฐ ๋ชจ๋“ˆ ๊ตฌ์กฐ ์„ค๊ณ„
  • ์•ฑ ๋‚ด ๋„ค์ดํ‹ฐ๋ธŒ ์•„ํ‚คํ…์ฒ˜ ํ•„ํ„ฐ๋ง
  • ์บ์‹œ ๋ฐ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์ ์šฉ
  • ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•œ ์„ฑ๋Šฅ, ํฌ๊ธฐ, ๋ฐฐํ„ฐ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์ฒดํฌ

โญ ์ด ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ ๊พธ์ค€ํžˆ ์ ๊ฒ€ํ•˜๋Š” ๊ฒŒ ํ•ต์‹ฌ! โšก๐Ÿ—๏ธ


๐ŸŽ ์‹ค๋ฌด ์ ์šฉ์„ ์œ„ํ•œ ๊ฟ€ํŒ ๐Ÿ’ก

๐Ÿ’ก ์ž๋™ํ™” ํˆด ํ™œ์šฉ

  • Gradle ์ปค์Šคํ…€ ํƒœ์Šคํฌ๋กœ ๋ฐ˜๋ณต ์ž‘์—… ์ž๋™ํ™”! ๐ŸŽฏ
  • CI/CD ํŒŒ์ดํ”„๋ผ์ธ์— ์ตœ์ ํ™” ๊ณผ์ • ๋„ฃ๊ธฐ! ๐Ÿ”ง๐Ÿค–

๐Ÿ’ก ๋ฆฌ์†Œ์Šค์™€ ์ฝ”๋“œ ๊ด€๋ฆฌ

  • ์ด๋ฏธ์ง€์™€ ๋ฆฌ์†Œ์Šค๋Š” ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ ๋‹จ๊ณ„์—์„œ๋ถ€ํ„ฐ ์ตœ์ ํ™”! ๐ŸŒฑ
  • ์ •๊ธฐ์ ์ธ ํ”„๋กœํŒŒ์ผ๋ง(Profiling)์œผ๋กœ ๋ณ‘๋ชฉ์  ๋ฐœ๊ฒฌ! ๐Ÿ”ฌ

๐Ÿ’ก ๋ฐฐํฌ ์ „ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ๋งŒ๋“ค์–ด ๋‘๊ธฐ

  • ํฌ๊ธฐ ์ค„์ด๊ธฐ, ์ตœ์ ํ™”, ์•ˆ์ •์„ฑ ๊ฒ€์‚ฌ ๋ถ„๋ฆฌ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ์ถ”์ฒœ! โœ…๐Ÿ”

๐ŸŽฏ ๋์œผ๋กœ! ๐Ÿ’ช

์•ฑ ์„ฑ๋Šฅ๊ณผ ํฌ๊ธฐ, ๋ฐฐํ„ฐ๋ฆฌ ์†Œ๋ชจ๋ฅผ ๊ณ ๋ คํ•œ ๋นŒ๋“œ ์ตœ์ ํ™”๋Š” ๋‹จ์ˆœํ•œ ‘๋ˆˆ๋จผ ์ž‘์—…’์ด ์•„๋‹ˆ์—์š”! ๐Ÿง™‍โ™‚๏ธโœจ ์‚ฌ์šฉ์ž๋“ค์ด ‘๋น ๋ฅด๊ณ  ๊ฐ€๋ฒผ์šด’ ์•ฑ์„ ๋งŒ๋‚ ์ˆ˜๋ก ์ข‹์•„ํ•˜๋Š” ๋งˆ์Œ์€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ƒ๊ธฐ๋‹ˆ๊นŒ์š”. ๐Ÿ’–๐Ÿ“ฑ

์ด ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๋งค ์ˆœ๊ฐ„ ์กฐ๊ธˆ์”ฉ ๋” ๋‚˜์€ ์•ฑ์„ ๋งŒ๋“ค์–ด ๋ณด์„ธ์š”! ๐Ÿš€๐Ÿ”ฅ๐Ÿ’ฅ


๐Ÿ“ ๋งˆ๋ฌด๋ฆฌ! ๋” ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ๋‹ค๋ฉด?

  • ๊ด€๋ จ ๋ฌธ์„œ, ์ถ”์ฒœ ๋งํฌ, ์ปค๋ฎค๋‹ˆํ‹ฐ ๋งํฌ๋„ ๊ณง ์ด์–ด์„œ ์•Œ๋ ค๋“œ๋ฆด ์˜ˆ์ •์ž…๋‹ˆ๋‹ค! ๐ŸŒโœ๏ธ
  • ์„ฑ๋Šฅ ๊ฐœ์„ ๊ณผ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ๊พธ์ค€ํ•œ ๊ณต๋ถ€์™€ ์‹ค์ฒœ์ด ์ œ์ผ ์ค‘์š”! ๐ŸŽ“๐Ÿ’ก

๊ทธ๋Ÿผ, ์ฆ๊ฑฐ์šด ์•ฑ ๊ฐœ๋ฐœ ๋ผ์ดํ”„ ๋˜์‹œ๊ณ , ์˜ค๋Š˜๋„ ํ›Œ๋ฅญํ•œ ์•ฑ ๋งŒ๋“ค์–ด๋ณด์„ธ์š”! ์—ฌ๋Ÿฌ๋ถ„์˜ ์„ฑ๊ณต์„ ์‘์›ํ•ฉ๋‹ˆ๋‹ค! ๐Ÿ™Œ๐ŸŽ‰โœจ


[๋]

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

 

 

์Šคํฌ๋ฆฝํŠธ ๋””๋ฒ„๊น…์˜ ์ •์„๋ถ€ํ„ฐ ์‘์šฉ๊นŒ์ง€

์ œ๋ชฉ: ์Šคํฌ๋ฆฝํŠธ ๋””๋ฒ„๊น…์˜ ์ •์„๋ถ€ํ„ฐ ์‘์šฉ๊นŒ์ง€๐Ÿงณ ์—ฌํ–‰์ด ์•„๋‹Œ, ์Šคํฌ๋ฆฝํŠธ ๋””๋ฒ„๊น…์˜ ์„ธ๊ณ„๋กœ ๋– ๋‚˜๋ณผ๊นŒ์š”? ๐Ÿš€ํ˜น์‹œ ์ฝ”๋“œ๊ฐ€ ๊ผฌ์—ฌ์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๋ง‰๋ง‰ํ–ˆ๋˜ ์  ์žˆ์œผ์‹ ๊ฐ€์š”? ๋˜๋Š” ๋””๋ฒ„๊น…์ด ๋ณต์žกํ•˜๊ณ  ์–ด

5.asmrbita.com

๋ฐ˜์‘ํ˜•