Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기

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

이 페이지에서는 Firebase를 사용할 때 발생할 수 있는 Unity 관련 문제에 대한 팁과 문제 해결을 제공합니다.

다른 문제가 있거나 아래에 설명된 문제가 표시되지 않습니까? 아웃 확인해야합니다 주요 중포 기지 FAQ를 더-팬 중포 기지 또는 제품 별 자주 묻는 질문.

Unity 2017.x 이상 사용 시 .NET 호환성

Firebase는 Unity 2017 이상에서 실험적 빌드 옵션으로 .NET 4.x를 지원합니다. 중포 기지 플러그인의 구성 요소를 사용하는 구문 분석 SDK를 .NET 이전 버전의 일부 .NET 4.x의 클래스를 제공합니다.

따라서 중포 기지 유니티 SDK 버전 5.4.0 및 이후 버전에서 하나 .NET 3.x 또는 .NET 4.x의와 호환되는 플러그인을 제공 dotnet3dotnet4 중포 기지 유니티 SDK의 디렉토리.

프로젝트에서 활성화된 .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 플러그인을 가져오는 경우:

  • 자산에 대한 탐색이 당신의 유니티 프로젝트에서> 서비스 해결 프로그램> 버전 핸들러> 업데이트 프로젝트에 대한 올바른 DLL을 가능하게 재생합니다.

.NET 4.x 프로젝트의 Unity 2017.1 IL2CPP 컴파일

Firebase는 Unity 2017 이상에서 실험적 빌드 옵션으로 .NET 4.x를 지원합니다. 중포 기지 플러그인의 구성 요소를 사용하는 구문 분석 SDK를 .NET 이전 버전의 일부 .NET 4.x의 클래스를 제공합니다.

따라서, 나중에 중포 기지 유니티 SDK 버전 5.4.0 및 파싱 유형을 전달 형 전달 된 DLL (예를 들면, 파스 구현 제공 System.Threading.Tasks.Task .NET 프레임 워크에). 안타깝게도 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을 빌드를 사용자 정의 할 수있는 기능이없는 화합의 지원 버전을 위해, 중포 기지 편집기 도구를 생성 Assets/Plugins/Android/Firebase/res/values/google-services.xml 안드로이드 리소스로는로 포장한다 Firebase SDK가 기본 FirebaseApp 인스턴스를 초기화하는 데 사용할 수 있도록 Android 빌드

유니티 2020 년, 모든 안드로이드 자원이와 디렉토리에 있어야합니다 .androidlib 접미사. 프로젝트가 생성하는 중포 기지 SDK 사용하는 경우 Assets/Plugins/Android/Firebase 디렉토리를 이름을 바꿉니다 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.

달빅 실행 파일 ( .dex ) 파일은 클래스 정의와 안드로이드 응용 프로그램 (대한 관련 부가 데이터의 집합을 보유하는 데 사용되는 .apk ). 단일 dex 파일은 65,536개 메서드에 대한 참조로 제한됩니다. 프로젝트에 있는 모든 Android 라이브러리의 총 메서드 수가 이 제한을 초과하면 빌드가 실패합니다.

유니티 도입 축소에서는을 하나의 덱스 파일에서 참조 방법의 수를 줄일 수있는 사용하지 않은 코드를 밖으로 스트립 (유니티의 일부 버전이나 다른 도구) Proguard와를 사용하는, 2017.2에서. 이 옵션은 플레이어 설정> 안드로이드> 출판 설정> 스크립트의 축소에서 찾을 수 있습니다. 옵션은 Unity 버전에 따라 다를 수 있으므로 공식 Unity 문서를 참조하십시오.

참조하는 방법의 수는 여전히 제한을 초과하는 경우, 다른 옵션을 활성화하는 것입니다 multidex . Unity에서 이를 달성하는 방법에는 여러 가지가 있습니다.

  • 경우 Custom Gradle Template 에서 Player Settings 활성화되어, 수정 mainTemplate.gradle .
  • 내 보낸 프로젝트를 빌드 할 안드로이드 Studio를 사용하는 경우, 모듈 수준 수정 build.gradle 파일을.

자세한 내용은에서 찾을 수 있습니다 multidex 사용 설명서 .

Unity 2017 및 Unity 2018(Firebase Unity SDK 8.0.0 이상)의 Android 빌드에 대한 Java 8 지원 및 디슈가링

2021년 5월 (중포 기지의 BOM v28.0.0), 모든 안드로이드 라이브러리에 대한 중포 기지 장애인 desugaring에서 (참조 릴리스 노트 ). 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 빌드에만 영향을 줍니다. 유니티의 최신 버전은 추가 compileOptions Gradle을 빌드 파일에서 기본적으로 블록을. Unity 2017 및 Unity 2018에서 이 빌드 오류를 수정하려면 다음 중 하나를 수행하십시오.

  • 추가 compileOptions 당신의 Gradle을 템플릿에 블록 :

    1. 사용 Gradle 빌드 시스템으로.
    2. 사용 Custom Gradle Template 에서 Player Settings .
    3. 다음 라인을 추가 mainTemplate.gradle (또는 모듈 수준 build.gradle 안드로이드 스튜디오 프로젝트를 내보내는 경우)를 :

      android {
          compileOptions {
              sourceCompatibility 1.8
              targetCompatibility 1.8
          }
      }
      
  • 또는 Android 프로젝트의 minSdkVersion을 26 이상으로 늘립니다.

참조 desugaring 빌드 실패 - 안드로이드 문제 해결 .