이 페이지에서는 Firebase 사용 시 발생할 수 있는 Unity 관련 문제의 팁과 문제 해결 방법을 제공합니다.
아래에서 찾을 수 없는 다른 문제나 어려운 점이 있으신가요? Firebase 전체 FAQ 또는 제품별 FAQ를 살펴보려면 기본 Firebase FAQ를 확인하세요.
Android 앱 빌드 도중 단일 dex 관련 문제
Android 앱을 빌드하는 동안 단일 dex 파일 보유와 관련된 빌드 실패가 발생할 수 있습니다. 프로젝트가 Gradle 빌드 시스템을 사용하도록 구성된 경우 오류 메시지는 다음과 유사합니다.
Cannot fit requested classes in a single dex file.
Dalvik 실행 파일(.dex
)은 Android 애플리케이션(.apk
)의 클래스 정의 및 관련 부속 데이터를 저장하는 데 사용됩니다. 단일 dex 파일은 65,536개의 메서드를 참조하도록 제한됩니다. 프로젝트의 모든 Android 라이브러리에 있는 총 메서드 개수가 이 한도를 초과하면 빌드가 실패합니다.
Unity는 2017.2 버전에 Minification(축소) 기능을 도입했습니다. 이는 Proguard(또는 Unity 일부 버전의 다른 도구)를 사용하여 사용하지 않는 코드를 제거하는 기능으로 단일 dex 파일에 참조된 메서드의 총 개수를 줄일 수 있습니다. 이 옵션은 Player Settings(플레이어 설정) > Android > Publishing Settings(게시 설정) > Minify(축소)에서 찾을 수 있습니다. 옵션은 Unity 버전마다 다를 수 있으므로 공식 Unity 문서를 참조하세요.
참조된 메서드의 개수가 여전히 한도를 초과하는 경우 또 다른 옵션은 multidex
를 사용 설정하는 것입니다. Unity에서 이를 수행하는 방법에는 여러 가지가 있습니다.
Player Settings
아래의Custom Gradle Template
이 사용 설정되어 있으면mainTemplate.gradle
을 수정합니다.- Android 스튜디오를 사용하여 내보낸 프로젝트를 빌드하는 경우 모듈 수준
build.gradle
파일을 수정합니다.
자세한 내용은 멀티덱스 사용자 가이드를 참조하세요.
minSdkVersion 23을 사용하여 Android용으로 빌드할 때 발생하는 문제
Android용으로 빌드할 때 minSdkVersion
23을 타겟팅하면 덱싱 단계(일반적으로 Gradle 작업 ':launcher:mergeExtDexDebug')에서 실패할 수 있으며, 이 경우 Android 라이브러리 중 하나를 '변환하지 못했습니다'라는 메시지가 표시됩니다. 이는 대부분의 Unity 편집기에서 사용하는 Android SDK의 기본 dex 도구에 있는 버그로 인해 발생하며 다음과 같은 여러 가지 방법으로 수정할 수 있습니다.
minSdkVersion
을 24로 설정합니다.- Player Settings(플레이어 설정) > Android > Publishing Settings(게시 설정) > Minify(축소)에서 Android 축소를 사용 설정합니다.
- 다음을
settingsTemplate.gradle
파일에 추가하여 다른 버전의 dex 도구를 지정합니다.
buildscript {
repositories {
mavenLocal()
maven { url 'https://maven.google.com' }
mavenCentral()
}
dependencies {
classpath 'com.android.tools:r8:8.3.37'
}
}
CocoaPods를 사용하여 iOS용으로 빌드할 때 발생하는 문제
iOS용으로 빌드할 경우 언어 또는 UTF-8 인코딩 오류로 인해 CocoaPods 설치에 실패할 수 있습니다. 현재 이 문제를 해결하는 방법에는 여러 가지가 있습니다.
터미널에서
pod install
을 직접 실행하고 결과로 생성되는 xcworkspace 파일을 엽니다.CocoaPods를 1.10.2 버전으로 다운그레이드합니다. 이 문제는 버전 1.11 이상에서만 나타납니다.
~/.bash_profile
또는 이와 동등한 위치에export LANG=en_US.UTF-8
을 추가합니다.
Firebase Unity SDK의 버전을 업데이트하는 방법
Firebase Unity SDK의 버전을 업데이트하는 과정은 버전을 처음 가져온 방법에 따라 다릅니다. 다음은 두 가지 가져오기 방법입니다.
- 프로젝트의
Assets/
디렉터리에 있는.unitypackage
파일을 가져오기 - Unity Package Manager(UPM)를 사용하여 가져오기
- Unity 2018.4 이상에서 패키지를 관리하는 데 권장되는 방법입니다.
- 이 방법을 사용하면 향후 버전 업데이트를 더 쉽게 수행하고
Assets/
디렉터리를 깔끔하게 유지할 수 있습니다.
Unity 프로젝트에서는 한 가지 가져오기 방법으로 모든 Firebase 패키지를 관리해야 합니다. 아래 안내에 따라 개별 패키지 버전을 업데이트할 뿐 아니라 필요한 경우 패키지 관리를 UPM으로 마이그레이션(권장되는 가져오기 방법)할 수도 있습니다.
.unitypackage
파일로 Assets/
디렉터리에 가져온 패키지
Firebase 패키지가 Assets/
디렉터리에 있는 경우 SDK 버전을 업데이트하는 두 가지 옵션이 있습니다.
옵션 1(권장): UPM을 사용하도록 마이그레이션(Unity 2018.4 이상에서 사용 가능)
- Firebase에서 제공하는 패키지 관리를 UPM으로 마이그레이션하는 방법을 따릅니다.
- 이 방법은
.unitypackage
워크플로를 계속 사용하는 것보다 더 많은 초기 설정이 필요하지만 이후 SDK 버전 업데이트가 용이해집니다.
옵션 2:
.unitypackage
파일을 계속 사용하여Assets/
디렉터리로 가져오기업데이트된 버전의 각 패키지를 가져옵니다.
Firebase 웹사이트에서 firebase_unity_sdk.zip을 다운로드할 경우 올바른
dotnet
폴더에서 모든.unitypackages
를 가져와야 합니다.- Unity 2019 이상을 사용하는 경우
dotnet4
폴더에서 가져옵니다. - 그렇지 않은 경우 Player Settings(플레이어 설정)에서 Scripting Runtime Version(스크립팅 런타임 버전)을 선택하고 '.NET 3.x'로 설정된 경우
dotnet3
폴더에서 가져옵니다.
- Unity 2019 이상을 사용하는 경우
이전에 가져온 패키지 버전을 덮어쓰는 작업은 Firebase
.unitypackages
를 가져올 때 자동으로 포함되는 외부 종속 항목 관리자에 의해 자동으로 처리됩니다.하지만 이 자동 프로세스가 실패하는 경우에만 다음 폴더를 수동으로 삭제한 다음 위의 가져오기 단계를 다시 시도해야 합니다.
Assets/Editor Default Resources/Firebase
Assets/ExternalDependencyManager
Assets/Firebase
Assets/Parse
Assets/Plugins/iOS/Firebase
UPM에서 관리하는 패키지
Firebase 패키지를 UPM에서 관리하는 경우 최신 SDK 버전을 .tgz
로 가져옵니다.
가져오기를 수행하면 이전 버전을 자동으로 덮어씁니다.