Unity ve Firebase için Sorun Giderme ve SSS

Bu sayfa, Firebase'i kullanırken karşılaşabileceğiniz Unity'ye özgü sorunlar için ipuçları ve sorun giderme sunar.

Başka sorunlarınız mı var veya sorununuzu aşağıda ana hatlarıyla göremiyor musunuz? Kontrol emin olun ana Firebase SSS daha-tava Firebase veya ürüne özel SSS için.

Unity 2017.x ve sonraki sürümleri kullanırken .NET uyumluluğu

Firebase, Unity 2017 ve sonraki sürümlerde deneysel bir derleme seçeneği olarak .NET 4.x'i destekler. Firebase eklentileri bileşenlerini kullanmak Ayrıştırma SDK NET önceki sürümlerinde bazı .NET 4.x sınıfları sağlamaktır.

Bu nedenle, Firebase Birlik SDK sürümü 5.4.0 ve üstü ya .NET 3.x veya .NET 4.x ile uyumlu eklentileri sağlamak dotnet3 ve dotnet4 Firebase Birlik SDK dizinleri.

Projenizde etkinleştirilen .NET sürümüyle uyumlu olmayan bir Firebase eklentisi içe aktarırsanız, Ayrıştırma SDK'sı tarafından uygulanan .NET çerçevesindeki bazı türlerden derleme hataları görürsünüz.

.NET 3.x kullanıyorsanız derleme hatasını çözmek için:

  1. Tüm platformlar için aşağıdaki DLL'leri kaldırın veya devre dışı bırakın:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll
  2. Tüm platformlar için aşağıdaki DLL'leri etkinleştirin:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll

.NET 4.x kullanıyorsanız derleme hatasını çözmek için:

  1. Tüm platformlar için aşağıdaki DLL'leri kaldırın veya devre dışı bırakın:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll
  2. Tüm platformlar için aşağıdaki DLL'leri etkinleştirin:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll

Başka bir Firebase eklentisi içe aktarırsanız:

  • Aktif gezinme sizin Birlik projede> Hizmetler Çözümleyici> Sürüm Handler> Güncelleme Projeniz için doğru dll etkinleştirmek için oynayın.

.NET 4.x projelerinde Unity 2017.1 IL2CPP derlemesi

Firebase, Unity 2017 ve sonraki sürümlerde deneysel bir derleme seçeneği olarak .NET 4.x'i destekler. Firebase eklentileri bileşenlerini kullanmak Ayrıştırma SDK NET önceki sürümlerinde bazı .NET 4.x sınıfları sağlamaktır.

Bu nedenle, daha sonra Firebase Birlik SDK sürümü 5.4.0 ve Ayrıştırma türleri iletmek tip yönlendirme DLL'lerden (örneğin bir, Ayrıştırma uygulaması sağlar System.Threading.Tasks.Task .NET framework kadar). Ne yazık ki, Unity 2017.1.x'te gönderilen IL2CPP (C#'yi C++'a dönüştüren bir aktarıcı), aşağıdakine benzer derleme hatalarıyla sonuçlanan tür iletme DLL'lerini doğru şekilde işlemez:

Fatal error in Unity CIL Linker Mono.Cecil.ResolutionException: Failed to
resolve System.Threading.Tasks.TaskCompletionSource`1<T>

Şu anda Unity 2017.1'de .NET 4.x IL2CPP derleme hataları için bir geçici çözüm bulunmamaktadır, bu nedenle IL2CPP ile derlenmiş projelerde .NET 4.x'i kullanmak için Unity 2017.2 veya sonraki bir sürüme yükseltmeniz gerekir.

Unity 2017.2 ağ iletişimi

Firebase Realtime Database, .NET ağ yığınını kullanarak TLS ağ bağlantıları oluşturur. Unity 2017.2'de .NET 4.6 kullanılırken TLS işlevi bozulur ve Realtime Database eklentisinin editörlerde ve masaüstünde başarısız olmasına neden olur.

Bu sorun için bir geçici çözüm yoktur, bu nedenle Unity'nin farklı bir sürümünü, örneğin 2017.1 veya 2017.3 sürümünü kullanmanız gerekir.

Unity 2020'de eksik Firebase Android yapılandırma dosyası

Gradle yapı özelleştirme olanağı yoktur Birlik destek sürümleri için, Firebase editör Aracın oluşturduğu Assets/Plugins/Android/Firebase/res/values/google-services.xml bir Android kaynak olarak bir içine paketlenecek Firebase SDK'sının varsayılan FirebaseApp örneğini başlatmak için kullanabilmesi için Android derlemesi.

Birlik 2020 yılında, tüm Android kaynaklar ile dizinleri olmalıdır .androidlib soneki. Projeniz bir üreten bir Firebase SDK kullanıyorsa Assets/Plugins/Android/Firebase dizini için yeniden adlandırın Assets/Plugins/Android/Firebase.androidlib . Yap emin içerdiği AndroidManifest.xml , project.properties ve res/values/google-services.xml .

Android uygulaması oluştururken tek dex ile ilgili bir sorun

Android uygulaması oluştururken, tek bir dex dosyasına sahip olmakla ilgili bir derleme hatasıyla karşılaşabilirsiniz. Projeniz Gradle derleme sistemini kullanacak şekilde yapılandırılmışsa, hata mesajı aşağıdakine benzer.

Cannot fit requested classes in a single dex file.

Dalvik Çalıştırılabilir ( .dex ) dosyaları sınıf tanımları ve Android uygulamalarında (onların ilişkili yardımcı veri kümesi tutmak için kullanılır .apk ). Tek bir dex dosyası, 65.536 yönteme referansla sınırlıdır. Projenizdeki tüm Android kitaplıklarındaki toplam yöntem sayısı bu sınırı aşarsa derleme başarısız olur.

Birlik tanıtıldı küçültülmesi tek dex dosyasında başvurulan yöntemlerin sayısını azaltabilir kullanılmayan kod dışında Şerit (Unity bazı sürümlerinde veya diğer araçları) ProGuard kullanan, 2017.2 yılında. Opsiyon Oyuncu Ayarlar> Android> Yayıncılık Ayarlar> küçültmek bulunabilir. Seçenekler Unity'nin farklı sürümlerinde farklılık gösterebilir, bu nedenle resmi Unity belgelerine bakın.

Başvurulan yöntemlerden sayısı hala sınırını aşarsa, başka bir seçenek sağlamaktır multidex . Unity'de bunu başarmanın birden fazla yolu vardır:

  • Eğer Custom Gradle Template altında Player Settings etkinleştirildiğinde, değiştirme mainTemplate.gradle .
  • Dışa proje oluşturmak için Android Studio kullanıyorsanız, modül düzeyindeki değiştirmek build.gradle dosyasını.

Daha fazla detay bulunabilir multidex kullanım kılavuzuna .

Unity 2017 ve Unity 2018'de (Firebase Unity SDK 8.0.0 ve üstü) Android derlemeleri için Java 8 desteği ve şeker azaltma

Mayıs 2021 (Firebase BoM v28.0.0), tüm Android kütüphaneler için Firebase engelli desugaring olarak (bkz bırakma notu ). Firebase Unity SDK (8.0.0 ve üstü) ile bir Android uygulaması oluştururken aşağıdaki derleme hatasını görebilirsiniz:

> Error while dexing.
 The dependency contains Java 8 bytecode. Please enable desugaring by adding the following to build.gradle

Bu değişiklik, yalnızca Unity 2017 ve Unity 2018'deki Android derlemelerini etkiler. Birlik yeni versiyonları eklemek compileOptions gradle inşa dosyaları varsayılan olarak blok. Unity 2017 ve Unity 2018'de bu derleme hatasını düzeltmek için aşağıdakilerden birini yapın:

  • Bir ekleme compileOptions sizin gradle şablona bloğu:

    1. Kullanım Gradle inşa sistemi olarak.
    2. Enable Custom Gradle Template altında Player Settings .
    3. Aşağıdakilere satırları ekleyin mainTemplate.gradle (veya modül düzeyi build.gradle Android Studio için bir proje ihraç varsa):

      android {
          compileOptions {
              sourceCompatibility 1.8
              targetCompatibility 1.8
          }
      }
      
  • Alternatif olarak, Android projeniz için minSdkVersion'ı 26 veya üstüne yükseltin.

Ayrıca bkz desugaring inşa hatalarını - Android giderme .