Java/Android

APK와 AAB에 대한 정리

탕구리당 2020. 6. 28. 22:05
반응형

안드로이드 앱을 스토어에 배포하는 과정에서 APK와 AAB라는 용어를 들을 수 있다.

APK는 파일 확장자이며, AAB는 "Android App Bundle"의 줄임말이다.

 

APK

 

일반적인 APK는 APK 파일 하나를 통해 많은 디바이스의 호환을 지원한다. 그렇다 보니 APK 자체에 여러개의 ABI(Anroid Binary Interface)를 포함하게 되며, APK 파일의 크기는 커질 수 밖에 없다.

 

APK 파일이 커지는 경우 스토어를 통해 앱을 다운받는 사용자에게 안좋은 경험을 제공할 수 밖에 없다. 실제로 나도 스토어에서 앱을 다운받는데 시간이 오래걸리면 굉장히 짜증이 나기 때문에 안좋은 경험을 제공한다는 것은 빼도박도 못하는 사실이라는 생각이 든다.

 

 

앱 번들

 

APK의 용량 문제를 해결하기 위해 개발된게 안드로이드 AAB(Android App Bundle, 이하 AAB)이다. 기존 통빌드(APK 하나로 전부 해결하는) 혹은 다중 APK를 통해 사용자에게 앱을 지원하는 방식을 사용했다면, 현재는 AAB를 통해 좀 더 경량화된 앱을 제공할 수 있다. 

 

발생배경은 이러하다.

 

구글 플레이 앱 서명 기능이 출시되며 구글은 앱을 사이닝하는 과정을 개발자 대신 진행하게 된다. 이 계기를 통해 APK를 최적화를 위한 구글의 노력이 시작된다. 안드로이드는 롤리팝을 기점으로 분할 APK 기법(APK를 여러개로 분할하여 하나의 앱을 구성)을 플랫폼에 제공하기 시작한다. "그동안의 하나의 앱은 하나의 APK로 구성된다는 통념을 깨버리게 된다."

 

앱 번들을 환성화 하게 되면 스토에는 더이상 APK가 아닌 AAB 파일을 업로드 하게 된다. AAB는 구글 플레이 앱 게시를 위한 파일이며, AAB 파일을 기반으로 아키텍처, 화면 밀도, 언어에 최적화된 분할 APK를 생성한다. 최종적으로 앱 실행에 필수 요소인 bask APK와 아키텍처, 화면 밀도, 언어별로 구분된 configureation APKs, 모듈식의 분리된 기능을 위한 dynamic feature APKs가 생성된다. 다양한 APK들이 사용자 기기 환경에 맞게 설치되어 하나의 앱을 구성하는 방식이다.

 

 

 

 

참고 : https://medium.com/daangn/%EB%8D%94-%EC%9E%91%EC%9D%80-apk%EB%A5%BC-%EC%9C%84%ED%95%9C-android-app-bundle%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-345a656eee85

반응형