Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Unity ve Firebase için Sorun Giderme ve SSS

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

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? Pan-Firebase veya ürüne özel SSS için ana Firebase SSS bölümüne göz atmayı unutmayın.

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, .NET'in önceki sürümlerinde bazı .NET 4.x sınıfları sağlamak için Ayrıştırma SDK'sının bileşenlerini kullanır.

Bu nedenle, Firebase Unity SDK sürüm 5.4.0 ve sonraki sürümleri, Firebase Unity SDK'nın dotnet3 ve dotnet4 dizinlerinde .NET 3.x veya .NET 4.x ile uyumlu eklentiler sağlar.

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:

  • Unity projenizde, projeniz için doğru DLL'leri etkinleştirmek için Varlıklar > Play Hizmetleri Çözümleyici > Sürüm İşleyici > Güncelle'ye gidin.

.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, .NET'in önceki sürümlerinde bazı .NET 4.x sınıfları sağlamak için Ayrıştırma SDK'sının bileşenlerini kullanır.

Bu nedenle, Firebase Unity SDK sürüm 5.4.0 ve sonraki sürümleri, Ayrıştırma türlerini (örneğin, System.Threading.Tasks.Task Ayrıştırma uygulaması) .NET çerçevesine ileten tür iletme DLL'leri sağlar. 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 derlemesini özelleştirme yeteneğine sahip olmayan Unity sürümlerini desteklemek için, Firebase düzenleyici aracı Assets/Plugins/Android/Firebase/res/values/google-services.xml bir Android kaynağı olarak paketlenecek şekilde oluşturur. Firebase SDK'sının varsayılan FirebaseApp örneğini başlatmak için kullanabilmesi için Android derlemesi.

Unity 2020'de tüm Android kaynakları, .androidlib son ekine sahip dizinlerde olmalıdır. Projeniz Assets/Plugins/Android/Firebase dizini oluşturan bir Firebase SDK kullanıyorsa, Assets/Plugins/Android Assets/Plugins/Android/Firebase.androidlib Firebase.androidlib olarak yeniden adlandırın. AndroidManifest.xml , project.properties ve res/values/google-services.xml içerdiğinden emin olun.

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 Executable ( .dex ) dosyaları, bir dizi sınıf tanımını ve Android uygulamaları ( .apk ) için ilişkili ek verilerini tutmak için kullanılır. 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.

Unity, 2017.2'de kullanılmayan kodu çıkarmak için Proguard'ı (veya Unity'nin bazı sürümlerinde bulunan diğer araçları) kullanan Minification'ı tanıttı; bu, tek bir dex dosyasında başvurulan yöntemlerin toplam sayısını azaltabilir. Seçenek, Oyuncu Ayarları > Android > Yayınlama Ayarları > Küçült bölümünde bulunabilir. Seçenekler Unity'nin farklı sürümlerinde farklılık gösterebilir, bu nedenle resmi Unity belgelerine bakın.

Başvurulan yöntemlerin sayısı hala sınırı aşıyorsa, başka bir seçenek de multidex etkinleştirmektir. Unity'de bunu başarmanın birden fazla yolu vardır:

  • Player Settings altında Custom Gradle Template etkinse, mainTemplate.gradle öğesini değiştirin.
  • Dışa aktarılan projeyi oluşturmak için Android Studio kullanıyorsanız, modül düzeyinde build.gradle dosyasını değiştirin.

Daha fazla ayrıntı multidex kullanım kılavuzunda bulunabilir.

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'de (Firebase BoM v28.0.0), Firebase tüm Android kitaplıkları için şekerden arındırmayı devre dışı bıraktı ( sürüm notuna bakın). 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. Unity'nin daha yeni sürümleri, gradle derleme dosyalarında varsayılan olarak compileOptions bloğunu ekler. Unity 2017 ve Unity 2018'de bu derleme hatasını düzeltmek için aşağıdakilerden birini yapın:

  • Gradle şablonunuza bir compileOptions bloğu ekleyin:

    1. Yapı sistemi olarak Gradle kullanın.
    2. Player Settings altında Custom Gradle Template etkinleştirin.
    3. Aşağıdaki satırları mainTemplate.gradle (veya Android Studio için bir proje dışa aktarıyorsanız modül düzeyinde build.gradle ) ekleyin:

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

Ayrıca bkz. Android sorun giderme - derleme hatalarını giderme .

Cocoapod'larla iOS için derleme yaparken karşılaşılan sorunlar

iOS için oluştururken, Cocoapod kurulumu dil yerel ayarı veya UTF-8 kodlaması ile ilgili bir hatayla başarısız olabilir. Şu anda soruna geçici bir çözüm bulmanın birkaç farklı yolu vardır.

  • Terminalden, doğrudan pod install çalıştırın ve ortaya çıkan xcworkspace dosyasını açın.

  • Cocoapods sürümünü 1.10.2'ye düşürün. Sorun yalnızca 1.11 ve daha yeni sürümlerde mevcuttur.

  • ~/.bash_profile veya eşdeğerinde, export LANG=en_US.UTF-8 ekleyin

Firebase Unity SDK'larının sürümü nasıl güncellenir?

Firebase Unity SDK'larının sürümlerini güncelleme işlemi, bunların başlangıçta nasıl içe aktarıldığına bağlıdır. İşte iki alternatif içe aktarma yöntemi:

  • Projenizin Assets/ dizini altındaki .unitypackage dosyalarını içe aktarma
  • Unity Paket Yöneticisi'ni (UPM) kullanarak içe aktarma
    • Unity 2018.4+ içindeki paketleri yönetmenin önerilen yolu budur.
    • Gelecekteki sürüm güncellemelerini kolaylaştırmak ve Assets/ dizininizi daha temiz hale getirmek için bu yöntemi kullanın.

Unity projenizde, tüm Firebase paketlerinizi yönetmek için yalnızca bir içe aktarma yöntemi kullanmalısınız. Aşağıdaki talimatlar yalnızca tek tek paketlerin sürümünü güncellemek için değil, aynı zamanda gerekirse paket yönetimini UPM'ye (önerilen içe aktarma yöntemi) taşımak için de kullanılabilir.