์ถ์ฒ
ChatGPT
์๋๋ก์ด๋ ๋น๋ ๊ณผ์ ์ ์ฃผ์ ๋จ๊ณ
1. ํด๋ฆฐ Clean
๋ชฉ์
- ์ด์ ๋น๋์ ๊ฒฐ๊ณผ๋ฌผ์ ์ญ์ ํ์ฌ ์๋ก์ด ๋น๋๋ฅผ ์ค๋นํ๋ค.
์์
- ์ด์ ๋น๋์์ ์์ฑ๋ ์ค๊ฐ ํ์ผ ๋ฐ ์ถ๋ ฅ๋ฌผ์ ์ญ์ ํ๋ค.
- 'build/' ๋๋ ํ ๋ฆฌ ๋ด์ ๋ชจ๋ ํ์ผ์ ์ ๊ฑฐํด ๊นจ๋ํ ์ํ์์ ๋น๋๋ฅผ ์์ํ ์ ์๋๋ก ํ๋ค
2. ์์ค ์ฝ๋ ์ปดํ์ผ Compile
Java์ Kotlin ์ปดํ์ผ
- Java: '.java' ํ์ผ์ '.class' ํ์ผ๋ก ์ปดํ์ผํ๋ค.
- Kotlin : '.kt' ํ์ผ์ '.class' ํ์ผ๋ก ์ปดํ์ผํ๋ค.
- ์ด ๊ณผ์ ์ JVM ๋ฐ์ดํธ์ฝ๋๋ฅผ ์์ฑํ๋ ๋จ๊ณ์ด๋ค.
์ฃผ์ ๋๊ตฌ
- Java ์ปดํ์ผ๋ฌ ('javac')
- Kotlin ์ปดํ์ผ๋ฌ ('kotlinc')
3. ๋ฆฌ์์ค ์ฒ๋ฆฌ Resource Processing
๋ชฉ์
- ์ฑ์ ๋ฆฌ์์ค ํ์ผ(์ด๋ฏธ์ง, ๋ ์ด์์, ๋ฌธ์์ด ๋ฑ)์ ์ปดํ์ผํด ์ฌ์ฉ ๊ฐ๋ฅํ ํ์์ผ๋ก ๋ณํํ๋ค.
์์
- AAPT(Android Asset Packaing Tool)๋ฅผ ์ฌ์ฉํด 'res/' ๋๋ ํ ๋ฆฌ์ ์๋ XML ํ์ผ, ์ด๋ฏธ์ง, ๋ ์ด์์ ๋ฑ์ ์ฒ๋ฆฌํ๋ค.
- ๋ฆฌ์์ค ID๋ฅผ ์์ฑํด R.java์ ํฌํจํ๋ค.
- ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ '.flat' ํ์ผ๋ก ๋ณํํ๋ค.
4. ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ๋ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ Data Binding and Processing
๋ชฉ์
- ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ฌ์ฉํ ๊ฒฝ์ฐ, XML ๋ ์ด์์์์ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ํด๋์ค ์์ฑ
์์
- ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ์ฌ์ฉ ์, 'ViewModel'์ด๋ 'LiveData'์์ ๋ฐ์ธ๋ฉ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
- ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ๋ทฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐํ๋ ์ฝ๋๋ฅผ ์๋์ผ๋ก ์์ฑํ๋ค.
5. R8 ํ๋ก๊ฐ๋ ๋๋ ํ R8 ProGuard Obfuscation
๋ชฉ์
- ์ฝ๋ ๋๋ ํ ๋ฐ ์ต์ ํ๋ฅผ ํตํด ๋ณด์์ ๊ฐํํ๊ณ , ์ฑ ํฌ๊ธฐ๋ฅผ ์ค์ธ๋ค.
์์
- ProGuard ๋๋ R8์ ์ฌ์ฉํด ์ฝ๋ ๋๋ ํ ๋ฐ ์ต์ ํ๋ฅผ ์ํํ๋.
- ์ฌ์ฉํ์ง ์๋ ์ฝ๋์ ๋ฆฌ์์ค๋ฅผ ์ ๊ฑฐํด APK ํ์ผ ํฌ๊ธฐ๋ฅผ ์ค์ธ๋ค.
- ProGuard ๊ตฌ์ฑ ํ์ผ์์ ์ ์ํ ๊ท์น์ ๋ฐ๋ผ ๋๋ ํ ๋ฐ ์ต์ ํ ์์ ์ ์ํํ๋ค.
6. Dexing ๋ฐ์ดํธ์ฝ๋ ๋ณํ
๋ชฉ์
- JVM ๋ฐ์ดํธ์ฝ๋๋ฅผ Android ๋๋ฐ์ด์ค์์ ์คํ ๊ฐ๋ฅํ DEX ํฌ๋งท์ผ๋ก ๋ณํํ๋ค.
์์
- D8 ๋๊ตฌ๋ฅผ ์ฌ์ฉํด '.class' ํ์ผ์ '.dex' ํ์ผ๋ก ๋ณํํ๋ค.
- ๋ค์ค DEX๋ฅผ ์ง์ํด ๋ฉํฐ DEX ํ์ผ์ ์์ฑํ ์ ์๋ค.
- R8 ๋๊ตฌ๊ฐ ์์ฉ๋ ๊ฒฝ์ฐ ์ฝ๋ ์ต์ ํ์ ๋๋ ํ๋ฅผ ๋ณํํ ์ ์๋ค.
7. ํจํค์ง Packaging
๋ชฉ์
- ๋ชจ๋ ์ฝ๋์ ๋ฆฌ์์ค๋ฅผ ํ๋์ APK ํ์ผ๋ก ํจํค์งํ๋ค.
์์
- 'apkbuilder' ๋๊ตฌ๋ฅผ ์ฌ์ฉํด '.dex' ํ์ผ, ๋ฆฌ์์ค, ๋งค๋ํ์คํธ, ๋ค์ดํฐ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ์ ํ๋์ APK ํ์ผ๋ก ๋ณํฉํ๋ค.
- AndroidManifest.xml์ ์ ์๋ ์ ๋ณด์ ๋ฐ๋ผ APK ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ฑํ๋ค.
- ์๋ช ๋ฐ ์ ๋ ฌ(Align) ๊ณผ์ ์ ํตํด APK๋ฅผ ์ต์ ํํ๋ค.
8. ์๋ช Signing
๋ชฉ์
- APK ํ์ผ์ ๋์งํธ ์๋ช ์ ํด ์ฑ์ ์ถ์ฒ์ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๋ค.
์์
- debug ๋น๋์์๋ ๋๋ฒ๊ทธ ํค์คํ ์ด๋ฅผ ์ฌ์ฉํด ์๋ ์๋ช ํ๋ค.
- release ๋น๋์์๋ ๊ฐ๋ฐ์๊ฐ ์ ๊ณตํ ๋ฆด๋ฆฌ์ฆ ํค์คํ ์ด๋ฅผ ์ฌ์ฉํด ์๋ช ํ๋ค.
- APK ์๋ช ์ Google Play Store ๋ฐฐํฌ์ ํ์์ ์ด๋ค.
9. ์ ๋ ฌ Aligning
๋ชฉ์
- APK ํ์ผ์ ๋์ดํฐ ์ ๋ ฌ์ ํตํด ์ฑ๋ฅ์ ์ต์ ํํ๋ค.
์์
- 'zipalilgn' ๋๊ตฌ๋ฅผ ์ฌ์ฉํด APK์ ZIP ์์ถ ๋ฐ์ดํฐ๋ฅผ 4๋ฐ์ดํธ ๊ฒฝ๊ณ๋ก ์ ๋ ฌํ๋ค.
- ๋์คํธ I/O ์ฑ๋ฅ์ ํฅ์์์ผ ์ฑ ์คํ ์๋๋ฅผ ์ต์ ํํ๋ค.
10. ๋น๋ ๊ฒฐ๊ณผ๋ฌผ ์์ฑ Ouput Generation
๋ชฉ์
- ์ต์ข APK ํ์ผ์ ์์ฑํด ๋ฐฐํฌ ์ค๋น๋ฅผ ์๋ฃํ๋ค.
์์
- Debug ๋ฐ Release ๋ฒ์ ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋น๋ ์ถ๋ ฅ๋ฌผ์ ์์ฑํ๋ค.
- APK ํ์ผ์ 'build/outputs/apk/' ๋๋ ํ ๋ฆฌ์ ์ ์ฅ๋๋ค.
11. ํ ์คํธ Test
๋ชฉ์
- ๋ค์ํ ํ ์คํธ๋ฅผ ํตํด ์ฑ์ ํ์ง์ ๊ฒ์ฆํ๋ค.
์์
- ๋จ์ ํ ์คํธ(Unit Test) : ๋น์ฆ๋์ค ๋ก์ง์ด ์์๋๋ก ์๋ํ๋์ง ํ ์คํธ
- UI ํ ์คํธ(Instrumented Test) : ์ค์ ๊ธฐ๊ธฐ ๋๋ ์ ๋ฎฌ๋ ์ดํฐ์์ ์ฑ์ UI๋ฅผ ํ ์คํธ
- Lint ๊ฒ์ฆ : ์ฝ๋ ํ์ง ๋ฐ ์คํ์ผ ๊ฐ์ด๋๋ฅผ ์ ๊ฒ.
12. ๋ฐฐํฌ Deplyment
- ๊ด๋ จ ๊ธ -> [Android] ์ฑ ๋น๋ ๊ณผ์ ์ ๋ฐฐํฌ๋ ๋ค์ด๊ฐ ์๋ค๊ณ + ๋น๋ ๊ณผ์ ์์์ ๋ฐฐํฌ ๋จ๊ณ
๋ชฉ์
- ๋น๋๋ APK ํ์ผ์ ๋ค์ํ ํ๊ฒฝ์ ๋ฐฐํฌํ๋ค.
์์
- ๋ก์ปฌ ํ ์คํธ : Android Emulator ๋๋ ์ฐ๊ฒฐ๋ ์ค์ ๊ธฐ๊ธฐ์ APK๋ฅผ ์ค์นํ๊ณ ํ ์คํธ
- CI/CD ํ์ดํ๋ผ์ธ : Jenkins, GitHub Actions ๋ฑ์ ์ฌ์ฉํด ์๋ํ๋ ๋น๋ ๋ฐ ๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ์ค์
- Google Play Store : ์ต์ข APK๋ฅผ Google Play Store์ ์ ๋ก๋ํ์ฌ ๋ฐฐํฌ
๊ฒฐ๋ก
Android ์ฑ ๊ฐ๋ฐ์์์ '๋น๋' ๊ณผ์ ์ ๋งค์ฐ ๋ณต์กํ๊ณ ๋ค์ํ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ๊ฐ ๋จ๊ณ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ, ๋ณด์, ๊ธฐ๋ฅ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ํ์์ ์ด๋ค. Gradle ๋น๋ ์์คํ ์ ์ด๋ฌํ ๊ณผ์ ์ ์๋ํํ๊ณ , ๊ฐ๋ฐ์๊ฐ ๋ ์ฝ๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์๋๋ก ๋๋๋ค.
์์ฝ
- ์์ค ์ฝ๋ ์ปดํ์ผ: Java์ Kotlin ์์ค ์ฝ๋๋ฅผ JVM ๋ฐ์ดํธ์ฝ๋๋ก ์ปดํ์ผํ๋ค.
- ๋ฆฌ์์ค ์ฒ๋ฆฌ: XML, ์ด๋ฏธ์ง ๋ฑ ์ฑ ๋ฆฌ์์ค๋ฅผ ์ฒ๋ฆฌํ๋ค.
- DEX ๋ณํ: JVM ๋ฐ์ดํธ์ฝ๋๋ฅผ DEX ํฌ๋งท์ผ๋ก ๋ณํํ๋ค.
- ํจํค์ง ๋ฐ ์๋ช : ๋ชจ๋ ํ์ผ์ APK๋ก ํจํค์งํ๊ณ , ๋์งํธ ์๋ช ํ๋ค.
- ๋ฐฐํฌ ๋ฐ ํ ์คํธ: APK๋ฅผ ํ ์คํธํ๊ณ ๋ฐฐํฌ ์ค๋น๋ฅผ ์๋ฃํ๋ค.
์ด๋ฌํ ๋จ๊ณ๋ค์ Android ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ต์ข ์ฌ์ฉ์์๊ฒ ๋๋ฌํ๊ธฐ ์ ๊ฑฐ์น๋ ํ์์ ์ธ ๊ณผ์ ์ด๋ฉฐ, ๊ฐ ๋จ๊ณ๋ ์ฑ์ ์์ ์ฑ๊ณผ ํ์ง์ ์ ์งํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํ๋ค.
'๋น ๊ตฌ๋ฉ ์ฑ์ฐ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[OS] 32๋นํธ์ 64๋นํธ OS์ ์ฐจ์ด์ (0) | 2024.08.02 |
---|---|
[Android] ์ฑ ๋น๋ ๊ณผ์ ์ ๋ฐฐํฌ๋ ๋ค์ด๊ฐ ์๋ค๊ณ + ๋น๋ ๊ณผ์ ์์์ ๋ฐฐํฌ ๋จ๊ณ (0) | 2024.08.02 |
[Android] Android ์ ํ๋ฆฌ์ผ์ด์ ์ปดํ์ผ ๋ฐ ํจํค์ง ๊ณผ์ (0) | 2024.08.02 |
[Android] DEX (0) | 2024.08.02 |
[OOP] ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ Object-Oriented Programming, OOP (0) | 2024.08.02 |