본문 바로가기
모바일

앱번들 개요 / AAB 확장자의 의미와 테스트

by Minok_nok 2020. 5. 28.

AAB와 APK

APK의 등장 및 변화

안드로이드는 기본적으로 앱을 APK라는 패키지 파일로 배포를 합니다.

 

APK는 개발자가 만들어 놓은 프로그램을 컴파일 한 후, 어플리케이션을 구성하는 모든 파일을 하나의 패키지로 구성을 합니다.

 

APK로 어플리케이션을 배포를 할 때, 이 어플리케이션이 어떤 기기에 설치될지 모르기 때문에 APK에선 여러기기에 대응하는 정보들을 APK에 적재합니다.

 

이를 유니버셜 바이너리라고 하며, 호환성이 좋지만 용량을 많이 차지하기 때문에 FAT 바이너리라고도 합니다

 

유니티에서는 이러한 FAT 바이너리를 덜어내는 설정이 있는데, 그게 Configuration의 Device Filter 설정입니다.

 

 

다른 방법으로는 APK를 특정 아키텍처에 맞게 빌드를 할수 있는 Split APKs by target architect 세팅도 있습니다.

 

이 설정을 활성화 한 뒤 빌드를 하면 아키텍처별로 APK파일이 만들어집니다.

 

만들어진 APK파일들을 플레이스토어에 업로드를 하면, 플레이스토어에서 분류 후 배포를 진행합니다.

 

다중 APK설명

Split APKs기능 사용

 

앱 번들

2017년 구글 플레이 앱 서명 기능이 추가되면서, 앱 서명을 구글플레이 측에서 관리를 할 수 있게되었습니다.

 

앱 서명을 구글 플레이가 할수 있게되면서, 개발자가 하였던 ‘어플리케이션을 사용자별로 최적화를 시키는 작업’을 구글 플레이 측에서 할수 있게되었습니다.

 

 

위 사진과 같이 키스토어를 추출하여 플레이 스토어에 업로드 하는 이유는 앱 번들을 사용하기 위해서는 구글 플레이에게 그 작업을 할 수 있는 권한을 주기 위함이였습니다.

 

개발자는 구글 플레이에 어플리케이션을 업로드 할때 앱 서명 키를 넘겨 준 뒤, AAB파일을 업로드를 해주면 됩니다.

 

구글 플레이는 AAB파일을 베이스를 하여, 내려받는 사용자에게 필요한 APK들을 받은 뒤 하나의 어플리케이션으로 구성을 합니다.

 

https://developers-kr.googleblog.com/2018/05/google-io-2018-whats-new-in-android.html

 

내려받는 APK는 여러 종류가 있습니다.

  • Base APK: 기본적인 코드가 포함 된 APK

  • Configuration APKs: 특정 아키텍처, 화면 밀도, 언어 등이 포함된 APK들

  • Dynamic Feature APKs: 묘둘식의 분리된 기능을 위한 APK들

 

이를 통하여 사용자가 짊어지는 저장공간을 덜어낼 수 있게 됩니다.

 

AAB

추출

이 문서를 쓰게 된 가장 큰 이유는 Unity의 Build And Run기능을 쓰지 않고 일반 빌드로 AAB파일을 추출한 뒤, 안드로이드 기기에게 설치하는 방법을 몰라서 쓰게 되었습니다.

 

먼저, 기본적으로 Android 빌드 세팅에서 Build App Bundle을 체크를 해 주어야 AAB파일이 추출됩니다.

 

위에서 설명했듯이 AAB파일은 기기마다 필요한 APK들을 만든 후 설치하는 방법을 쓰고 있기때문에, 그 과정을 손수 해주어야합니다.

번들 툴

AAB로 압축된 어플리케이션을 연결된 디바이스에서 테스트를 할 수 있도록 bundletool이라는 프로그램을 지원합니다.

 

bundletool을 다운로드 하면 bundle.jar파일이 있습니다.

 

터미널을 열어 이를 입력해줍니다.

~ alias bundletool='java -jar 번들툴_jar_파일경로'

이를 진행하면 bundletool을 입력하면 bundletool이 있는 jar파일을 사용한다고 설정해줍니다.

 

추출 후 설치

번들 툴 설치 후에 APKs를 만듭니다.

 

bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks

    --ks=/MyApp/keystore.jks

    --ks-pass=file:/MyApp/keystore.pwd

    --ks-key-alias=MyKeyAlias

    --key-pass=file:/MyApp/key.pwd

 

AAB를 APK로 만들 때 앱 서명을 구글 플레이에서 관리를 하기때문에, 구글 플레이를 거치지 않고 APKs를 만든다고 할때는 키 정보를 입력해주어야 합니다.

 

그 후 연결된 기기에 만들어진 APKs를 배포합니다.

 

bundletool install-apks --apks=/MyApp/my_app.apks

 

기본적인 설치 말고도 다른 번들 툴 기능이 많습니다.



'모바일' 카테고리의 다른 글

NDK / ADB  (0) 2020.05.29

댓글