Season 1/기술 보안

[ Android ] 기초 정리 - APK 구조

작성자 - LRTK

APK 구조

AndroidManifest.xml

어플리케이션의 주요 정보가 저장된 파일이다.

- Activity : Activity에 대한 속성

- Service : 백그라운드에서 실행되는 서비스

- Brodcast Receiver : 안드로이드 내부 이벤트 핸들링을 위한 컴포넌트

- Content Provide : 어플리케이션 간의 데이터 공유를 위한 컴포넌트

 

assets/

어플리케이션 사용되는 용량이 큰 자원들(비디오, 오디오, 문서 등)이 저장된 디렉터리

 

res/

어플리케이션 실행을 위한 용량이 작고, 미리 컴파일되어야 하는 자원이 저장된 디렉터리

주로 이미지, 디자인 관련 설정 파일, 문자열 관련 설정 파일 등과 같이 용량이 작고, 어플리케이션이 동작 시 필요로 하는 파일들이 저장되어 있다.

  • Drawable : 어플리케이션에 활용되는 이미지
  • Layout : 화면을 담당하는 xml들의 집합
  • Values : 디자인과 관련된 설정 파일이 저장된 디렉터리
    • dimens.xml : 텍스트 크기, 도형 크기 등 크기에 관련된 설정 파일
    • strings.xml : 문자열에 관련된 설정 파일
    • styles.xml : 색상 액션바 유무, 배경 색 등 화면 디자인 관련된 설정 파일

 

lib/

네이티브 라이브러리와 같은 컴파일된 코드가 포함된 디렉터리이다.

흔히 *.so 파일이 존재한다.

 

META-INF/

서명(Sign)에 관한 정보가 들어있는 디렉터리이다.

원본의 SHA-256 값이 META-INF가 저장되어 있는데, 이는 META-INF에 저장된 Hash(SHA-256) 값과 비교하여 앱이 변조되어 있는지 확인하는 역할을 한다.

 

classes.dex

안드로이드은 컴파일된 어플리케이션 코드를 dex 파일로 변환합니다.

dex 파일은 Dalvic의 바이트 코드이며, Dalvic에선 dex 파일으로 어플리케이션을 실행합니다.

 

resources.arsc

문자열, 색상 또는 스타일 등과 같은 미리 컴파일된 어플리케이션 리소스가 저장된 파일입니다.

 

Contents

이 글이 도움이 되었다면, 응원의 댓글 부탁드립니다.