Sorun giderme & Unity ve Firebase ile ilgili SSS

Bu sayfada Unity'ye özgü sorunlar için ipuçları ve sorun giderme adımları yer almaktadır karşılaşabileceğiniz bazı yaygın durumlardır.

Başka sorunlarınız var mı veya sorununuzu aşağıda ana hatlarıyla göremiyor musunuz? Tüm ayarları kontrol edin Firebase'i kullanma hakkında daha fazla bilgi için ana Firebase SSS SSS bölümüne bakın.

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

Firebase, Unity 2017'de deneysel bir derleme seçeneği olarak .NET 4.x'i destekler ve daha sonra. Firebase eklentileri Ayrıştırarak .NET'in önceki sürümlerindeki.NET 4 .x sınıfları.

Bu nedenle, Firebase Unity SDK'nın 5.4.0 ve sonraki sürümleri dotnet3 ve dotnet4 bölgelerinde .NET 3.x veya .NET 4.x ile uyumludur. dizinlerine de bakabilirsiniz.

.NET sürümüyle uyumlu olmayan bir Firebase eklentisini içe aktarırsanız etkinleştirdiğinizde, tablodaki bazı türlerden gelen derleme hatalarını .NET çerçevesidir.

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

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

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

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

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

  • Unity projenizde şuraya gidin: Öğeler > Play Hizmetleri Çözücü > Sürüm İşleyici > Güncelle kullanarak projeniz için doğru DLL'yi etkinleştirin.

.NET 4 .x projelerinde Unity 2017.1 IL2CPP derlemesi

Firebase, Unity 2017'de deneysel bir derleme seçeneği olarak .NET 4.x'i destekler ve daha sonra. Firebase eklentileri Ayrıştırarak .NET'in önceki sürümlerindeki.NET 4 .x sınıfları.

Bu nedenle, Firebase Unity SDK'nın 5.4.0 ve sonraki sürümleri Ayrıştırma türlerini yönlendiren DLL'leri yönlendirme (örneğin, System.Threading.Tasks.Task) .NET çerçevesine taşımanızı sağlar. Maalesef, IL2CPP Unity 2017.1.x'te gönderilen bir aktarıcı (C# değerini C++ biçimine dönüştüren bir aktarıcı) yönlendirme DLL'lerini doğru şekilde işlemeyebilir. Bu da, şuna benzememesi gerekir:

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

Şu anda Unity 2017.1. Bu nedenle cihazınızda .NET 4.x'i kullanmak için Unity 2017.2 veya daha yeni bir sürüme IL2CPP ile derlenen projelere odaklanacağız.

Unity 2017.2 ağ iletişimi

Firebase Realtime Database, .NET ağını kullanarak TLS ağ bağlantıları oluşturur yığını. .NET 4 .6 kullanılırken TLS işlevi Unity 2017.2'de bozulduğunda editörlerde ve masaüstünde başarısız olmasını sağlayan Realtime Database eklentisidir.

Bu sorun için geçici bir çözüm bulunmadığından farklı bir sürüm kullanmanız gerekir. Unity, örneğin 2017.1 veya 2017.3 sürümü.

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

Unity'nin Gradle derlemesini özelleştirdiğinizde, Firebase düzenleyici aracı Android olarak Assets/Plugins/Android/Firebase/res/values/google-services.xml Firebase SDK'sının kullanabilmesi için bir Android derlemesi olarak paketlenecek kaynak varsayılan FirebaseApp örneğini başlatmak için kullanılır.

Unity 2020'de tüm Android kaynakları .androidlib son eki Projeniz, Assets/Plugins/Android/Firebase dizini, şu şekilde yeniden adlandır: Assets/Plugins/Android/Firebase.androidlib. Şunları içerdiğinden emin olun: AndroidManifest.xml, project.properties ve res/values/google-services.xml.

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

Android uygulaması geliştirirken, indirme işlemi sırasında tek bir dex dosyası. Gradle derleme sistemini kullanacak şekilde yapılandırıldığından emin olun.

Cannot fit requested classes in a single dex file.

Dalvik Executable (.dex) dosyaları, bir dizi sınıf tanımını tutmak için kullanılır ve Android uygulamaları için ilişkili ek verileri (.apk). Tek bir dex dosyası 65.536 yönteme referansta bulunmuştur. Toplam projenizdeki tüm Android kitaplıklarındaki yöntemlerin sayısı bu sınırı aşıyor.

Unity Küçültme'yi kullanıma sundu (veya Unity'nin bazı sürümlerinde diğer araçları) kullanan, ve böylece kullanılmayan kodları çıkarmak için harcamalarınızı azaltabilir, tek bir dex dosyasında başvuruda bulunmanız gerekir. Bu seçeneği şurada bulabilirsiniz: Oynatıcı Ayarları > Android > Yayınlama Ayarları > Küçült. Seçenekler Unity'nin farklı sürümlerinde farklı olduğundan emin olmak için Unity belgelerinden faydalanabilirsiniz.

Referans verilen yöntemlerin sayısı sınırı aşmaya devam ediyorsa başka bir seçenek de multidex seçeneğini etkinleştirin. Unity'de bunu yapmanın birden çok yolu vardır:

  • Player Settings altındaki Custom Gradle Template etkinleştirilirse mainTemplate.gradle öğesini değiştir.
  • Dışa aktarılan projeyi derlemek için Android Studio'yu kullanırsanız, modül düzeyinde build.gradle dosyası oluşturun.

Daha ayrıntılı bilgiyi multidex kullanıcı kılavuzunda bulabilirsiniz.

Unity 2017 ve Unity 2018'de Android derlemeleri için Java 8 desteği ve altını çizme (Firebase Unity SDK 8.0.0 ve üzeri)

Mayıs 2021'de (Firebase BoM v28.0.0) Firebase, tüm Android kitaplıklarında alt sınır oluşturma özelliğini devre dışı bıraktı (sürüm notunu inceleyin). Firebase Unity SDK (8.0.0 ve üzeri) ile 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ına 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. Derleme sistemi olarak Gradle kullanın.
    2. Player Settings altında Custom Gradle Template özelliğini etkinleştirin.
    3. Aşağıdaki satırları mainTemplate.gradle öğesine (veya bir projeyi Android Studio için dışa aktarıyorsanız modül düzeyi build.gradle) ekleyin:

      android {
          compileOptions {
              sourceCompatibility 1.8
              targetCompatibility 1.8
          }
      }
      
  • Alternatif olarak, Android projenizin minSdkVersion değerini 26 veya üzerine yükseltin.

Ayrıca bkz. Android sorun giderme - derleme hatalarını çözümleme.

Cocoapods ile iOS için geliştirme yaparken karşılaşılan sorunlar

iOS için geliştirme yaparken, Cocoapod yüklemesi başarısız olabilir ve yerel dil ayarını veya UTF-8 kodlamasını kullanabilirsiniz. Şu an için DMAIC ve PDCA gibi adımları da atmanız gerekir.

  • Terminalden pod install komutunu doğrudan çalıştırın ve sonuç olarak xcworkspace dosyanız.

  • Cocoapods'un 1.10.2 sürümüne geçin. Sorun şurada mevcut: Sürüm 1.11 veya daha yeni bir sürüme sahip olmanız gerekir.

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

Firebase Unity SDK'larının sürümünü güncelleme

Firebase Unity SDK'larının sürümlerini güncelleme işlemi, SDK'ların ilk başta içe aktarıldı. İki alternatif içe aktarma yöntemi şunlardır:

  • .unitypackage dosya, projenizin Assets/ dizinine aktarılıyor
  • Şunu kullanarak içe aktarma: Unity Paket Yöneticisi (UPM)
    • Unity 2018.4 ve sonraki sürümlerde paketleri yönetmenin önerilen yolu budur.
    • Gelecekteki sürüm güncellemelerinizi kolaylaştırmak ve Assets/ dizin temizleyicidir.

Unity projenizde tüm dosyalarınızı yönetmek için yalnızca bir içe aktarma yöntemi Firebase paketleri. Aşağıdaki talimatlar yalnızca tek tek paketin sürümünü değil, aynı zamanda gerekirse paketi taşımak için yönetimini UPM'ye iletir (önerilen içe aktarma yöntemi).