본문 바로가기

유니티 최적화

[유니티 최적화] 앱 다운로드 크기 최적화 #4 ( Player Setting 설정 )

앱 다운로드 크기에 영향을 미치는 Project Setting 옵션 정리

중요도 : 상

난이도 : 하

유니티 프로젝트 세팅 창

프로젝트 세팅창에서 Player 메뉴를 살펴보면 배포 되는 빌드 버전의 옵션들을 설정 할 수 있다.


  • Target Arhitectures

Target Achitectures 에는 빌드에 포함 되는 CPU 아키텍쳐 버전을 선택 할 수 있는데

각각

ARMv7은 ARM의 모바일 아키텍쳐( 안드로이드 32bit )

ARM64는 ARM의 모바일 아키텍쳐 ( 안드로이드 64bit )

x86는 인텔 32bit CPU 아키텍쳐

x86-64 인텔 64bit CPU 아키텍쳐

를 말한다.

 

당연히 체크된 아키텍쳐 수에 따라 앱 사이즈가 늘어나게 된다.

 

구글 플레이스토어에 배포하는 것이 목적이라면 ARM64 와 ARMv7 만 선택 하고 나머지는 제외하길 추천.

 

만약 32bit 안드로이드 폰을 제외하면서 빌드사이즈를 줄이고 싶다면 ARM64만 체크하면 된다.

 

이때 구글콘솔에 앱을 배포할시 32bit 안드로이드 폰은 자동으로 타겟에서 제외 된다.

 

몇 년전까지만 해도 32bit안드로이드 폰까지 지원을 하는게 대세였는데 최근에는 64bit만 지원하는 게임들이 많아지고 있다.

 

- 참고로 APK 가 아닌 AAB 형식으로 배포하게 되면( Build Setting 창에서 설정 ) ARM64 와 ARMv7 둘다 빌드에 포함되어도

유저가 다운로드 하는 앱의 크기는 모바일 기기의 아키텍쳐에 따라 정해지기 때문에 실제 개발자가 배포한 앱 크기보다 작게 된다.

APK는 ARM64 와 ARMv7 가 모두 포함.

 

Split APK by Target architecure 옵션을 키면 아키텍쳐에 따라 분리된 APK 파일을 얻을 수 있다.

 


  • API Compatibility Level

유니티에서 제공하는 가이드에서는 .NET 버전에 따라 빌드크기가 차이가 있다고 설명 되어 있는데

 

별도의 .NET 라이브러리를 임포트 하지 않은 경우에는 테스트 결과 1Mb 내외의 차이만 보인다.

 


  • Optimization

 3D Mesh에 대한 최적화 옵션들을 선택 할 수 있다

 

대부분의 프로젝트는 Mesh 데이터 크기가 Texture나 애니메이션 데이터에 비하면 비중이 작기 때문에 최적화 효과를 보기 힘들지만

 

만약 개발하는 프로젝트의 Mesh 데이터가 크다면 고려 할만 하다.

 

Vertex Compression 은 메쉬의 데이터 중에서 압축을 할 데이터를 설정 할 수 있다.

 

메쉬 압축은 손실 압축이라 압축을 하게 되면 데이터가 달라 질 수 있다.

 

적용 후 게임 진행에 문제가 없는지 꼭 확인이 필요하다.

 

Optimize Mesh Data는 사용하지 않는 매쉬의 컴포넌트를 빌드에서 자동 제외 하는 옵션이다.

 

개발중인 프로젝트의 경우 Mesh 데이터는 약 3.6M 정도 인데 빌드 옵션에 따라 최종 앱의 크기는 대략 0.5Mb 차이를 보인다.