1. ํ๋ก์ ํธ ๋น๋
: Android ๋น๋ ์์คํ ์ ์ฑ ๋ฆฌ์์ค ๋ฐ ์์ค ์ฝ๋๋ฅผ ์ปดํ์ผํ๊ณ ๋ฐฐํฌํ ์ ์๋ APK๋ก ํจํค์งํจ
- AndroidStudio๋ ๊ณ ๊ธ ๋น๋ ํด ํท์ธ Gradle์ ์ฌ์ฉํด ๋น๋ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ๊ณ ๊ด๋ฆฌํจ
1) ๋น๋ ํ๋ก์ธ์ค์ ๊ตฌ์กฐ

2) ์ปดํ์ผ๋ฌ์ ์ญํ
: ์์ค์ฝ๋๋ฅผ DEX(Dalvik Executable) ํ์ผ๋ก ๋ณํํ๊ณ ๊ทธ ์ธ ๋ชจ๋ ๊ฒ์ ์ปดํ์ผ ๋ ๋ฆฌ์์ค๋ก ๋ณํ
- aapt ๋๊ตฌ๋ ๋ฆฌ์์ค ํ์ผ(/res ํด๋ ํ์ ํ์ผ)๋ค์ ์ปดํ์ผ ๋ ๋ฆฌ์์ค (R ํด๋์ค ํ์ผ๊ณผ ํจํค์ง๋ ๋ฆฌ์์ค ํ์ผ)๋ก ๋ณํ
- kotlinc ์ปดํ์ผ๋ฌ๋ kotlin ์์ค ํ์ผ(์๋์ผ๋ก ์์ฑ๋ R.java์ ์ฌ์ฉ์๊ฐ ์ ์ํ .kt ํ์ผ)์ kotlin ํด๋์ค ํ์ผ(.class ํ์ฅ์)๋ก ๋ณํ
- dx ์๋๋ก์ด๋ ๊ฐ๋ฐ๋๊ตฌ๋ ์ปดํ์ผ๋ kotlin ํด๋์ค ํ์ผ์ DEXํ์ผ (.dex ํ์ฅ์)๋ก ๋ณํ์ํด
- ์ด DEXํ์ผ์๋ Android๊ธฐ๊ธฐ์์ ์คํ๋๋ ๋ฐ์ดํธ์ฝ๋๊ฐ ํฌํจ๋จ
3) APKPackager
: DEXํ์ผ๊ณผ ์ปดํ์ผ๋ ๋ฆฌ์์ค๋ฅผ ๋จ์ผ APK์ ๊ฒฐํฉํจ
- ์ฑ์ Android ๊ธฐ๊ธฐ์ ์ค์นํ๊ณ ๋ฐฐํฌํ๊ธฐ ์ํด APKPackager๋ ๋๋ฒ๊ทธ ๋๋ ๋ฆด๋ฆฌ์ค ํค์คํ ์ด๋ฅผ ์ฌ์ฉํด APK๋ฅผ ์๋ช
(1) ๋๋ฒ๊ทธ ๋ฒ์ ์ ์ฑ (= ํ ์คํธ ๋ฐ ํ๋กํ์ผ๋ง ์ ์ฉ์ ์ฑ)
- ๋น๋ ์ค์ธ ๊ฒฝ์ฐ์๋, ํจํค์ ๊ฐ ๋๋ฒ๊ทธ ํค์คํ ์ด๋ก ์ฑ์ ์๋ช
ํจ
- Android Studio๋ ๋๋ฒ๊ทธ ํค์คํ ์ด๋ก ์ ํ๋ก์ ํธ๋ฅผ ์๋์ผ๋ก ๊ตฌ์ฑํจ
(2) ๋ฆด๋ฆฌ์ค ๋ฒ์ ์ ์ฑ (= ์ธ๋ถ์ ๋ฆด๋ฆฌ์คํ ์ฑ)
- ๋น๋ ์ค์ธ ๊ฒฝ์ฐ์๋, ํจํค์ ๊ฐ ๋ฆด๋ฆฌ์ค ํค์คํ ์ด๋ก ์ฑ์ ์๋ช ํจ
(3) ์ต์ข APK๋ฅผ ์์ฑํ๊ธฐ ์
- ํจํค์ ๋ ๊ธฐ๊ธฐ์์ ์คํ๋ ๋ ๋ ์ ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋๋ก ์ฑ์ ์ต์ ํํ๊ธฐ ์ํด zipalign ๋๊ตฌ๋ฅผ ์ฌ์ฉ
2. ๋น๋ ๊ตฌ์ฑ ํ์ผ
- ์ ํ๋ก์ ํธ ์์ ์, Android Studio๊ฐ ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ์์ฑํ๊ณ , ๋น๋ ๊ตฌ์ฑ ํ์ผ (build.gradle(project level), settings.gradle, build.gradle(module level) ๋ฑ)์ ์๋์ผ๋ก ๋ง๋ค๊ณ , ์ ํฉํ ๊ธฐ๋ณธ๊ฐ์ ๋ฐ๋ผ ํ์ผ์ ๊ฐ์ ์ฑ์

1) build.gradle(Project level)
: ๋ฃจํธ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์ ์๋ ์ต์์ build.gradle ํ์ผ์ ํ๋ก์ ํธ์ ๋ชจ๋ ๋ชจ๋์ ์ ์ฉ๋๋ ๋น๋ ๊ตฌ์ฑ์ ์ ์
buildscript{
repositories{
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
}
}
allprojects{
repositories{
google()
jcenter()
}
}
task clean(type: Delete){
delete rootProject.buildDir
}
// buildscript{ } ๋ธ๋ก : ๋ชจ๋ ๋ชจ๋์ ๊ณตํต๋๋ Gradle ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ข ์์ฑ์ ์ ์
// allprojects{ } ๋ธ๋ก : ํ ํ๋ก์ ํธ์ ๋ชจ๋ ๋ชจ๋์์ ์ฌ์ฉ๋๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ข ์์ฑ์ ์ ์
2) settings.gradle
: ์ฑ์ ๋น๋ํ ๋ ์ด๋ค ๋ชจ๋์ ํฌํจํ ์ง๋ฅผ Gradle์ ์๋ ค์ค
- ๋๋ถ๋ถ์ ํ๋ก์ ํธ์์ ์ด ํ์ผ์ ๊ฐ๋จํจ. (๋ค์ ์ฝ๋๋ง์ ํฌํจํจ)
include ':app'
3) build.gradle(Module level)

//apk๋ฅผ ๋ฐ๋ก ๋นผ๋ ค๋ฉด
build > build APK > build APK > locate ๋๋ฅด๋ฉด ํ์ผ์ด ๋์ด