1.01 ^ 365 = 37.78

[Unity] Android AAB 150mb 이상일 때 추가 코드 없이 Addressable과 함께 처리하기 본문

프로그래밍/Unity

[Unity] Android AAB 150mb 이상일 때 추가 코드 없이 Addressable과 함께 처리하기

Youngchangoon 2022. 5. 19. 21:35

문제

게임 개발을 하다보면 Android AAB 빌드 용량이 150mb를 넘기는 순간이 온다. 이 때부터 개발자는 AAB내 base파일과 리소스 파일을 분리하여 base파일을 150mb가 넘어가지 않도록 수정해야 한다.

해결

Play Asset Delivery

안드로이드에서는 이런 문제를 해결 하기 위해 PAD(Play Asset Delivery)를 지원한다. PAD는 구글플레이에서 지원하는 애셋 호스팅 서비스다. 이 서비스를 사용하면 따로 CDN을 쓰지 않아도 쉽고 간편하게 애셋을 올릴 수 있다.

전송 모드

PAD는 총 3가지의 전송 모드를 지원한다.

  • install-time: 앱이 설치될때 같이 전송된 된다. google play의 앱 크기에 영향을 미친다. ( 최대 1GB )
  • fast-follow: 앱이 설치되는 즉시 자동으로 다운로드 된다. ( 최대 512MB )
  • on-demand: 애셋팩은 앱이 실행 되는 동안 원하는 시점에 다운로드 된다. ( 최대 512MB )

Addressable + PAD Plugin 설치

https://github.com/Unity-Technologies/Addressables-Sample

위 Github에 들어가서 Addressable-Sample을 다운받는다. Unity공식 가이드를 많이 참고하였다.

프로젝트를 잘 살펴보면 Advanced/Play Asset Delivery라는 폴더가 있는데 이 폴더를 통째로 자신 프로젝트의 최상단인 Assets/ 경로에 복사한다.


Plugin 설정

Addressable 설정

Assets/PlayAssetDelivery/Data에 들어있는 Setting값들을 위와같이 추가한다.

Addressable Group Window에서 [Create] - [Group] - [Asset Pack Content]를 눌러 AssetGroup을 추가한다.

  • 위와 같이 Build Path와 Load Path는 Local로 설정한다.
  • [Add Schema]를 눌러 Play Asset Delivery를 누른 후 InstallTimeContent로 설정한다.

위 Asset Inspector창에서 Advanced Options를 누르면 위와 같은 창이 뜬다. 설정은 2가지만 하면 된다. 헷갈리지 않게 주의!

  • Asset Provider - Assets from Bundles Provider
  • Asset Bundle Provider - Play Asset Delivery Provider

안드로이드 설정

  • [PlayerSettings]를 들어가 Split Application Binary를 꼭 체크
  • Custom Launcher Gradle Template를 체크한 후 launcherTemplate.gradle 파일에 들어가 buildTypes 부분에 PLAY_ASSET_PACKS를 추가해준다.

빌드 및 확인

모든 세팅이 끝나면 Addressable 윈도우 창에서 [New Build] - [Play Asset Delivery]를 눌러준다. 이 빌드가 완료되면 기존처럼 AAB파일을 빌드한다.

리소스 분할이 잘 적용되어 있는지 확인하는법

.aab파일을 .zip파일로 변환한후 압축을 해제한다. 해제 후 폴더 안에 UnityDataAssetPack 파일이 있는지 확인한다.