Version: 2019.1
Android 개발 문제 해결
Android에서 크래시 버그 리포트

Android용 앱 빌드

앱 빌드 방식에 영향을 미치는 설정에는 다음의 두 가지가 있습니다.

  • 플레이어 설정 - 앱의 런타임 설정을 구성할 수 있습니다. 플레이어 설정에 대한 자세한 내용은 Android 플랫폼의 플레이어 설정을 참조하십시오.
  • 빌드 설정 - 빌드 시스템 파라미터를 지정하고 앱을 빌드할 수 있습니다.

출력 패키지는 플레이어 설정에서 Split Application Binary 옵션이 선택된 경우 APK와 APK 확장 파일(OBB)을 포함합니다. OBB 파일에 대한 자세한 내용은 OBB 지원을 참조하십시오.

다운로드와 설치 크기를 최적화하려면 플레이어 설정에서 Split APKs by target architecture 옵션을 활성화합니다. Split APKs by target architecture 옵션은 Player 설정의 Target Architecture 목록에서 선택한 기기 아키텍처마다 APK 및 OBB 세트를 1개씩 생성합니다. 선택한 모든 아키텍처가 하나의 APK에 포함된 FAT APK 대신 이 APK(및 활성화된 경우, OBB) 세트를 Google Play나 다른 스토어에 업로드할 수 있습니다. 이 기능에 대한 자세한 내용은 [Android 개발자]의 여러 APK 지원(https://developer.android.com/google/play/publishing/multiple-apks) 웹사이트를 참조하십시오.

빌드 설정 지정

Android용 앱을 설정하고 빌드하려면 빌드 설정 창에서 File > Build Setting 을 선택합니다. 그런 다음 Platforms 에서 Android 를 선택합니다.

Android를 기본 빌드 플랫폼으로 설정하려면 Switch Platform 버튼을 클릭합니다.

빌드 설정을 지정한 후에는 Build 버튼을 클릭하여 빌드를 생성합니다. 앱을 빌드하려면 Build And Run 을 클릭하여 지정한 플랫폼에서 빌드를 생성하고 실행합니다. Platform에서 Android 를 선택해야 합니다.

옵션 목적
텍스처 압축 Unity Android 빌드 시스템은 Don’t override, DXT(Tegra), PVRTC(PowerVR), ETC(기본), ETC2 (GLES 3.0), ASTC 등과 같은 텍스처 압축 포맷을 지원합니다. 이러한 포맷을 사용하는 방법은 텍스처 압축 섹션을 참조하십시오.
ETC2 폴백 32비트, 16비트, 32비트, 절반 해상도.
빌드 시스템
내부(지원 중단 예정) - Android SDK 유틸리티를 기반으로 내부 Unity 빌드 과정을 사용하여 출력 패키지(APK)를 생성합니다. 내부를 선택하면 프로젝트 익스포트 체크박스가 숨겨집니다.
Gradle - Gradle 빌드 시스템을 사용하여 출력 패키지(APK)를 생성합니다. 직접 빌드 및 실행 기능과 프로젝트를 디렉토리로 익스포트하는 기능을 지원합니다. 이 빌드 시스템이 Unity에 기본으로 사용됩니다.
프로젝트 익스포트 프로젝트를 Android Studio에 임포트할 수 있는 Gradle 프로젝트로 익스포트합니다.
앱 번들 빌드(Google Play) Google Play에서 배포할 Android 앱 번들을 빌드합니다.
기기 실행 빌드를 테스트할 수 있는 연결된 기기의 드롭다운 목록입니다. 새로운 기기를 연결하거나 목록에 연결된 기기가 표시되지 않으면 Refresh 버튼을 클릭하여 목록을 새로고침하십시오.
개발용 빌드 개발용 빌드는 디버그 심볼을 포함하며 프로파일러를 활성화합니다. 개발용 빌드를 선택하면 Autoconnect Profiler, Script Debugging, Scripts Only Build 옵션을 선택할 수 있습니다.
프로파일러 자동접속 프로파일러를 빌드에 자동으로 연결할 수 있습니다. Development Build 옵션을 선택한 경우에만 선택할 수 있습니다. 프로파일러에 대한 자세한 내용은 프로파일러 개요를 참조하십시오.
스크립트 디버깅 스크립트 디버거를 플레이어에 원격으로 연결할 수 있습니다. Development Build 옵션을 선택한 경우에만 선택할 수 있습니다.
스크립트 전용 빌드(Scripts Only Build) 이 옵션을 선택하면 현재 프로젝트에서 스크립트만 빌드합니다. Development Build 옵션을 선택한 경우에만 선택할 수 있습니다.
압축 방식 빌드 시점에 프로젝트의 데이터를 압축합니다. 다음의 포맷 방식 중에서 선택하십시오.
Default - 기본 압축 포맷입니다. ZIP는 LZ4 및 LZ4HC보다 압축률은 조금 더 뛰어나지만 데이터의 압축을 푸는 속도가 느립니다.
LZ4 - 개발용 빌드에 적합한 고속 압축 포맷입니다. LZ4 압축을 사용하면 Unity에서 빌드된 게임과 앱의 로딩 시간이 크게 향상됩니다. 자세한 내용은 BuildOptions.CompressWithLz4를 참조하십시오.
LZ4HC - 높은 압축률을 자랑하는 LZ4 변형 포맷입니다. LZ4HC는 빌드 속도가 느리지만 릴리스 빌드에서 더 뛰어난 결과를 제공합니다. LZ4HC 압축을 사용하면 Unity에서 빌드된 게임과 앱의 로딩 시간이 크게 향상됩니다. 자세한 내용은 BuildOptions.CompressWithLz4HC를 참조하십시오.
앱 스토어용 SDK 통합할 타사 앱 스토어를 선택합니다. 통합을 포함하려면 앱 스토어 이름 옆에 있는 Add를 클릭합니다. 그러면 Unity 패키지 관리자가 관련 통합 패키지를 자동으로 다운로드하여 포함합니다.

텍스처(Texture) 압축

Unity는 개별 텍스처 포맷 오버라이드가 없는 텍스처에 대해 ETC(Ericsson Texture Compression) 포맷을 사용합니다. 특정 하드웨어를 대상으로 하는 APK를 빌드하는 경우 Texture Compression 옵션을 사용하여 이 기본 동작을 오버라이드하십시오. Texture Compression 은 프로젝트에 대한 전역 설정입니다. 텍스처에 특정 오버라이드가 포함된 경우 해당 텍스처는 Texture Compression 설정에 영향을 받지 않습니다. 자세한 내용은 텍스처를 참조하십시오.

텍스처와 텍스처 압축에 대한 자세한 내용은 Android 2D 텍스처 오버라이드를 참조하십시오.

텍스처 압축 포맷에 대한 자세한 내용은 플랫폼별 오버라이드용 텍스처 압축 포맷을 참조하십시오. 이 항목의 끝에 있는 Notes on Android 도 참조하면 큰 도움이 됩니다.

참고: Texture Compression 은 전역 설정입니다. 개별 텍스처 오버라이드는 전역 설정을 오버라이드합니다.

ETC2 폴백

ETC2를 지원하지 않는 Android 기기(GL ES3를 지원 안 함)의 경우 32비트, 16비트 포맷 또는 해상도가 절반인 32비트 포맷을 선택하여 기본 ETC2 텍스처 압축 풀기를 오버라이드할 수 있습니다.

이 옵션을 이용하면 압축되지 않은 이미지 품질, 그리고 압축되지 않은 텍스처가 차지하는 메모리 양 중에서 선택할 수 있습니다. 32비트 RGBA 텍스처는 가장 품질이 좋은 포맷이며 16비트 포맷보다 두 배 더 많은 디스크 공간을 차지합니다. 16비트 텍스처의 경우 일부 중요한 색상 정보가 누락될 수 있습니다. 해상도가 절반인 32비트는 메모리 요구 사항을 더욱 줄여주지만, 텍스처가 뿌옇게 보일 수 있습니다.

빌드 시스템

Unity는 두 가지 Android 빌드 시스템, 즉 GradleInternal 을 지원합니다.

Android용 빌드에는 다음의 단계가 포함됩니다.

  • Unity 에셋 준비 및 빌드.

  • 스크립트 컴파일링.

  • 플러그인 처리.

  • Split Application Binary 옵션이 선택된 경우 리소스를 APK와 OBB에 속하는 부분으로 분할.

  • AAPT 유틸리티를 사용하여 Android 리소스 빌드(내부 빌드 전용).

  • Android 매니페스트 생성.

  • 라이브러리 매니페스트를 Android 매니페스트에 병합(내부 빌드 전용).

  • Java 코드를 Dalvik Executable 포맷(DEX)으로 컴파일링(내부 빌드 전용).

  • IL2CPP Scripting Backend 가 선택된 경우 IL2CPP 라이브러리 빌드.

  • APK 및 OBB 패키지 빌드 및 최적화.

Gradle 빌드 시스템

Gradle 빌드 시스템은 Gradle을 사용하여 APK를 빌드하거나, 프로젝트를 Android Studio에 임포트할 수 있는 Gradle 포맷으로 익스포트합니다. 이 빌드 시스템을 선택하면 Unity는 리소스 컴파일을 AAPT로 진행하고 매니페스트를 병합하고 DEX를 실행한다는 사실을 제외하고는 Internal 빌드 시스템과 동일한 단계를 거칩니다. 그런 다음 Unity는 다른 필요한 설정 파일과 함께 build.gradle 파일을 생성하고 Gradle 실행 파일을 호출한 후, 작업 이름 아래 작업 중인 디렉토리에 패스합니다. 마지막으로 Gradle이 APK를 빌드합니다.

자세한 내용은 Android용 Gradle을 참조하십시오.

Internal 빌드 시스템

Internal 빌드 시스템은 Android SDK 유틸리티를 사용하여 APK를 생성하고 APK 및 OBB 패키지를 빌드 및 최적화합니다. OBB 파일에 대한 자세한 내용은 OBB 지원을 참조하십시오.

프로젝트 익스포트

빌드 파이프라인에 대해 더 많은 제어 기능이 필요하거나 Unity에서 일반적으로 허용되지 않는 변경(예: Unity에서 자동으로 생성되는 매니페스트 파일 수정)을 수행하려는 경우 프로젝트를 익스포트한 후 Android Studio로 임포트할 수 있습니다. 프로젝트 익스포트는 GradleBuild System 으로 선택한 경우에만 이용할 수 있습니다.

프로젝트를 익스포트하려면 다음 단계를 따르십시오.

  1. Build System 드롭다운 메뉴에서 Gradle 을 선택합니다.
  2. Export Project 체크박스를 선택합니다. Export Project 를 선택하면 Build 버튼이 Export 로 바뀌고 Build And Run 버튼이 비활성화됩니다.
  3. Export 버튼을 클릭하고 프로젝트를 저장할 폴더를 선택합니다.

익스포트가 완료되면 Android Studio를 열고 프로젝트를 임포트합니다. Android Studio로 프로젝트를 임포트하는 방법에 대한 자세한 내용은 Android 개발자 문서의 Android Studio로 마이그레이션 섹션을 참조하십시오.

Build 또는 Build and Run

Build Settings 창은 BuildBuild and Run 옵션 두 개를 제공합니다. 어느 옵션을 사용하든 빌드하는 동안 출력 패키지(활성화된 경우 APK와 OBB)를 선택하는 경로에 저장합니다. 이 패키지는 Google Play 스토어에 퍼블리시하거나, Android 디버그 브리지(ADB)를 통해 사용자의 기기에 수동으로 설치할 수 있습니다. 앱을 수동으로 설치하는 방법에 대한 자세한 내용은 Android 개발자 문서의 앱 실행 섹션을 참조하십시오. ADB 커맨드에 대한 자세한 내용은 Android 개발자 문서의 Android 디버그 브리지 섹션을 참조하십시오.

Build and Run 옵션을 선택하면 특정된 경로에 출력 패키지를 저장하는 동시에, 컴퓨터에 연결된 Android 기기에 앱을 설치합니다.

Split Application Binary 옵션이 활성화된 경우 OBB 파일은 기기의 올바른 위치에 푸시됩니다. Development Build 가 선택된 경우 Unity는 프로파일러 터널을 설정하고 CheckJNI 를 활성화합니다. 그 이후 앱이 실행됩니다. Split Application Binary 설정은 플레이어 설정의 Publishing Settings 섹션에 있습니다.

팁: 패키지 출력 경로를 지정한 이후 Ctrl+B(Windows) 또는 Cmd+B (macOS) 키보드 단축키를 사용해서 저장된 출력 경로를 사용하는 Build and Run 을 실행할 수 있습니다.


  • 2018–11–19 편집 리뷰를 거쳐 페이지 수정됨

  • 5.5에서 업데이트 된 기능

  • 빌드 설정 구성 옵션 업데이트됨

Android 개발 문제 해결
Android에서 크래시 버그 리포트