Google for Mobile I/O RECAP 2018 (05)

05. Developer. 새로운 모듈 Android App Bundle로 앱 개발하기

  • 발표자 :

    Phil Adams (Senior UX Researcher) Tom Dobek (Software Engineer, Google)

  • 세션설명 : Android App Bundle은 크기가 작은 앱으로도 우수한 사용 환경을 간편하게 제공할 수 있도록 도와주는 새로운 앱 모델입니다. 앱 크기를 대폭 줄이고 Dynamic Delivery를 통해 유저들이 앱을 더 빠르게 다운로드할 수 있도록 하는 방법을 소개합니다.

참고 : https://developer.android.com/guide/app-bundle/

https://medium.com/mindorks/android-app-bundle-aab-98de6dad8ba8

https://medium.com/mindorks/android-app-bundle-part-2-bundletool-6705b50bea4c

App Bundle이 가능하게 하는 2가지 기능

  • Dynamic delivery system
  • Modular App development

.aab 내부

  • AndroidManifest.xml가 apk에서는 바이너리 형식이지만 aab에서는 프로토콜 버퍼 형식.

  • aab는 내부에 dex 폴더가 따로 있음.

  • aab의 resources.pb는 apk의 resources.arac에 해당하는 파일로 역시 프로토콜 버퍼 형식.

  • resources table, assets table은 앱의 File Targeting을 설명함.

    예) assets/<name>#<key>_#<value>/...

Dynamic Delivery 의 기본 구성요소는 Split APK 매커니즘. (Android 5.0 Lollipop 이상)

Split APK는 일반 APK와 유사하지만 Android 플랫폼은 설치된 여러 개의 분리된 APK를 하나의 앱으로 취급할 수 있음.

App Bundle을 위한 Split 기능은 아래와 같이 사용 가능함.

Split APK의 종류

Base APK

모든 APK가 액세스할 수 있는 코드와 리소스 포함하여 앱의 기본기능 제공. 앱 다운로드시 설치되는 첫 번째 APK

Configuration APKs

각 APK에는 특정 화면 밀도, CPU 아키텍처, 언어에 대한 기본 라이브러리 및 리소스를 포함. 기기가 Base APK 또는 Dynamic feature APK 다운로드시 필요한 라이브러리와 리소스만 다운로드 됨.

Dynamic feature APKs

각 APK에는 앱 설치시 필요하지 않지만 나중에 다운로드하여 설치할 수 있는 코드와 리소스가 포함되어 있음.

Average Savings

App Bundle을 통해서 평균 20% 이상의 앱 용량을 절감함.

Publishing App Bundle

App Bundle을 만든 후 signing 하여 Google Play에 업로드.

App Bundle은 기기에 APK를 배포할 수 없는 대신 하나의 빌드 아티팩트에 모든 앱의 컴파일된 코드와 리소스를 포함하는 새로운 업로드 형태임.

signing된 App Bundle을 업로드하면 Google Play는 앱의 APK를 만들고 서명한 후 Dynamic Delivery를 통해 사용자에게 제공하는 데 필요한 모든 것을 제공함.

Publishing API에서도 App Bundle 지원함.

Internal Test Track을 사용하여 테스트.

bundletool

참고 : https://github.com/google/bundletool

App Bundle 을 로컬에서 테스트할 때 사용.

  • Android App Bundle 빌드
  • APK archive 생성
  • APK 추출
  • APK 설치
  • 장치 사양 추출

SplitInstallManager

참고 : https://developer.android.com/guide/app-bundle/playcore

Q&A

Q : 사용자가 설치 후 언어 변경시 앱을 재설치해야 하나?

A : Split App만 설치하면 됨.

Q : assets 타켓팅시 불필요한 파일 포함되는데 개선 여부는?

A : 타켓팅을 상세히 해서 하면 됨.

Q : 앱 수정시 앱 번들 모두 업데이트해야 하나?

A : 그렇다.

Q : 베이스 외 모듈 배포 가능하나?

A : On Demand 버전은 따로 배포가 안됨.

Q : 앱번들을 위한 최소 버전은?

A : Pre L도 지원함으로 따로 최소 버전은 없음.

Q : 모듈화에 대해 자세한 설명이나 사례는?

A : 게임에서 레벨에 따라 별도 다운로드 제공.

Q : 앱 번들 기기 지원 관련 이슈는?

A : 현재는 없음.



+ Recent posts