์๋๋ก์ด๋ ํ๋ก์ ํธ ๋น๋ ๋ฐ ์คํ ๊ณผ์
1. ์์ค ์ฝ๋ ์์ฑ
๊ฐ๋ฐ์๋ Java/Kotlin ์์ค ์ฝ๋, XML ๋ ์ด์์ ํ์ผ, ๋ฆฌ์์ค ํ์ผ ๋ฑ์ ์์ฑํฉ๋๋ค.
2. ์ปดํ์ผ ํ์
์ด ๋จ๊ณ์์๋ ์์ค ์ฝ๋์ ๋ฆฌ์์ค ํ์ผ์ด ์ปดํ์ผ๋์ด ์ฑ์ ์คํํ ์ ์๋ ๋ฐ์ด๋๋ฆฌ ํํ๋ก ๋ณํ๋ฉ๋๋ค.
์ธ๋ถ ๋จ๊ณ:
- ํ๋ฆฌํ๋ก์ธ์ฑ:
- Gradle์ด ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ๊ณ ํ๋ก์ ํธ์ ์ค์ ์ ๊ตฌ์ฑํฉ๋๋ค.
- ๋ฆฌ์์ค ์ปดํ์ผ:
- XML ๋ ์ด์์ ํ์ผ, ๋งค๋ํ์คํธ ํ์ผ, ์ด๋ฏธ์ง, ๋ฌธ์์ด ๋ฆฌ์์ค ๋ฑ์ด AAPT(Android Asset Packaging Tool)์ ์ํด ์ฒ๋ฆฌ๋ฉ๋๋ค.
- R.java ํ์ผ์ด ์์ฑ๋์ด ๊ฐ ๋ฆฌ์์ค์ ๋ํ ๊ณ ์ ํ ID๊ฐ ํฌํจ๋ฉ๋๋ค.
- ์์ค ์ฝ๋ ์ปดํ์ผ:
- Java/Kotlin ์์ค ์ฝ๋๊ฐ ๋ฐ์ดํธ์ฝ๋(.class ํ์ผ)๋ก ์ปดํ์ผ๋ฉ๋๋ค.
- Kotlin ํ์ผ์ ๋จผ์ Kotlin ์ปดํ์ผ๋ฌ์ ์ํด ๋ฐ์ดํธ์ฝ๋๋ก ๋ณํ๋ ํ, Java ์ปดํ์ผ๋ฌ์ ์ํด ์ถ๊ฐ ์ฒ๋ฆฌ๋ฉ๋๋ค.
- ๋ฐ์ดํธ์ฝ๋ ๋ณํ ๋ฐ ๋ค๋ฌ๊ธฐ:
- ProGuard๋ R8 ๊ฐ์ ๋๊ตฌ๊ฐ ๋ฐ์ดํธ์ฝ๋๋ฅผ ์ต์ ํํ๊ณ , ๋๋ ํํ๋ฉฐ, ๋ถํ์ํ ์ฝ๋๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
- DEX ํ์ผ ์์ฑ:
- ์ปดํ์ผ๋ ๋ฐ์ดํธ์ฝ๋๊ฐ dx ๋๋ d8 ๋๊ตฌ์ ์ํด Dalvik ๋ฐ์ดํธ์ฝ๋(.dex ํ์ผ)๋ก ๋ณํ๋ฉ๋๋ค.
- APK ๋น๋:
- ๋ชจ๋ ์ปดํ์ผ๋ ํ์ผ(.dex ํ์ผ, ๋ฆฌ์์ค ํ์ผ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ)์ด ํ๋์ APK ํ์ผ๋ก ํจํค์ง๋ฉ๋๋ค.
- APK ํ์ผ์ด ์๋ช ๋ฉ๋๋ค. ๋๋ฒ๊ทธ ๋น๋๋ ๋๋ฒ๊ทธ ํค๋ก ์๋ช ๋๊ณ , ๋ฆด๋ฆฌ์ฆ ๋น๋๋ ๋ฆด๋ฆฌ์ฆ ํค๋ก ์๋ช ๋ฉ๋๋ค.
3. ๋ฐํ์
์ด ๋จ๊ณ์์๋ ์ปดํ์ผ๋ ์ฑ์ด ์ค์ ๋ก ๋๋ฐ์ด์ค์์ ์คํ๋ฉ๋๋ค.
์ธ๋ถ ๋จ๊ณ:
- APK ์ค์น:
- ๋น๋๋ APK ํ์ผ์ด ์๋ฎฌ๋ ์ดํฐ๋ ์ค์ ๋๋ฐ์ด์ค์ ์ค์น๋ฉ๋๋ค.
- ์ฑ ์คํ:
- ์ค์น๋ ์ฑ์ด ๋๋ฐ์ด์ค์์ ์คํ๋ฉ๋๋ค.
- ๋ฐํ์ ํ๊ฒฝ(Dalvik ๋๋ ART)์ด APK ํ์ผ์ .dex ํ์ผ์ ๋ก๋ํ๊ณ , ์คํํฉ๋๋ค.
- ์ฑ์ ์๋ช
์ฃผ๊ธฐ ๊ด๋ฆฌ:
- ์๋๋ก์ด๋ ์์คํ ์ด ์ฑ์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ์๋ฅผ ๋ค์ด, onCreate(), onStart(), onResume() ๊ฐ์ ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋๊ฐ ํธ์ถ๋ฉ๋๋ค.
์ ์ฒด ๋น๋ ๋ฐ ์คํ ํ๋ฆ
- ์์ค ์ฝ๋ ์์ฑ
- Java/Kotlin ์ฝ๋, XML ๋ ์ด์์, ๋ฆฌ์์ค ํ์ผ ์์ฑ.
- ์ปดํ์ผ ํ์
- ํ๋ฆฌํ๋ก์ธ์ฑ (Gradle ์ค์ ์ฝ๊ธฐ)
- ๋ฆฌ์์ค ์ปดํ์ผ (AAPT๋ฅผ ์ฌ์ฉํ์ฌ R.java ์์ฑ)
- ์์ค ์ฝ๋ ์ปดํ์ผ (Java/Kotlin ์ปดํ์ผ๋ฌ ์ฌ์ฉ)
- ๋ฐ์ดํธ์ฝ๋ ์ต์ ํ (ProGuard/R8)
- DEX ํ์ผ ์์ฑ (dx/d8 ๋๊ตฌ ์ฌ์ฉ)
- APK ๋น๋ ๋ฐ ์๋ช
- ๋ฐํ์
- APK ์ค์น (์๋ฎฌ๋ ์ดํฐ/๋๋ฐ์ด์ค)
- ์ฑ ์คํ (Dalvik/ART์์ DEX ํ์ผ ๋ก๋)
- ์ฑ์ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ (์๋๋ก์ด๋ ์์คํ )