๊ฐ๋ฐ์ ํ์! ์๋๋ก์ด๋ ์ฑ ๋น๋ ์ต์ ํ ์๋ฒฝ ๊ฐ์ด๋ ๐๐ฑโจ
์๋ ํ์ธ์, ์ฑ ๊ฐ๋ฐ์ ์ฌ๋ฌ๋ถ! ์ค๋์ ์๋๋ก์ด๋ ์ฑ์ ๋ง๋ค ๋ ํ์๋ก ๋ง์คํฐํด์ผ ํ ‘๋น๋ ์ต์ ํ’์ ๊ดํ ์ดํน๊ธ ๊ฐ์ด๋๋ฅผ ์ค๋นํ์ด์. ๐๐ง๐ก ํน์ “์ฑ ์ฑ๋ฅ์ด ๋๋ ค์ ์ฌ์ฉ์ ๋ถ๋ง์ด ์์ด๋ฉด ์ด์ฉ์ง?” ๐ค ๋๋ “๋ฐฐํฌ ํ ์ฑ ํฌ๊ธฐ ๋๋ฌด ํฌ๋ฉด ์ด์บ ํ์ง?” ๐ต ๋ผ๊ณ ๊ณ ๋ฏผํ๋ ์ ์์ผ์ ๊ฐ์? ๊ทธ ๋ต, ๋ฐ๋ก ์ฌ๊ธฐ ์์ต๋๋ค! ๐๐ฏ
๊ทธ๋ผ ์ง๊ธ๋ถํฐ ‘๊ฐ๋ฐ์ ํ์ ์๋๋ก์ด๋ ์ฑ ๋น๋ ์ต์ ํ ์๋ฒฝ ๊ฐ์ด๋’๋ฅผ ์ฐจ๊ทผ์ฐจ๊ทผ ์ดํด๋ณผ๊ฒ์! ๐๐ฑ๐ฅ
๐ฅ ์ ๋น๋ ์ต์ ํ๊ฐ ์ค์ํ๊ฐ์? ๐
๐ก ์ต์ ํ ์์ด ๊ฐ๋ฐํ๋ฉด ์ด๋ฐ ๋ฌธ์ ๋ค์ด!
- ์ฑ ์คํ ์๋ ์ง์ฐ โฑ๏ธ๐ถโ๏ธ
- 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