secure_world

안드로이드 - JVM&DVM / APK파일의 구조 본문

모바일/안드로이드

안드로이드 - JVM&DVM / APK파일의 구조

시월드 2022. 1. 3. 12:37

1. JVM & DVM

2. APK파일의 구조


※ 잘못된 정보가 있을 경우에는 댓글을 통해서 알려주시면 바로 수정하도록 하겠습니다!

 

1. JVM & DVM

[그림] 소스코드 -> 실행까지의 과정 (출처 : 구글 이미지)

1.1. JVM (Java Virtual Machine)

 - JVM은 Java Virual Machine으로 자바 가상 머신을 말함

 - Java 바이트 코드를 실행하기 위한 가상 머신

 - JVM만 설치되어 있으면 어떤 운영체제라도 바이트 코드를 실행할 수 있음

 - 스택 기반으로 되어 있음

 - .class파일에서 바로 실행할 수 있음

 

1.2. DVM (Dalvik Virtual Machine)

 - 달빅(Dalvik) 가상 머신을 말함

 - 안드로이드 어플리케이션을 실행할 수 있는 가상 머신

 - 달빅 가상 머신은 레지스터 머신 형태의 가상 머신으로, 적은 메모리 요구 사양에 최적화되어 있음

 - Java 바이트 코드로 변환되는 동일한 과정을 거친 후 추가적인 단계를 진행함

 - 레지스터 기반으로 되어 있음

 - .class파일에서 .dex파일로 변환해야 실행시킬 수 있음

 

 (→ DVM이 명령어의 수가 더 적고, 코드 길이는 JVM보다 김)

 


 

2. APK파일의 구조

[그림] .apk파일이 되기까지의 과정 (출처 : 구글 이미지)

 - 안드로이드 어플리케이션 파일인 APK(Android PacKage)파일은 하나의 .zip과 같은 압축 파일로 되어있음

 - 어플리케이션에 관계된 파일을 하나로 압축해놓은 파일이기 때문에, 프로그램을 사용하여 압축을 푸는 것 또한 가능함

 

[그림] 간단한 .apk파일 구조 (출처 : 구글 이미지)

 - .apk파일의 압축을 풀면 .dex파일이 나오는데, 이는 DVM(Dalvik Virual Machine)이 인식할 수 있도록 .class파일을 바이트 코드로 변환시킨 파일을 말함

 - .apk파일을 JVM(Java Virtual Machine) 바이트 코드로 디컴파일하여 .class파일을 추출할 수 있다면, 어플리케이션의 .java코드 추출이 가능

'모바일 > 안드로이드' 카테고리의 다른 글

안드로이드란?  (0) 2022.01.02
Comments