[Android] ์๋๋ก์ด๋ ์ดํด
- -
์๋๋ก์ด๋ ๋ชจ๋ ๊ธ์ ๊ฐ์ธ ๊ณต๋ถ, ๊ฐ๋ฐ ๋ชฉ์ ์ด๋ผ ๊ฐ๋ ์ ๋ํ ์ค๋ช ์ด ์ ๋๋ก ๋ค์ด๊ฐ์ง ์์ผ๋, ์ฐธ๊ณ ํ์๊ธธ ๋ฐ๋๋๋ค.
์๋๋ก์ด๋
- ๋ฒ์ ๋ณ๋ก ๋ณด์ํ ๊ฒ๋ค์ด ๋ค๋ฆ
์๋๋ก์ด๋ ์ด์์ฒด์
- ๊ตฌ๊ธ์์ ๊ฐ๋ฐํ ๋ฆฌ๋ ์ค ๊ธฐ๋ฐ ์คํ ์์ค ํ๋ซํผ.(์ปค๋๊ธฐ๋ฐ ์คํ์์ค ํ๋ซํผ)
๋ชจ๋ฐ์ผ ์ด์์ฒด์ ์ญํ
- ๊ตฌ๊ธ ํ๋ ์ด ์คํ ์ด ๋ฐ ๊ธฐํ ๋ง์ผ ํ๋ ์ด์ค๋ฅผ ํตํ ํ์ฌ ์ฑ ์ค์น๋ฅผ ์ง์ํจ
- iot, ๋๋ก , tv ๋ฐ ๊ธฐํ ์ค๋งํธ ๋๋ฐ์ด์ค ๋ฑ ์ต์ ๊ธฐ์ ๋ค๋ ๋ค ๋ฆฌ๋ ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํจ.
์๋๋ก์ด๋ ์ด์์ฒด์ ๊ตฌ์กฐ(์ํคํ ์ณ)
์ ์ผ ์๋๋ถํฐ
- ๋ฆฌ๋ ์ค ์ปค๋
- HAL(ํ๋์จ์ด ์ถ์ํ ๊ณ์ธต)
- Android ๋ฐํ์
- ๋ค์ดํฐ๋ธ C/C++๋ผ์ด๋ธ๋ฌ๋ฆฌ
- Java API ํ๋์ ์ํฌ
- ์์คํ ์ฑ
์๋๋ก์ด๋ ์คํํ์ผ ->apk์.
c/c++ ์ Livraries์์ ์์. ->.so ํ์ผ
์ฑ ์ปดํฌ๋ํธ (๊ตฌ์ฑ์์)
- ์ฑ ์ปดํฌ๋ํธ๋ ์๋๋ก์ด๋ ์ฑ์ ํ์์ ์ธ ๊ตฌ์ฑ ์์๋ก ๊ฐ ๋ ๋ฆฝ๋ ํํ๋ก ์กด์ฌํ๋ฉฐ ์ ํด์ง ์ญํ ์ ์ํ
- ๊ฐ ๊ตฌ์ฑ์์๋ ์์คํ ์ด๋ ์ฌ์ฉ์๊ฐ ์ฑ์ ๋ค์ด์ฌ ์ ์๋ ์ง์ ์
- ์ธํ ํธ๋ ๋ค๋ฅธ ์ฑ ์ปดํฌ๋ํธ๋ก๋ถํฐ ์์ ์ ์์ฒญํ๋๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ฉ์์ง ๊ฐ์ฒด
์กํฐ๋นํฐ
- ๋์ ๋ณด์ด๋ ํ๋ฉด์
- ์ฌ์ฉ์์ ์ํธ์์ฉํ๊ธฐ ์ํ ์ง์ ์
- ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ํฌํจํ ํ๋ฉด ํ๋๋ฅผ ๋ํ๋
- ๊ฐ ์ญํ ๋ง๋ค ์กํฐ๋นํฐ ํ๋ ์กด์ฌ
- ์ด๋ ํ ์ฑ์์ ํ์ฉํ๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ์ฑ์์ ์ด์ ๊ฐ์ ์กํฐ๋นํฐ ์ค ํ๋๋ฅผ ๋์ ์ํฌ ์ ์์(์ฐ๊ฒฐ๋์ด์์)
์๋น์ค
- ๋ฐฑ ๊ทธ๋ผ์ด๋์์ ์ฑ์ ๊ณ์ ์คํํ๊ธฐ ์ํ ๋ค๋ชฉ์ ์ง์ ์
- ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI)๋ ์ ๊ณตํ์ง ์์
-์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ์ฑ์ ์๋ ๋์์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์์ ์ ์ฌ์ํ๊ฑฐ๋, ์ฌ์ฉ์ ์กํฐ๋นํฐ ๊ฐ์ ์ํธ์์ฉ์ ์ฐจ๋จํ์ง ์๊ณ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์.
๋ธ๋ก๋์บ์คํธ ๋ฆฌ์๋ฒ
- ์์คํ ์ด ์ ๊ธฐ์ ์ธ ์ฌ์ฉ์ ํ๋ก์ฐ ๋ฐ์์ ์ด๋ฒคํธ๋ฅผ ์ฑ์ ์ ๋ฌํ๋๋ก ์ง์ํ๋ ์ปดํฌ๋ํธ
- ๋๋ค์์ ๋ธ๋ก๋์บ์คํธ๋ ์์คํ ๋ฐ์(ํ๋ฉด ๊บผ์ง, ๋ฐฐํฐ๋ฆฌ ๋ถ์กฑ, ์ฌ์ง ์บก์ณ ์๋ฆผ ๋ฑ)
- ์ผ๋ฐ ์ฑ๋ ๋ธ๋ก๋ ์บ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ํ์ํ์ง ์์ง๋ง, ์ํ ํ์์ค ์๋ฆผ์ ์์ฑ
์ฝํ ์ธ ํ๋ก๋ฐ์ด๋
- ์ฝํ ์ธ ์ ๊ณต์๋ ํ์ผ์์คํ , SQLite ๋ฐ์ดํฐ ๋ฒ ์ด์ค, ์น์์ด๋ ์ฑ์ด ์ ๊ทผํ ์ ์๋ ๋ค๋ฅธ ๋ชจ๋ ์๊ตฌ ์ ์ฅ์์ ์ ์ฅ๊ฐ๋ฅํ ์ฑ ๋ฐ์ดํฐ์ ๊ณต์ ํ ์งํฉ์ ๊ด๋ฆฌํจ
- ๋ค๋ฅธ ์ฑ์ ์ปจํ ์ธ ์ ๊ณต์๋ฅผ ํตํด ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌํ๊ฑฐ๋, ์ฝํ ์ธ ์ ๊ณต์๊ฐ ํ์ฉํ ๊ฒฝ์ฐ ์์ ๊ฐ๋ฅ
- ๋ฐ์ดํฐ ์ ๋ณด๋ค์ ๊ฐ์ ธ์ฌ ์ ์๋ค.(ํ์ฌ ๋ฐ์ดํฐ ์ ๋ณด๋ฅผ ์ฝ๊ณ ์ธ ์ ์๋จ ์๋ฆฌ)
-> 4๋ ์ปดํฌ๋ํธ์ ๋ฐ๋ผ ์ทจ์ฝ์ ์ด ๊ฐ์ ๋ฐ์ํจ.
์๋๋ก์ด๋ ๋ฃจํ
๋ฃจํ ?
- ๋ชจ๋ ๋ณด์ ๊ธฐ๋ฅ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ํ๋ฆฌ์ผ์ด์ ์๋๋ฐ์ค๋ ๊นจ์ง์ง ์๋๋ค. ์ฆ ๋ค๋ฅธ ์ฑ๋ค์ ๋ํด ๊ถํ์ ๊ฐ์ ธ๊ฐ ์ ์๋จ ๊ฒ์ด๋ค.
์ด๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด (์ ํ๋ฆฌ์ผ์ด์ ์๋๋ฐ์ค๋ฅผ ๋ฒ์ด๋๋ ค๋ฉด) ๋ฆฌ๋ ์ค ์ปค๋์ ๋ณด์์ ์์์์ผ์ผํ๋ค .๊ฒฐ๊ตญ ํ๋ซํผ์ ๋ณ๊ฒฝํด์ผ ํ๋ค๋ ๋ป์ด๋ค.
์ด๋ ์ด ๋ณ๊ฒฝ์์ ์ด ๋ฐ๋ก "๋ฃจํ "์ด๋ค.
๋ฃจํ ์ ํ๋ ์ด์
- ์ต๊ณ ๊ถํ(์ต๊ณ ์ฌ์ฉ์์)
- rootingํ๋ฉด ์คํ ์ค์ธ ๋ชจ๋ ์ฑ์์ root ๊ถํ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํจ.
- ๋ ์๋ฆ๋ค์ด ํ ๋ง๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด
- ์ฌ์ฉํ๋ ์ฌ์ฉ์๋ง๋ค ๋ชฉํ๊ฐ ๋ค๋ฆ
- ๋ฃจํธ ๊ถํ ์์ด ์ค์นํ ์ ์๋ ์ฑ์ ์ค์นํ๊ธฐ ์ํด ->๋ถ๋ฒ ์ฑ๋ค
- ํ์ผ ์์คํ ๊ณผ ์ฑ์ ๊ฐ์ฌํ๊ธฐ ์ํด(์นจํฌ ํ ์คํธ ๋ชฉ์ ) ->๋ชจ์ํดํน, ์ทจ์ฝ์ ๋ถ์์ ํ๊ธฐ ์ํด
๊ฒฐ๊ตญ ์๋๋ก์ด๋ ์ด์ ์ฒด์ ์์์ ์ต์์ ๊ถํ์ ์ป์์ผ๋ก ํด๋น ๊ธฐ๊ธฐ์ ์์ฐ์ ๋๋ ํ๋งค์ ์ธก์์
๊ฑธ์ด๋์ ์ ์ฝ์ ํด์ ํ๋ ํ์๋ฅผ "๋ฃจํ "์ด๋ผ๊ณ ํ๋ค.
๋ฃจํ
- ์ผ๋ฐ์ ์ผ๋ก ๋๋ฐ์ด์ค๋ฅผ ๊ตฌ๋งคํ ๋ ๊ธฐ์ ์ ์ผ๋ก ์ฌ์ฉ์๋ ๋๋ฐ์ด์ค ์์ ์๊ฐ ์๋
- ๋ฃจํธ ์ ๊ทผ ๊ถํ์ ์ป์ด ๋๋ฐ์ด์ค๋ฅผ ์์ ํ ์ ์ดํ๋ ๊ฒ์ด ๋ฃจํ !
- ๋ฃจํ ๋ ๋๋ฐ์ด์ค์์ $๊ฐ ์๋ #๋ฃจํธ ์์ ๊ฐ์ง UID ๊ฐ 0์ด ์กด์ฌ
๋ฃจํ ์ฅ์
- ์ฅ์น์ ๋ํ ๋ฌด์ ํ ์ ์ด
- ์ถ๊ฐ ์ฑ ์ค์น (์ ํ x) ->busyBox
- ๋ ๋ง์ ๊ธฐ๋ฅ ๋ฐ ์ฌ์ฉ์ ์ ์
๋ฃจํ ๋จ์
- ๋๋ฐ์ด์ค ๋ณด์์ ์์์ํด
๊ธฐ๋ณธ์ ์ผ๋ก ์ฑ์ ๋ณ๋์ ์ฌ์ฉ์ ์์ด๋๊ฐ ํ ๋น๋ ์์ฒด ์๋๋ฐ์ค ๋ด์์ ์คํ๋จ
ํ์ง๋ง, ๋ฃจํ ๋ ๋๋ฐ์ด์ค์์ ๋ฃจํธ ์ ๊ทผ ๊ถํ์ด ์๋ ์ ์ฑ์ฑ์๋ ์ด ์ ํ์ด ์์ด ์คํ์ค์ธ ๋ค๋ฅธ ์ฑ์์ ๋ฐ์ดํฐ ์กฐํ ๊ฐ๋ฅ.
์ฆ ๊ด๋ฆฌ์๋ก ์ ๊ทผ์ด ๋๋ค๋ฉด ์์คํ ์ ์ค์ ์ ๋ณด๊ฐ ๋ชจ๋ ์ํํ ๊ฒ์.
- ์ฅ์น ๋ฒฝ๋
๋ฃจํ ํ๋ก์ธ์ค๋ ๋๋ฐ์ด์ค ์์์์ผ ์ธ๋ชจ ์๊ฒ ๋ ์ ์์
- ๋ฌดํจ ๋ณด์ฆ
๋ฃจํ ๋ ๋๋ฐ์ด์ค๋ ๋ณด์ฆ์ด ๋ฌดํจํ๋จ
๋ฃจํ ํ ํ์๋ ๋ณด์ฆ๊ธฐ๊ฐ ์ค์ด์ด๋ ์๋ฆฌ๋น์ฉ์ ์ง๋ถ ํ ์ ์์.
Jvm & Dvm
jvm : ์๋ฐ ๊ฐ์ ๋จธ์ (java virtual machin)
- ์๋ฐ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ํ ์๋ฐ ๊ฐ์ ๋จธ์
- ์๋ฐ ๋ฐ์ดํธ ์ฝ๋๋ jvm์ด ์ดํดํ ์ ์๋ ์ธ์ด๋ก jvm๋ง ์ค์น๋์ด ์์ผ๋ฉด ์ด๋ ์ด์์ฒด์ ์์๋ ์คํ ๊ฐ๋ฅ
-jVM์ ํ๋ซํผ์ ์์กด์
- ์๋ฐ ๋ฐ์ดํธ ์ฝ๋๋ ํ๋ซํผ์ ๋ ๋ฆฝ์
๋ฌ๋น ๊ฐ์๋จธ์ (dvm)
- ์๋๋ก์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ธฐ ์ํ ๋ฌ๋น ๊ฐ์ ๋จธ์
- ๋ชจ๋ฐ์ผ ๋๋ฐ์ด์ค ํ๊ฒฝ์ ์ต์ ํ๋์ด ๊ฐ๋ฐ๋ ๊ฐ์๋จธ์ ์ผ๋ก ๋ฎ์ ๋ฉ๋ชจ๋ฆฌ์์ ์คํ๋๋๋ก ์ค๊ณ๋จ (๋ฐฐํฐ๋ฆฌ ์๋ช , ์ฑ๋ฅ ๋ฌธ์ )
- ์๋ฐ ๋ฐ์ดํธ ์ฝ๋๋ก ๋ณํ๋๋ ๋์ผํ ๊ณผ์ ์ ๊ฑฐ์น ํ ์ถ๊ฐ์ ์ธ ๋จ๊ณ ์งํ
.class = ํ์ผ์ ์๋ฐ ๋ฐ์ดํธ ์ฝ๋
.java = ์๋ฐ ์์ค ์ฝ๋
์๋ ์ฌ์ดํธ๋ฅผ ์ฐธ๊ณ ํ๋ฉด jvm ๊ณผ java ์ปดํ์ผ๋ฌ, ๋ฐ์ดํธ ์ฝ๋์ ๋ํ ์ดํด๊ฐ ์ฌ์์ง ๋ฏ ํ๋ค.
www.tcpschool.com/java/java_intro_programming
์ ๋๊ฐ์ ๋น๊ต(jvm &dvm)
- ์คํ ๊ธฐ๋ฐ & ๋ ์ง์คํฐ ๊ธฐ๋ฐ
- Dalvik์ ๋ช ๋ น์ด ์๊ฐ ๋ ์ ๊ณ , ์ฝ๋ ๊ธธ์ด๋ ๋ ๊ธธ๋ค.(ํจ์จ์ฑ๊ณผ ์๋)
์๋๋ก์ด๋ ๋ฆฌ๋ฒ์ฑ
์ถ์ฒ: www.ahnlab.com/kr/site/securityinfo/secunews/secuNewsView.do?curPage=1&seq=21051
(์ ์ฃผ์๋ฅผ ์ฐธ๊ณ ํด๋ณด๋ฉด ๋งค์ฐ ๋ง์ ๋์์ด ๋ ๋ฏ ํฉ๋๋ค.)
์๋๋ก์ด๋ ํ๊ฒฝ์์ ‘๋ฆฌ๋ฒ์ฑ’์ด๋ ์๋๋ก์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ค์น ํ์ผ์ธ APK(Android Package File) ํ์ผ์ ๋ฆฌ๋ฒ์ฑํ๋ ๊ฒ์ด๋ค. APK ํ์ผ์ DEX(Dalvik Executable) ํ์ผ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ฌ๋ฌ ๋ฆฌ์์ค๋ค๋ก ๊ตฌ์ฑ๋ผ ์๋ ์์ถ ํ์ผ์ด๋ค. ๋ํ DEX ํ์ผ์ ์๋ฐ ํด๋์ค ํ์ผ์ ์๋๋ก์ด๋ ๋ฌ๋น (Dalvic) ๊ฐ์๋จธ์ ์์ ๊ตฌ๋ํ ์ ์๋๋ก ๋ณํํ ํ์ผ์ด๋ค.
๊ตฌ์กฐ ์์๋ณด๊ธฐ
์๋๋ก์ด๋ ์ดํ๋ฆฌ์ผ์ด์ ํ์ผ์ธ APK(Android PacKage)ํ์ผ์ zip๊ณผ ๊ฐ์ ํ๋์ ์์ถ ํ์ผ์ด๋ค.
์ดํ๋ฆฌ์ผ์ด์ ์ ๊ด๊ณ๋ ํ์ผ๋ค์ ํ๋๋ก ์์ถํด ๋์ ํ์ผ์ผ ๋ฟ์ด๊ธฐ ๋๋ฌธ์. ์์ถ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ์ฌ ์์ถ์ ํ์ ์๋ค.
APKํ์ผ์ด ๋ง๋ค์ด์ง๋ ๊ตฌ์กฐ๋๋ฅผ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
apkํ์ผ์ ์์ถ์ ํ๋ฉด ๋์ค๋ .dex ํ์ผ์ ์๋๋ก์ด๋ ๊ฐ์ ๋จธ์ ์ธ dalvik์ด ์ธ์ํ ์ ์๋๋ก classํ์ผ์ ๋ฐ์ดํธ ์ฝ๋๋ก ๋ณํ์ํจ ํ์ผ์ด๋ค. .dex ํ์ผ์ jvm ๋ฐ์ดํธ ์ฝ๋๋ก ๋์ปดํ์ผ ํ์ฌ .class ํ์ผ์ ์ถ์ถ ํ ์ ์๋ค๋ฉด, ์๋๋ก์ด๋ ์ดํ๋ฆฌ์ผ์ด์ ์ java ์ฝ๋์ ์ถ์ถ์ด ๊ฐ๋ฅํ๋ค.
ํจ๊ป ์ฐธ๊ณ ํ๋ฉด ์ข์ ์ฌ์ดํธ
https://yhy868700.tistory.com/153
https://source.android.com/devices/tech/dalvik/dex-format
JAR, AAR, DEX, APK ์ฐจ์ด์ : https://simsi6.tistory.com/10
++๋ด๊ฐ ํท๊ฐ๋ ค์ ์ดํดํ๊ธฐ ์ํด ์์๋ณธ ๊ฒ.
apk -> java?
apk ํ์ผ์ java ์ฝ๋๋ก ๋ณด๋ ค๋ฉด .dex ํ์ผ์ dex2jar๋ฅผ ์ฌ์ฉํ์ฌ .jar ํ์ผ๋ก ๋์ปดํ์ผํ ํ
.jar(.class ํ์ผ๋ค์ ๋ชจ์) ํ์ผ์ .java ํ์ผ๋ก ๋ฐ๊พธ๋ ๊ณผ์ ์ด ํ์ํ๋ค.
jar : classํ์ผ์ ๋ชจ์, ์ฆ dex ํ์ผ์ ๋ค์ jar๋ก ๋ฐ๊พธ์ด ์ค์ผ ํจ-> jar๋ฅผ jd๋ก ์ปดํ์ผ ํ java ํ์ผ ํ๋!
dex: ์๋๋ก์ด๋ ๊ฐ์ ๋จธ์ ์ธ dalvik์ด ์ธ์ํ ์ ์๋๋ก classํ์ผ์ ๋ฐ์ดํธ ์ฝ๋๋ก ๋ณํ์ํจ ํ์ผ
Smali : ‘An assembler/disassembler for Android's dex format’์ ์ฝ์๋ก, DEX ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ฌ๋์ด ์ฝ์ ์ ์๋๋ก ์ฝ๊ฒ ํํํ ๊ฒ์ด๋ค. C์ ์ด์ ๋ธ๋ฆฌ์ด์ ๊ด๊ณ์ ๊ฐ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
์ฝ๋ ํจ์น๋ฅผ ํ๋ ค๋ฉด ๋ฌด์กฐ๊ฑด smali code๋ฅผ ์์ ํ ํ ๋ฆฌํจํค์งํด์ผ ํจ.
๋ณดํต jadx๋ jeb๋ก ์๋ฐ ์ฝ๋๋ฅผ ๋ถ์ํ ํ smali code๋ฅผ ์์ ํ๋ค.
์ด์ ๋ฐ๋ผ ์๋ฐ ํ๊ฒฝ์์์ ๋ฆฌ๋ฒ์ฑ ๊ฐ๋
์ ์ดํดํ๊ณ ์๋ค๋ฉด ์๋๋ก์ด๋ ๋ฆฌ๋ฒ์ฑ์ ๊ฐ๋
์ ์ดํดํ๋ ๊ฒ๋ ์ด๋ ต์ง ์์ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋ฉด ์๋ฐ ํ๊ฒฝ์์ ๋ฆฌ๋ฒ์ฑ์ ๋ํด ์์๋ณด์.
๊ธฐ์กด์ ์๋ฐ ํ๊ฒฝ์์์ ๋ฆฌ๋ฒ์ฑ์ ‘์๋ฐ ๋์ปดํ์ผ๋ฌ(Java Decomplier)’๋ฅผ ํตํด ํด๋์ค ํ์ผ์ ์๋ฐ ์์ค ํ์ผ๋ก ๋ณํํ๋ ๊ฒ์ด๋ค. ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ํด๋์ค ํ์ผ์ด ์ฌ๋์ด ์ฝ์ ์ ์๋ ์์ค ํ์ผ(.Java)๋ก ๋ณํ๋๋ค. ๋ถ์๊ฐ๋ ์ด๋ ๊ฒ ๋ณํ๋ ์๋ฐ ์์ค ํ์ผ์ ํตํด์ ํ๋ก๊ทธ๋จ์ ๊ตฌ์กฐ์ ์คํ ํ๋ฆ์ ํ์
ํ ์ ์๋ค.
์ด์ ๊น์ง ์๋๋ก์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ๋คํ ์์ฑ๋ฒ๊ณผ ๋ถ์๋ฒ์ ๋ํ ์๋๋ก์ด๋ ํ๊ฒฝ์์ DEX ํ์ผ์ ์์์ ์ค๋ช ํ ๊ฒ์ฒ๋ผ APK์ ๋ค๋ฅธ ๋ฆฌ์์ค๋ค๊ณผ ํจ๊ป ์ ์ฅ๋ผ ์๋ค. ์ผ๋ฐ์ ์ผ๋ก APK ํ์ผ์ ์์ถํ์ผ ํฌ๋งท์ด๊ธฐ ๋๋ฌธ์ ์์ถ์ ํ๋ฉด ์ฝ๊ฒ DEX ํ์ผ์ ํ๋ํ ์ ์๋ค. ๊ฒ๋ค๊ฐ DEX ํ์ผ์ ์๋ฐ ํด๋์ค ํ์ผ๋ก ์ญ๋ณํํ ์ ์๋ค๋ฉด ์๋ฐ ํด๋์ค์ ํ์ผ์ ๋ฆฌ๋ฒ์ฑํ๋ ๋ฐฉ๋ฒ๊ณผ ๋์ผํ๊ฒ ์ ์ฉํ ์ ์๋ค.
ART
- ์๋๋ก์ด๋ ๋ฐํ์
- ํผํฌ๋์ค ๊ฐ์ ๋ฑ์ ์ํด ๊ตฌ๊ธ์ด DVM์์ ART ๋ก ๋ณ๊ฒฝ
- ์ฑ๋ฅ ํฅ์์ ์ํด ๋๊ฐ์ง์ ์ปดํ์ผ ๋ฐฉ์์ธ JIT์ AOT๋ฅผ ํจ๊ป ์ฌ์ฉ.
Jit(just-in -time)์ปดํ์ผ
- ์ฑ ์ต์ด ์คํ ์ ์ปดํ์ผ ์ํ
- ์ฉ๋ ํฌ๊ณ ์ค์น ์๋ ๋น ๋ฆ (์ฅ์ )
- ์คํ์๋ ๋๋ฆฌ๊ณ ๋ฐฐํฐ๋ฆฌ ์ฌ์ฉ,cpu์ฌ์ฉ๋ ์ด ๋ง์ (๋จ์ )
Aot(ahead-of-time)์ปดํ์ผ
- ์ฑ ์ค์น ์์ ์์ ์ปดํ์ผ ์ํ, ์ ๋ ฅ ์๋น๋ฅผ ์ค์ด๋ฉด์ ์ฑ๋ฅ์ 2๋ฐฐ ํฅ์ ์ํด
- ์คํ์๋ ๋น ๋ฅด๊ณ ๋ฐฐํฐ๋ฆฌ ์ฌ์ฉ๋ , cpu์ฌ์ฉ์ด ์ ์ (์ฅ์ )
- ์ฉ๋์ด ํฌ๊ณ ์ค์น ์๋๊ฐ ๋๋ฆผ (๋จ์ )ใ
jar(์๋ฅด)ํ์ผ์ด ๊ฒฐ๊ตญ exe๊ฐ์ ์คํํ์ผ(์๋ฐ) ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
'Languages > Android' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋น์ ์ด ์ข์ํ ๋งํ ์ฝํ ์ธ
-
[Android] ์๋๋ก์ด๋ ์ฑ ์ทจ์ฝ์ ์ง๋จ ๋ถ์ ๋๊ตฌ ์๊ฐ 2021.03.13
-
[Android] ์ธ์ํ์ด ๋ฑ ํฌ ์ทจ์ฝ์ ์ง๋จ | ํ๊ฒฝ์ค์ ํ๊ธฐ. 2021.03.13
-
[Android] ์๋๋ก์ด๋ View & ViewGroup | Activity Life Cycle ์์ 2021.03.13
-
[Android] ์๋๋ก์ด๋ 4๋ ์ปดํฌ๋ํธ (๊ฐ๋ฐ) 2021.03.13
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค