안드로이드의 앱은 기본적으로 .apk라는 파일 확장자 명을 가진다. 하지만, 사실상 이 파일의 Magic Number을 보면 다음과 같이 zip 형태의 파일 포맷을 가지는 것을 확인할 수 있다.

 

 

apk 파일의 압축을 해제하면 아래와 같은 구조를 확인할 수 있는데, 간단하게 3가지로 구분된다.

 

 

 

1. AndroidManifest.xml

  - 안드로이드 앱의 속성들을 주로 다루게 되는데 Activity, Service, Receiver, Persmission 등의 속성은 이 파일에서 정의된다. apk 파일을 단순히 압축을 해제 하였을 때 AndroidManifest.xml은 바이너리 형태의 xml로 인코딩 되어 형태를 알아보기 어렵지만, 이를 apktool과 같은 디컴파일러를 통하여 확인하면 디코딩된 xml 정보를 얻을 수 있다. 아래의 그림은 AndroidManifest.xml에 대해 디컴파일 전과 후의 xml 파일에 대한 정보를 비교한 그림이다.

 

 

 

2. Resource

  - 안드로이드의 Image, Style 등과 같은 정보는 Resource에서 관리하게 된다. 이것 또한 Apktool을 통하여 확인 가능하다.

 

 

 

3. DEX (Dalvik EXecutable)

  - Dex는 안드로이드에서 앱이 구동하기 위한 핵심적인 파일 포맷이다. dex 포맷형식에 대한 내용은 차후 포스팅에서 자세히 다루도록 하겠다. dex의 포맷형식에 대한 문서는 Android Source 사이트에 있으며 주소는 다음과 같다.

Dex Format : https://source.android.com/devices/tech/dalvik/dex-format.html


 

+ Recent posts