이 페이지에서는 Firebase를 사용할 때 발생할 수 있는 Unity 관련 문제에 대한 팁과 문제 해결을 제공합니다.
다른 문제가 있거나 아래에 설명된 문제가 보이지 않습니까? 더 많은 범 Firebase 또는 제품별 FAQ는 기본 Firebase FAQ 를 확인하세요.
Unity 2017.x 이상 사용 시 .NET 호환성
Firebase는 Unity 2017 이상에서 실험용 빌드 옵션으로 .NET 4.x를 지원합니다. Firebase 플러그인은 Parse SDK 의 구성요소를 사용하여 이전 버전의 .NET에서 일부 .NET 4.x 클래스를 제공합니다.
따라서 Firebase Unity SDK 버전 5.4.0
이상은 Firebase Unity SDK의 dotnet3
및 dotnet4
디렉터리에서 .NET 3.x 또는 .NET 4.x와 호환되는 플러그인을 제공합니다.
프로젝트에서 활성화된 .NET 버전과 호환되지 않는 Firebase 플러그인을 가져오면 Parse SDK에 의해 구현된 .NET 프레임워크의 일부 유형에서 컴파일 오류가 표시됩니다.
.NET 3.x를 사용하는 경우 컴파일 오류를 해결하려면:
- 모든 플랫폼에 대해 다음 DLL을 제거하거나 비활성화합니다.
-
Parse/Plugins/dotNet45/Unity.Compat.dll
-
Parse/Plugins/dotNet45/Unity.Tasks.dll
-
- 모든 플랫폼에 대해 다음 DLL을 활성화합니다.
-
Parse/Plugins/Unity.Compat.dll
-
Parse/Plugins/Unity.Tasks.dll
-
컴파일 오류를 해결하려면 .NET 4.x를 사용하는 경우:
- 모든 플랫폼에 대해 다음 DLL을 제거하거나 비활성화합니다.
-
Parse/Plugins/Unity.Compat.dll
-
Parse/Plugins/Unity.Tasks.dll
-
- 모든 플랫폼에 대해 다음 DLL을 활성화합니다.
-
Parse/Plugins/dotNet45/Unity.Compat.dll
-
Parse/Plugins/dotNet45/Unity.Tasks.dll
-
다른 Firebase 플러그인을 가져오는 경우:
- Unity 프로젝트에서 Assets > Play Services Resolver > Version Handler > Update 로 이동하여 프로젝트에 올바른 DLL을 활성화합니다.
.NET 4.x 프로젝트에서 Unity 2017.1 IL2CPP 컴파일
Firebase는 Unity 2017 이상에서 실험적 빌드 옵션으로 .NET 4.x를 지원합니다. Firebase 플러그인은 Parse SDK 의 구성요소를 사용하여 이전 버전의 .NET에서 일부 .NET 4.x 클래스를 제공합니다.
따라서 Firebase Unity SDK 버전 5.4.0 이상에서는 Parse 유형(예: System.Threading.Tasks.Task
의 Parse 구현)을 .NET 프레임워크로 전달하는 유형 전달 DLL을 제공합니다. 안타깝게도 Unity 2017.1.x에 포함된 IL2CPP(C#을 C++로 변환하는 트랜스파일러)는 유형 전달 DLL을 올바르게 처리하지 않아 다음과 같은 빌드 오류가 발생합니다.
Fatal error in Unity CIL Linker Mono.Cecil.ResolutionException: Failed to
resolve System.Threading.Tasks.TaskCompletionSource`1<T>
현재 Unity 2017.1의 .NET 4.x IL2CPP 빌드 오류에 사용할 수 있는 해결 방법이 없으므로 IL2CPP로 컴파일된 프로젝트에서 .NET 4.x를 사용하려면 Unity 2017.2 이상으로 업그레이드해야 합니다.
Unity 2017.2 네트워킹
Firebase 실시간 데이터베이스는 .NET 네트워킹 스택을 사용하여 TLS 네트워크 연결을 생성합니다. .NET 4.6을 사용할 때 Unity 2017.2에서 TLS 기능이 손상되어 편집기와 데스크톱에서 실시간 데이터베이스 플러그인이 실패합니다.
이 문제에 대한 해결 방법이 없으므로 다른 버전의 Unity(예: 버전 2017.1 또는 2017.3)를 사용해야 합니다.
Unity 2020에서 Firebase Android 구성 파일이 누락됨
Gradle 빌드를 맞춤설정할 수 없는 Unity 버전을 지원하기 위해 Firebase 편집기 도구는 Assets/Plugins/Android/Firebase/res/values/google-services.xml
을 Android 리소스로 생성하여 Firebase SDK가 Android 빌드를 사용하여 기본 FirebaseApp 인스턴스를 초기화할 수 있도록 합니다.
Unity 2020에서 모든 Android 리소스는 .androidlib
접미사가 있는 디렉터리에 있어야 합니다. 프로젝트에서 Assets/Plugins/Android/Firebase
디렉터리를 생성하는 Firebase SDK를 사용하는 경우 이름을 Assets/Plugins/Android/Firebase.androidlib
로 바꿉니다. AndroidManifest.xml
, project.properties
및 res/values/google-services.xml
이 포함되어 있는지 확인하세요.
Android 앱 빌드 중 단일 dex 문제
Android 앱을 빌드하는 동안 단일 dex 파일과 관련된 빌드 실패가 발생할 수 있습니다. 프로젝트가 Gradle 빌드 시스템을 사용하도록 구성된 경우 오류 메시지는 다음과 유사합니다.
Cannot fit requested classes in a single dex file.
Dalvik Executable( .dex
) 파일은 Android 애플리케이션( .apk
)에 대한 일련의 클래스 정의 및 관련 부속 데이터를 보유하는 데 사용됩니다. 단일 dex 파일은 65,536개의 메서드에 대한 참조로 제한됩니다. 프로젝트에 있는 모든 Android 라이브러리의 총 메서드 수가 이 제한을 초과하면 빌드가 실패합니다.
Unity는 2017.2 에서 Proguard(또는 일부 Unity 버전의 다른 도구)를 사용하여 사용되지 않는 코드를 제거하는 축소를 도입하여 단일 dex 파일에서 참조되는 총 메서드 수를 줄일 수 있습니다. 이 옵션은 Player Settings > Android > Publishing Settings > Minify 에서 찾을 수 있습니다. Unity 버전에 따라 옵션이 다를 수 있으므로 공식 Unity 문서를 참조하세요.
참조된 메서드 수가 여전히 한도를 초과하는 경우 다른 옵션은 multidex
를 활성화하는 것입니다. Unity에서 이를 달성하는 방법에는 여러 가지가 있습니다.
-
Player Settings
에서Custom Gradle Template
이 활성화된 경우mainTemplate.gradle
을 수정합니다. - Android Studio를 사용하여 내보낸 프로젝트를 빌드하는 경우 모듈 수준
build.gradle
파일을 수정합니다.
자세한 내용은 multidex 사용 설명서 에서 확인할 수 있습니다.
Unity 2017 및 Unity 2018(Firebase Unity SDK 8.0.0 이상)의 Android 빌드에 대한 Java 8 지원 및 디슈가링
2021년 5월(Firebase BoM v28.0.0) Firebase는 모든 Android 라이브러리에 대한 디슈가링을 사용 중지했습니다( 출시 노트 참조). Firebase Unity SDK(8.0.0 이상)로 Android 앱을 빌드할 때 다음 빌드 오류가 표시될 수 있습니다.
> Error while dexing.
The dependency contains Java 8 bytecode. Please enable desugaring by adding the following to build.gradle
이 변경 사항은 Unity 2017 및 Unity 2018의 Android 빌드에만 영향을 미칩니다. 최신 버전의 Unity는 Gradle 빌드 파일에 기본적으로 compileOptions
블록을 추가합니다. Unity 2017 및 Unity 2018에서 이 빌드 오류를 수정하려면 다음 중 하나를 수행하십시오.
Gradle 템플릿에
compileOptions
블록을 추가합니다.-
Gradle
을 빌드 시스템으로 사용합니다. -
Player Settings
에서Custom Gradle Template
을 활성화합니다. mainTemplate.gradle
(또는 Android Studio용 프로젝트를 내보내는 경우 모듈 수준build.gradle
)에 다음 줄을 추가합니다.android { compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } }
-
또는 Android 프로젝트의 minSdkVersion을 26 이상으로 늘립니다.
Android 문제 해결 - 디슈가링 빌드 실패 도 참조하세요.
Cocoapods로 iOS용으로 빌드할 때 발생하는 문제
iOS용으로 빌드할 때 언어 로케일 또는 UTF-8 인코딩에 대한 오류로 인해 Cocoapod 설치가 실패할 수 있습니다. 현재 이 문제를 해결하는 방법에는 여러 가지가 있습니다.
터미널에서
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 패키지 관리자 (UPM)를 사용하여 가져오기
- Unity 2018.4+에서 패키지를 관리하는 데 권장되는 방법입니다.
- 이 방법을 사용하여 향후 버전 업데이트를 보다 쉽게 하고
Assets/
디렉토리를 정리하십시오.
Unity 프로젝트에서는 하나의 가져오기 방법만 사용하여 모든 Firebase 패키지를 관리해야 합니다. 아래 지침을 사용하여 개별 패키지의 버전을 업데이트할 수 있을 뿐만 아니라 필요한 경우 패키지 관리를 UPM으로 마이그레이션할 수도 있습니다(권장 가져오기 방법).
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
폴더에서 가져옵니다. - 그렇지 않으면 플레이어 설정 에서 스크립팅 런타임 버전 을 선택하고 ".NET 3.x"로 설정되어 있으면
dotnet3
폴더에서 가져옵니다.
- Unity 2019 이상을 사용하는 경우
이전에 가져온 패키지 버전의 덮어쓰기는 외부 종속성 관리자(Firebase
.unitypackages
를 가져올 때 자동으로 포함됨)에 의해 자동으로 처리되어야 합니다.그러나 이 자동 프로세스가 실패하는 경우에만 다음 폴더를 수동으로 삭제한 다음 위의 가져오기 단계를 다시 시도해야 합니다.
-
Assets/Editor Default Resources/Firebase
-
Assets/ExternalDependencyManager
-
Assets/Firebase
-
Assets/Parse
-
Assets/Plugins/iOS/Firebase
-
Firebase 패키지가 UPM에서 관리되는 경우 최신 SDK 버전을 .tgz
로 가져옵니다 . 이 가져오기는 이전 버전을 자동으로 덮어씁니다.