[Unity] aab(Android App Bundle)파일에서 테스트 가능한 apk 추출하기
apk 사이즈를 100Mb이하로 유지하기 힘들다면, Android App Bundle을 고려해 보아야 한다 (유니티 블로그). 플러그인도 늘어나고, 그에 따라 라이브러리 사이즈도 점점 늘게되면 에셋번들로 빼는 것도 한계가 오기 때문이다.
App Bundle은 구글 플레이로 부터 사용자의 기기 구성에 따라 최적화된 apk만 생성하여 제공 받게 되는 시스템이다. 유니티에서는 Build Settings에서 간단히 체크박스로 App Bundle을 선택할 수 있다. (버전 2018.3이상, 2017.4.17이상)
C#에서 세팅할 경우, 아래와 같이 buildAppBundle=true로 세팅하여 빌드를 진행 할 수 있다. (default는 false)
EditorUserBuildSettings.buildAppBundle = true;
App Bundle은 Gradle 빌드가 이미 가능하다는 전제하에서 가능하다. 만약 Gradle로 빌드를 하고 있지 않다면, Gradle 빌드를 먼저 세팅하자.
빌드가 성공했다면, apk파일 대신 aab확장자를 가진 파일이 생성된다.
사이즈에 제한이 없는 aab파일이 생성되었으나, 테스트하기 어려워진 단점이 생겼다. 개발자 테스트를 하기 위해서 매번 구글 플레이에 올릴 수도 없기 때문에, apk 추출이 반드시 필요한 상황이다. 이를 위해 Android에서는 bundle utility를 제공하는데, 이 유틸리티를 이용하면 기존에 테스트 하던 apk를 추출할 수 있다.
Android App Bundle 가이드(링크)에서는 안드로이드 스튜디오를 이용하는 방법과 커맨드 라인을 이용하는 방법, 두가지를 안내하고 있는데, 테스트하는 인원이 모두 안드로이드 스튜디오를 설치해야 하는 번거로움이 있고, 사용상의 어려움이 있을 수 있기 때문에, 커맨드 라인으로 apk를 추출하여 배포하는 것이 더 나은 방식으로 생각된다.
bundle utility는 Github에서 다운받을 수 있다. (링크)
이 글을 쓰는 시점에 최신 버전은 bundletool-all-0.15.0.jar이다. 이 파일을 다운 받아 적당한 위치에 저장한다. 그리고 아래와 같이 실행 가능한지 테스트해보자.
> java -jar C:\bundletool-all-0.15.0.jar
인자에 대한 안내가 나오는 걸 보니 실행이 가능한 상태이다. 이제 apk를 추출하는 커맨드를 날려보자.
> java -jar C:\bundletool-all-0.15.0.jar build-apks --bundle=F:\test1.aab --output=F:\test2.apks --ks=F:\test_keystore.keystore --ks-key-alias=testalias --mode=universal --bundle: aab 파일 경로 --output: 결과 파일 경로 --ks: 키스토어 경로 --ks-key-alias: 키스토어 알리아스 이름 --mode=universal : 앱의 코드와 리소스가 모두 포함된 단일 APK만 빌드하는 모드
위와 같이 커맨드를 날린 후에 키스토어 비밀번호도 입력하면, test2.apks라는 파일이 만들어진다.
마지막 단계로, test2.apks를 test2.zip으로 확장자를 변경하여, 압축을 풀어보자.
압축을 풀면, 그 안에 universal.apk라는 파일을 찾을 수 있다. 이제 이 apk파일로 개발자 테스트 및 로컬 기기에서 테스트가 가능하다.