[IT.Log]한푼이라도 벌어야지?/Application

Android app bundle(aab파일) 기기에서 테스트

니키니트 2021. 2. 24. 11:12

예전에는 내가 사용하는 단말기가 신형이든 구형이든 상관없이 구글플레이나 앱스토어에서 단일 앱(hash값 동일)이 배포되었고 설치하여 사용하였다.

이러다보니 내 단말에서는 불필요하지만 다른 단말기에서 필요한 파일들도 포함되어있어 앱의 사이즈도 크고 다운로드시 데이터 사용량도 많아지는 단점이 있어 생긴것이 iOS는 App Slicing, Android는App Bundle이다.

 

물론 iOS가 훨~씬 먼저 시작했고 안드로이드가 따라가는 형국이다.

쉽게 말해 내 단말기종 & OS버전 등에 따라 최적화된 꼭 필요한 파일만으로 구성된 앱만을 다운받아 설치하고 사용할 수 있게 되는것이다.

iOS는 개발자가 따로 설정해줄 것 없이 앱스토어 통해 배포될때 애플이 무조건 재구성하여 배포한다.

하지만 Android는 개발자가 App Bundle을 사용할지 안할지를 선택할 수 있고 사용할꺼라면 앱 빌드 시 App Bundle로 만들어주어야 하며 (확장자 .aab) 구글콘솔에 배포를 위한 업로드 시에도 .aab를 올려야 한다.

여기서 한가지 문제점이 있다. 기존에 .apk확장자라면 별 생각없이 단말에 설치하고 테스트 할 수 있지만 .aab는 바로 설치가 불가능하다.

아래와 같은 방법으로 테스트 해볼 수 있다.

<구글플레이 배포 전>

방법1. bundletool이용 aab를 apks로 설치 및 테스트

방법2. 구글콘솔에서 테스트 단말에 맞는 배포 전 apk다운로드하여 설치 및 테스트

방법1. bundletool이용 aab를 apks로 설치 및 테스트 관련된 내용을 작성해본다.

1. bundletool다운로드 : https://github.com/google/bundletool/releases

사용법 : https://developer.android.com/studio/command-line/bundletool

2. apks로 변경 및 재서명

$ java -jar bundletool-all-0.10.2.jar build-apks --bundle=./app-release.aab --output=./app-demo5.apks --ks=C:\workspace\AndroidStudioProject\AppIron.jks --ks-pass=pass:123456 --ks-key-alias=key0 --key-pass=pass:123456

$ java -jar bundletool-all-0.10.2.jar build-apks --connected-device --bundle=./app.aab --output=jp_test.apks

$ java -jar bundletool-all-0.10.2.jar get-device-spec --output=./device-spec.json

$ java -jar bundletool-all-0.10.2.jar build-apks --device-spec=./device-spec.json --bundle=./app.aab --output=./app-demo3.apks

$ java -jar bundletool-all-0.10.2.jar install-apks --apks=./jp_test.apks

3. apk 기기에 설치 및 테스트

adb install-multiple base.apk config.en.apk config.xxhdpi.apk config.arm64_v8a.apk

참 개발자들은 점점 힘들어진다...