Search Unity

앱과 게임의 크기가 커질수록 Google Play 스토어 방문을 통한 설치가 줄어들고 있습니다. 사용자가 기기의 스토리지를 사용하고, 요금제 데이터를 소비하며, 연결 속도가 느린 환경에서 다운로드 완료를 기다려야 하는 상황에 대해 이미 신경을 쓰고 있기 때문입니다. Android App Bundle은 이러한 우려 사항을 해결할 수 있는 새로운 Android 앱 퍼블리싱 포맷으로, 이를 통해 사용자 기기에서 게임의 크기를 줄이고 간소화할 수 있습니다.

Unity 2018.3 베타에서는 일부 하드웨어 구성에 App Bundle 지원을 도입했습니다. 아래의 글에서 APK 대신 Android App Bundle을 구축하는 방법을 확인해 보세요! 일반적으로 사용자가 기기에서 여유 공간을 확보하려고 할 때 용량이 큰 게임이 먼저 제거됩니다. 이러한 경향은 어떤 앱을 사용하든 상관없이 모든 시장의 사용자에게 영향을 주며, 기기의 스토리지와 데이터가 주력인 분야에서 특히 중요합니다.

Android App Bundle에는 게임에 필요한 컴파일된 코드와 리소스가 모두 포함되어 있지만 APK 생성 및 Google Play 서명이 바로 필요하지는 않습니다. Google Play의 새로운 앱 지원 모델인 Dynamic Delivery는 사용자의 앱 번들을 사용하여 각 사용자의 기기 구성에 최적화된 APK를 생성하고 제공하므로, 앱 실행에 필요한 코드와 리소스만 다운로드하면 됩니다. 이제 기기 지원을 위해 여러 APK를 구축하고 서명하고 관리할 필요가 없게 되어 사용자는 보다 최적화되고 크기가 줄어든 상태로 앱을 다운로드할 수 있습니다.

Android App Bundle은 각 언어 리소스, 화면 밀도 리소스 및 ABI(Application Binary Interface, CPU 및 명령어 세트의 각 조합당 하나)에 대한 구성 APK(Configuration APK)를 생성하는 여러 가지 옵션과 Dynamic Feature(자세한 정보는 Google 참고 문서 참조)라는 새로운 개념을 제공합니다.

Unity 2018.3에서는 CPU 아키텍처/ABI(ARMv7, ARM64 및 x86)용 App Bundle 지원을 도입했습니다. 유니티는 개발자들에게 도움이 되는 타겟층을 지속적으로 찾고 있습니다. 여러분의 피드백도 언제나 환영합니다. Android 개발자 포럼에서 여러분의 의견을 공유해 주세요!

Android App Bundle 빌드하기

먼저 Unity 2018.3 베타에서 프로젝트를 엽니다. APK 대신에 Android App Bundle을 빌드하려면 Build Settings 창(메뉴: File > Build Settings)을 열고 Build App Bundle 체크박스를 선택합니다(Build System은 기본 옵션인 Gradle 유지).

Build를 선택하면 Google Play에 직접 퍼블리시할 수 있는 AAB 파일을 생성합니다.

Build and Run을 선택하면 AAB 파일을 생성한 다음 연결된 기기별 임시 APK 파일을 생성하여 기기에 설치하고 애플리케이션을 실행합니다.

Build를 선택하고 앱을 기기에 수동으로 설치하려면 Google에서 제공하는 bundletool utility(Unity 설치 위치의 Editor/Data/PlaybackEngines/AndroidPlayer/Tools 디렉토리에 있음)를 사용할 수 있습니다. bundletool 플래그와 옵션에 대한 자세한 정보는 여기에서 확인해 보세요.

참고로, 생성된 앱 번들에는 모든 지원 대상의 라이브러리가 포함되어야 하므로 앱 번들을 빌드할 때는 Split APKs by target architecture(Edit > Setting > Player) 옵션이 비활성화되어 있습니다.

개발자를 위한 팁

개발 작업 중에 Build and Run을 사용할 경우 반복 시간을 줄이려면 앱 번들 생성을 비활성화하고 대신 일반 APK를 사용하는 것이 좋습니다. 기기에 배포를 하기 위해 앱 번들에서 APK를 생성할 때 시간이 추가로 소요되기 때문입니다.

Unity에서 익스포트한 Gradle 프로젝트를 사용하여 Android Studio에서 앱 번들을 생성할 수도 있습니다. 이 경우, Android Studio 3.2 이상을 사용해야 하며 Build > Build Bundle(s) / APK(s) > Build Bundle(s)을 선택하기만 하면 됩니다.

Android App Bundle을 지원하지 않는 스토어를 대상으로 하는 경우(현재 Google Play에서만 지원됨), Split APKs by target architecture 옵션(위치: Player 설정)을 대신 사용하여 최종 사용자 기기의 CPU 아키텍처별로 분할된 APK를 제공하거나, bundletool을 사용할 수 있습니다. 이 경우, 모든 환경에서 실행할 수 있는 “유니버설 APK”를 구축할 수 있습니다(Android App Bundle 문서 참조).

 

8 코멘트

코멘트 구독

코멘트를 달 수 없습니다.

  1. Mahesh Khambadkone

    11월 15, 2018 6:12 오후

    We frequently end up having to create AssetBundles, and their management (downloads, updates) is often cumbersome. Would be good to have tighter integration between Unity Asset Bundles and Android App Bundles.
    These could be entire folders of assets, a “Resource”/”StreamingAssets” folder or sets of Scenes, delivered as App Bundles.

  2. I have read the post and got to know that the Android app bundle is the complete package which is needed to build an android application. The android bundle is directly connected to the google server and you will directly get an update from Google. Contact error code 0xc00000f for more information.

  3. In the real world, there is currently only one Android architecture – arm32 (unless you already have a significant number of arm64 customers with reasons for a separate binary, or live in a parallel universe where MIPS is still a thing.) So I’m not sure how much this current implementation gains us, since Unity doesn’t really use the Android resource infrastructure directly (and shouldn’t).

    An implementation where you can build for low end devices assuming QualitySettings.masterTexturelimit > 0 would mean we could build bundles for low end devices without including all the top-level mipmaps in the build would be interesting. But without something like that, it only really becomes interesting from a code size perspective in fall 2019 when Google mandates arm64 code.

    1. Hi Leona,
      Moving to 64-bit is really about future proofing your games.
      More and more devices are 64-bit capable, new flagship phones are 64-bit capable. Our stats shows about 15% of game installs use 64-bit architecture on Android already. So we think “now” is really a good time to start your transition to 64-bit, before it’s motivated by store submission rules ;-)

      And we agree that quality settings, being able to target low-end / high-end with different sets of assets is a good idea. We are exploring this option.
      Thanks for your contribution ;-)
      JC

  4. This is great. It is clear app sizes are important for mobile, and Unity has issues in this area, but I’m sure the company are working on it, but it is not clear what is happening. I would love to see a blog post dedicated to improvements on the way, and what the latest advice is in this area for Android and iOS (e.g. the Unity manual advice on build sizes talks as if there is only .Net 2.0, what impact does the newer versions have?).

    1. Hi Moonjump,
      We are working on optimizing build sizes, Code Stripping option helps reduce the size for example.
      I recognize that we need to provide more guidance and explanation on how to optimize build sizes, but rest assured we are not ignoring it.
      Thanks for your comment
      JC

  5. Awesome! It will be nice if we can put it HD textures and normal textures

    1. Hi Suduck,
      Thanks for the suggestion. We are exploring these options.
      JC