2022년 10월 18일에 오프라인과 온라인으로 진행될 Firebase Summit에 참여하세요. Firebase로 앱을 빠르게 개발하고 안심하고 앱을 출시하며 손쉽게 확장하는 방법을 알아보세요. 지금 등록하기

Unity 및 Firebase에 대한 문제 해결 및 FAQ

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

이 페이지에서는 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의 dotnet3dotnet4 디렉터리에서 .NET 3.x 또는 .NET 4.x와 호환되는 플러그인을 제공합니다.

프로젝트에서 활성화된 .NET 버전과 호환되지 않는 Firebase 플러그인을 가져오면 Parse SDK에 의해 구현되는 .NET 프레임워크의 일부 유형에서 컴파일 오류가 표시됩니다.

.NET 3.x를 사용하는 경우 컴파일 오류를 해결하려면:

  1. 모든 플랫폼에 대해 다음 DLL을 제거하거나 비활성화합니다.
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll
  2. 모든 플랫폼에 대해 다음 DLL을 활성화합니다.
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll

.NET 4.x를 사용하는 경우 컴파일 오류를 해결하려면:

  1. 모든 플랫폼에 대해 다음 DLL을 제거하거나 비활성화합니다.
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll
  2. 모든 플랫폼에 대해 다음 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가 기본 FirebaseApp 인스턴스를 초기화하는 데 사용할 수 있도록 Android 빌드

Unity 2020에서 모든 Android 리소스는 .androidlib 접미사가 있는 디렉터리에 있어야 합니다. 프로젝트에서 Assets/Plugins/Android/Firebase 디렉터리를 생성하는 Firebase SDK를 사용하는 경우 이름을 Assets/Plugins/Android/Firebase.androidlib 로 변경합니다. AndroidManifest.xml , project.propertiesres/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 에서 Minification을 도입했습니다. 이 기능은 Proguard(또는 일부 Unity 버전의 다른 도구)를 사용하여 사용하지 않는 코드를 제거하여 단일 dex 파일에서 참조되는 메서드의 총 수를 줄일 수 있습니다. 이 옵션은 플레이어 설정 > Android > 게시 설정 > 축소 에서 찾을 수 있습니다. 옵션은 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 블록을 추가합니다.

    1. Gradle 을 빌드 시스템으로 사용하십시오.
    2. Player Settings 에서 Custom Gradle Template 을 활성화합니다.
    3. 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(권장 가져오기 방법)으로 마이그레이션할 수도 있습니다.