Game Development, 게임개발/개발

유니티 빌드 설정에 대한 고찰, Unity Build Setting

게임이 더 좋아 2022. 3. 13. 14:58
반응형
728x170

일반적으로 Android를 플랫폼으로 잡고 빌드한다고 가정하고 시작해보자.

 

짧게 말하면 APK를 만들어내는 행동이 바로 빌드이다.

알아보자


 

1. APK와 AAB

 

체크를 하면 AAB 안하면 APK

우선 옛날부터 나는 아이폰 유저지만.. 안드로이드 폰을 보면 모바일 게임 크랙판을 쓰는 친구들이 많았다.

특히 중학생 때.. 엄청 많았다. 그럴 때마다 친구들이 하는 말.. APK 파일을 보내달라

내 폰에 직접 넣게 라는 말이었다.

 

하지만 2021년 8월 구글은 APK 파일을 구글 플레이 스토어에 올리지 못하게 하였다. 

기존의 올렸던 앱들은 유지하되 새로 올라오는 컨텐츠는 AAB 확장자로만 올려야 한다는 말이다.

 

그렇다면 APK는 익숙하고 AAB는 뭘까??

제일 좋은 그림이 구글에 있어서 가져왔다.

 

그림을 살펴보자..

AAB에서 APK로 변환될 수 있구나?? 는 보인다.

그렇다면 AAB에서 APK를 변환시켜야하는 이유가 있나??를 생각하면 이제 차이점이 나온다.

 

APK는 이미 안드로이드 앱으로 실행될 수 있는 파일이고 AAB는 아니다.

그렇다면 굳이 AAB를 변환시키는 수고를 왜 해야하느냐..?

 

사실 APK파일로 올린다면 APK파일을 받아 실행시키면 그만이다.

즉, 수많은 안드로이드 기기에 대해 저장된 프리셋들도 APK에 들어있다.

S22를 씀에도 불구하고 S21에 대한 정보도 APK에 들어있으니까 받을 수 밖에 없는 것이다.

 

하지만 AAB는 모두 가지고 있되 사용자 기기에서 다운로드를 시도할 때 사용자에 맞춘 파일들만 APK로 변환해서 다운받게 해주는 것이다.

https://beebom.com/apk-vs-aab/

 

제일 대표적인 예가. 다양한 Screen Density이다. ex) 320dpi, 480dpi 등등

그리고 Processor type도 다르다. ARM, ARM64, x86

그리고 지역마다 Language Pack도 다르다.

 

? 아니 야 그럼 처음부터 지역별로 APK를 따로 올리면 되는 것 아니야?? 

 

맞다... 하지만 나눌수록.. 맞춤이 되지만.. 그것에 대한 비용이 할만한가? 에 대해서 생각해보자..

옷이 왜 M, L, XL이 있을까??.. 내 몸에 맞춰주면 얼마나 좋아??

하지만 효율을 위해선.. 저렇게 맞추는 것이 좋다는 의미고 AAB도 효율을 높여주기 때문이라고 볼 수 있다.

 

이렇게 메모리에서 큰 이점을 준다는 말이다. 이것.. 정말 큰 장점이다.

왜냐면.. 구글 플레이에서 발표한 결과에 따르면 앱 크기가 작을수록 다운로드 수가 증가한다는 통계가 있다.

 

**반박하지말자 구글은 그냥 경향성을 보여주는 것이고

실제로도 같은 기능 40메가 받을래 20메가 받을래 하면 20메가 받는 사람이 99%일 것이다. 

 

 

어.. 근데 왜.. 구글 플레이 스토어가 이런 정책을 해서 자유도를 막는거지..? 

구글에선 " 사용자에게 필요한 데이터만 전달할 수 있어 메모리를 절약할 수 있고

개발자는 여러 가지 빌드를 하지 않아도 된다" 라는 일념하에 진행하고 있지만.. 강제하는 것은 다 이유가 있다.

 

위에서 말했듯이.. APK를 구글 플레이 스토어에서 다운받지 않고 개인적으로 배포되는 경우 구글 플레이 스토어에서 수수료가 발생하지 않는다.

가장 큰 플랫폼 이용 수수료가 발생하지 않는다.

즉, AAB 형식에서 APK로 변환하는 작업을 구글 플레이를 통해 이뤄지기 때문에 실제로 내 폰에 적합한 APK를 얻기 위해서는 구글 플레이스토어에서 다운받아야 한다는 말이다.

원래 이익없이 움직이지 않는게 기업이다. 다 이유가 있다.

하지만 개발자에게도 실제로 좋은 일이기 때문에 뭐 기분 나빠할 필요는 없다.

 

참고로 AAB에서 APK 전환은 이런 식으로 한다.

 


 

 

2. 나머지 설정은??

 

 

1. 회사(개인) 이름

2. APK로 변환되었을 때 보여질 이름(App 이름)

3. Version은 여러가지가 있지만

x . x . xx로 하는 것이 일반적이다. (Major, Minor, build) -> 한 번 올린 Version은 다신 사용하지 못한다.

-> 계속 갱신해줘야함.

Default Icon: 플레이 스토어에 올라갈 아이콘을 뜻한다.

 

 

진짜 아이콘이다. APK로 변환되었을 때 어떻게 보일지다.

보통 마지막에 건드린다.

 

 

이것도 딱히.. 건드리지 않는다.

저기서 LandScape, Portrait는 많이 건드린다.

세로모드, 가로모드라 보면 된다.

 

이것도 딱히.. 나중에 건드리면 업데이트하겠다.

 

 

게임 실행 시 처음 화면에 나오는 것을 설정한다. (splash view라고 한다)

 


 

사실 얘네들 중에 얘가 제일 중요하다.

 

특히 identification이 중요한데

Version

빌드 번호 설정이다. 

.점으로 구분된 숫자가 포함된 문자열의 일반적인 포맷으로 지정된다.(예: 4.3.2 ,  1.1.1  ). 

 

Bundle Version Code

플레이 스토어에 새 버전 등록 시 번들 버전을 올려서 등록한다.

-> 동일한 버전의 APK 파일 또는 App bundle을 등록하면 오류가 발생해서 그렇다.

 

Scripting Backend 

IL2CPP로 설정 한다. -> C++로 실행하는 것

Mono는 64비트 Architecture를 사용할 수 없다.  

Target Architectures와 관련 있다.

 

Api Compatibility Level

.NET framework 4.x api를 사용하여 프로젝트를 제작하였으면 NET 4.x을 선택한다.

 

 

Scripting Backend에서 IL2CPP로 설정하여야 64비트 설정이 가능하다.

32비트와 64비트를 같이 지원하기 위해 둘 다 선택한다.

ARMv7은 32비트, ARM64는 64비트이다.

**2019년 이후 앱을 배포하기 위해서는 64비트를 지원해야한다. 

**현재 많은 스마트폰은 32비트를 사용한다. 

결국 둘 다 선택해라.

 

키스톤도 중요하다.

 

앱을 빌드하기 위해서는 Keystore가 필수이다.

생성하자 KeyStore Manager → Keystore → Anywhere 

 

Keystore 사용기한은 생성일로부터 50년이다.(디폴트) 99년으로 해라 그냥 이유없다.

KeyStore는 안전한곳에 보관한다.

앱 업데이트 및 빌드할때 지속적으로 필요하다. 

Keystore에 등록한 정보를 기반으로 Publishing Settings의 Project Keystore, Project Key를 작성한다.

 

 


빌드 시 발생하는 각종 오류

JDK 환경변수 설정 오류 (JAVA_HOME)

KeyStone 오류 (Cannot sign the application)

 

위의 키워드를 잘 검색하면 다 해결된다.

반응형
그리드형