본문 바로가기
Study

안드로이드 APK 구조

by ca.rrot 2022. 7. 6.

목차.

1. 안드로이드 APK란?
2. APK 생성과정
3. APK 구조
4. AAB란?

 

 

안드로이드 APK란?

APK(Android Application Package)는 안드로이드 애플리케이션을 위한 패키지 파일 형식입니다.

안드로이드에서는 앱을 설치하기 위해 APK 파일 을 사용하고, Zip 형식의 압축파일로 되어있습니다.

 

 

APK 생성과정

안드로이드 프로젝트가 컴파일되고 바이너리 형태의 .apk 파일로 패키징 됩니다. 

apk 파일로 패키징 되는 과정에서 *.class 파일을 안드로이드 가상 머신인 달빅(Dalvik)이 인식할 수 있도록 *.dex 파일로 변환됩니다.

 

 

 

APK 구조

APK 파일을 압축 해제하면 다음과 같은 구조를 확인할 수 있습니다.

 

Meta-INF 

인증 서명과 관련한 정보가 담겨 있는 디렉터리

 

Assets

앱 실행에 필요한 자원들이 저장되는 디렉터리

res 디렉터리에 비해 용량이 큰 파일 위주로 저장

동영상같이 큰 파일 저장

 

res

앱 실행에 필요한 자원(resource)이 모여있는 디렉터리

assets 디렉터리에 비해 용량이 작은 파일 위주로 저장

레이아웃, 문자열, 아이콘같이 작은 파일 저장

 

Lib

라이브러리 파일(*.so)이 저장되는 디렉터리

 

AndroidManifest.xml

애플리케이션을 구성하는 컴포넌트 및 패키지명, 버전과 같은 앱의 설치 정보가 저장되는 파일

 

classes.dex

dex(Dalvik Executable)는 안드로이드에서 앱을 구동하기 위한 핵심적인 파일 포맷

안드로이드 가상 머신 달빅(Dalvik)이 인식할 수 있도록 *.class 파일을 바이트 코드로 변환시킨 소스 파일

 

resouces.arsc

리소스의 배열이라는 뜻이며, res의 정보가 기록되어 있음

컴파일된 리소스(이미지, 문자열, 스타일 등)가 존재

 

 

AAB란?

aab는 기존의 apk의 문제점을 해결하기 위해 구글에서 2018년에 제시한 형식입니다.

 

기존 APK의 문제

기존의 APK는 하나의 파일을 통해 많은 디바이스의 호환을 지원합니다. 그러나 안드로이드 초기와 달리 대응해야 할 디바이스 사이즈가 다양해졌고, 이 밖에도 고화질의 이미지와 동영상, 글로벌 서비스 확대에 따른 다국어 지원 등 대응해야 할 요소가 많아졌습니다. 그러다 보니 APK 파일 크기는 커질 수밖에 없었습니다. APK 파일이 커지게 되면 사용자가 다운 받을 앱 용량이 커지고 다운 시간도 오래 걸리게 됩니다. 결국 앱 사용자에게 안 좋은 경험을 제공하게 됩니다.

 

이 문제를 해결하기 위해 안드로이드에서는 App Bundle 배포 방식을 제시했습니다.

 

새로운 AAB방식 제시 

AAB(Android App Bundle)는 구글 플레이 앱 게시를 위한 파일이며, AAB 파일을 기반으로 아키텍처, 화면 밀도, 언어에 최적화된 분할 APK를 생성합니다. 최종적으로 앱 실행에 필수 요소인 bask APK와 아키텍처, 화면 밀도, 언어별로 구분된 configureation APKs, 모듈식의 분리된 기능을 위한 dynamic feature APKs가 생성됩니다.

 

구글 스토어에 업로드된 번들 앱을 스토어가 각 기기 설정에 맞게 최적화된 APK를 생성하여 사용자에게 다운로드하게 만들어 줍니다. 

 

 

 

'Study' 카테고리의 다른 글

안드로이드 권장 아키텍처  (0) 2022.07.26
디자인 패턴  (2) 2022.07.21
안드로이드 OS 구조  (0) 2022.07.04
구글 안드로이드 역사  (0) 2022.06.29

댓글