본문 바로가기

[Unity] Unity Play Asset Delivery 앱 빌드, Unity 대용량 앱 빌드 본문

프로그래밍/ㄴ기타

[Unity] Unity Play Asset Delivery 앱 빌드, Unity 대용량 앱 빌드

최갓 2021. 12. 2. 12:12
반응형

2021년 8월부터 Google Play Store에선 obb를 이용한 대용량 앱 업로드가 사라지고,

무조건 Play Asset Delivery(PAD)를 통해 앱을 업로드 해야합니다.

제발 정책좀 그만 변경했으면 좋겠습니다.

 


먼저 제가 궁금했던 부분에 대해 알아낸 결론부터 말씀드리겠습니다.

Q1. 이제부터 에셋을 무조건 번들로 묶어서 빌드를 해야하나? 에셋 번들을 묶는법을 알아야하나?

A1. 아닙니다. 기존 대용량 앱 빌드와 같이 포함될 씬들을 모두 선택하고 그냥 빌드해도 됩니다. 방법은 변했습니다.

 

Q2. 빌드 과정/시간이 복잡/길어졌나?

A2. 과정이 조금 번거로워졌고, 빌드에 걸리는 시간 자체는 많이 늘어난 것 같습니다

 


 

그럼, 시간낭비 말고 방법을 설명해드리도록 하겠습니다.

 

1. 먼저 PAD Unity Package를 받으셔야 합니다.

https://github.com/google/play-unity-plugins/releases

 

Releases · google/play-unity-plugins

The Google Play Plugins for Unity provide C# APIs for accessing various Play services - google/play-unity-plugins

github.com

위 깃헙 링크로 가셔서 최신 버전의 패키지를 받아줍니다.

패키지 파일이 많은데, 아직 구글 연동을 아무것도 하지 않은 상태라면

그냥 google-play-plugins를 받으시면 됩니다.

여기에 모두 포함되어 있습니다.

특정 구글 기능만 사용하시려거든, 다른 패키지를 받아서 사용해주세요.

이 경우 com.google.play.assetdelivery입니다. 저는 그냥 google-play-plugins를 받아 적용했습니다

 

2. 다운로드 받은 패키지를 유니티에 import합니다.

 

3. Unity 빌드세팅으로 이동해, Build App Bundle을 체크하고, 빌드할 씬들을 선택해줍니다 (Scenes in Build 목록입니다)

 

4. 유니티 에디터의 Google->Android App Bundle->Asset Delivery Settings를 열어줍니다

 

5. Separate Base APK Asset을 체크해줍니다

 

6. 그런다음 Google->Build Android App Bundle을 통해 빌드해주면 됩니다. 

빌드가 되고 150mb가 넘는 대용량 앱의 경우 압축을 할것인지 등 물어보는데 압축해주시고, 진행하시면 됩니다.

빌드가 끝나면 *.aab파일이 나옵니다.

 

7. 이 aab파일을 구글플레이스토어에 등록해주면 됩니다.

이 aab는 150mb가 넘어도 그냥 등록됩니다. 

왜냐하면 PAD를 사용했기 때문이죠.

 

쉽게, 해당 aab에 PAD를 통해 다운로드 받을 추가적인 파일까지 모두 포함되어 있는 것으로 인식되며, 기존 APK/obb로 분리되었던 것이 하나로 뭉쳐있다고 보시면 될 것 같습니다.

 


이제 150mb를 넘는 대용량 앱을 출시를 위해 빌드할 땐 유니티 Build기능을 사용하지 않습니다.

Google의 Build App bundle기능을 사용해야 하는 것이지요.

 

Unity PAD관련하여 참고할 링크들입니다.

https://developer.android.com/guide/app-bundle/asset-delivery/build-unity#configure-assetbundles-ui

 

Unity용 빌드  |  Android 개발자  |  Android Developers

Unity용 빌드 이 가이드를 사용하여 Unity 프로젝트에 Play Asset Delivery를 빌드하세요.참고: 자세한 가이드는 Unity 게임에서 Play Asset Delivery 사용 Codelab을 참고하세요.개요 Unity AssetBundle 파일에는 앱이

developer.android.com

https://developer.android.com/guide/playcore/asset-delivery/integrate-unity?language=%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8 

 

Asset Delivery 통합(Unity)  |  Android 개발자  |  Android Developers

Asset Delivery 통합(Unity) 이 가이드의 단계에 따라 Unity C# 코드에서 앱의 애셋 팩에 액세스할 수 있습니다. 애셋 팩이 있는 App Bundle을 빌드하지 않았다면 계속 진행하기 전에 Unity용 빌드를 참고하세

developer.android.com

 


추가로, PAD의 에셋번들을 사용해 앱 설치시 다운될 항목(install-timE), 설치 이후 바로 다운되는 항목(fast-follow), 앱이 실행될 때 다운로드되는 항목(on-demand)를 설정할 수 있습니다.

이 부분은 에셋번들을 직접 구성하여, Asset Delivery Setting에서 설정해 줄 수 있습니다.

 

가장 간단하게 방법을 설명해드리기 위해 추가 설정/구성없이 빌드하는 방법을 알려드렸습니다.

위 방법을 사용하게 되면 별다른 설정없이 앱 설치시 다운로드될 항목으로 구분되는 것 같습니다(install-time)

 

어떻게 보면 구글에서 CDN서비스를 제공해주어서 좋은 것 같기도 하네요

프로젝트 초기부터 해당 서비스를 이용하는 걸 고려하여 제작한다면 유용할 것 같습니다.

 

주의하실 점은 각각의 다운로드 항목마다 용량 제한이 존재합니다.

 

애셋 팩은 크기 제한이 증가하였으므로 대규모 게임에 적합합니다.

  1.  fast-follow  on-demand 애셋 팩의 다운로드 크기 제한은 512MB입니다.
  2. 모든 install-time 애셋 팩의 총 다운로드 크기 제한은 1GB입니다.
  3. Android App Bundle에 포함된 모든 애셋 팩의 총 다운로드 크기 제한은 2GB입니다.
  4. Android App Bundle에서 최대 50개의 애셋 팩을 사용할 수 있습니다.

위 용량 제한 주의하시고 에셋 제작하시는데 참고하세요.


추가.

위 방법을 통해 플레이스토어 내부 테스트로 앱을 등록후 다운로드 하면 빌드된 aab보다 큰 용량으로 앱을 다운로드 받게 됩니다.

위 현상에 대해 찾아본 결과, 내부테스트에선 앱 압축을 지원하지 않는 것 같다는 글을 발견했습니다.

https://github.com/google/bundletool/issues/87

 

Google play download size is larger · Issue #87 · google/bundletool

we used the bundle to build an .aab file,and use bundletool get-size total command to get download size(65M),and we upload *.aab to google play, but the size in google play is more larger(78M). dis...

github.com

직접 테스트 해보진 못했지만, 내부테스트 다운로드 용량이 커서 혼란이실 분들은 참고해주세요.

내부 테스트 트랙에서 알파트랙으로 승격 후 테스트 해보고 결과 갱신해드리겠습니다.

 

+테스트 결과 비공개 알파로 앱을 설치할 시 정상적으로 줄어든 기기별 aab용량으로 앱을 설치합니다.

걱정하지 않으셔도 될듯 합니다

 

반응형
Comments