Sorun giderme & Unity ve Firebase ile ilgili SSS

Bu sayfada, Firebase'i kullanırken karşılaşabileceğiniz Unity'ye özgü sorunlarla ilgili ipuçları ve sorun giderme adımları sunulmaktadır.

Başka sorunlarınız mı var yoksa sorununuzun aşağıda açıklanmadığını mı düşünüyorsunuz? Firebase genelindeki veya ürüne özel diğer SSS'ler için ana Firebase SSS sayfasına göz atın.

Android uygulaması oluştururken tek dex ile ilgili sorun

Android uygulamasını 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 yürütülebilir (.dex) dosyaları, Android uygulamaları (.apk) için bir dizi sınıf tanımını ve bunlarla ilişkili ek verileri depolamak amacıyla 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, kullanılmayan kodu kaldırmak için Proguard'ı (veya Unity'nin bazı sürümlerindeki diğer araçları) kullanan Küçültme özelliğini 2017.2'de kullanıma sundu. Bu özellik, tek bir dex dosyasında referans verilen yöntemlerin toplam sayısını azaltabilir. Bu seçeneği Oynatıcı Ayarları > Android > Yayınlama Ayarları > Küçük Boyutlu bölümünde bulabilirsiniz. Seçenekler, Unity'nin farklı sürümlerinde farklılık gösterebilir. Bu nedenle, resmi Unity belgelerine bakın.

Referans verilen yöntemlerin sayısı yine de sınırı aşıyorsa multidex seçeneğini etkinleştirmek de bir seçenektir. Unity'de bunu yapmanı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 derlemek için Android Studio'yu kullanıyorsanız modül düzeyindeki build.gradle dosyasını değiştirin.

Daha fazla bilgiyi multidex kullanıcı kılavuzunda bulabilirsiniz.

minSdkVersion 23 ile Android için derleme yaparken karşılaşılan sorunlar

Android için derleme yaparken minSdkVersion 23'ü hedefliyorsanız derleme işlemi, genellikle Gradle ":launcher:mergeExtDexDebug" görevinde olan dexing adımında başarısız olabilir. Bu durumda, Android kitaplıklarından birinin "dönüştürülemediği" söylenir. Bu durum, çoğu Unity düzenleyicinin kullandığı Android SDK'daki varsayılan dex aracındaki bir hatadan kaynaklanır ve birkaç farklı şekilde düzeltilebilir:

  • minSdkVersion değerini 24 olarak ayarlayın.
  • Oynatıcı Ayarları > Android > Yayınlama Ayarları > Kodu sıkıştır bölümünde Android kod sıkıştırma özelliğini etkinleştirin.
  • settingsTemplate.gradle dosyanıza aşağıdakileri ekleyerek dex aracının farklı bir sürümünü belirtin:
buildscript {
  repositories {
    mavenLocal()
    maven { url 'https://maven.google.com'  }
    mavenCentral()
  }
  dependencies {
    classpath 'com.android.tools:r8:8.3.37'
  }
}

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

iOS için derleme yaparken Cocoapod yükleme işlemi, dil yerel ayarı veya UTF-8 kodlaması ile ilgili bir hatayla başarısız olabilir. Şu anda bu sorunun üstesinden gelmenin birkaç farklı yolu vardır.

  • Terminalde doğrudan pod install dosyasını çalıştırın ve oluşturulan xcworkspace dosyasını açın.

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

  • ~/.bash_profile hesabınıza veya eşdeğerine 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 başlangıçta nasıl içe aktarıldığına bağlıdır. İki alternatif içe aktarma yöntemi aşağıda verilmiştir:

  • Projenizin Assets/ dizinine .unitypackage dosyaları aktarma
  • Unity Paket Yöneticisi'ni (UPM) kullanarak içe aktarma
    • Bu, Unity 2018.4 ve sonraki sürümlerde paketleri yönetmenin önerilen yoludur.
    • Gelecekteki sürüm güncellemelerini kolaylaştırmak ve Assets/ dizininizi temizlemek 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 kullanmanız gerekir. Aşağıdaki talimatlar, yalnızca paketlerin sürümünü güncellemek için değil, gerekirse paket yönetimini UPM'ye (önerilen içe aktarma yöntemi) taşımak için de kullanılabilir.

Firebase paketleri Assets/ dizinindeyse SDK sürümünü güncellemek için iki seçeneğiniz vardır:

  • 1. seçenek (önerilen): UPM'yi kullanmaya geçin (Unity 2018.4 ve sonraki sürümlerde kullanılabilir)

    • Firebase tarafından sağlanan paket yönetimini UPM'ye taşıma talimatlarını uygulayın.
    • Bu yöntem, .unitypackage iş akışını kullanmaya devam etmekten daha fazla başlangıç kurulumu gerektirse de sonraki SDK sürümü güncellemelerinin kolaylığı açısından avantaj sağlar.
  • 2. Seçenek: .unitypackage dosyalarını Assets/ dizinine aktarmak için kullanmaya devam edin

    1. Güncellenen sürüm için paketlerin her birini içe aktarın.

      firebase_unity_sdk.zip dosyasını Firebase web sitesinden indirirseniz tüm .unitypackages dosyalarını doğru dotnet klasöründen içe aktardığınızdan emin olun.

      • Unity 2019 veya sonraki bir sürümü kullanıyorsanız dotnet4 klasöründen içe aktarın.
      • Aksi takdirde, Oynatıcı Ayarları'nda Komut Dosyası Çalıştırma Sürümü'nü seçin ve ".NET 3.x" olarak ayarlanmışsa dotnet3 klasöründen içe aktarın.
    2. Daha önce içe aktarılan paket sürümlerinin üzerine yazılması, Harici Bağımlılık Yöneticisi tarafından otomatik olarak yönetilir (Firebase .unitypackages'ü içe aktardığınızda otomatik olarak dahil edilir).

      Ancak bu otomatik işlem yalnızca başarısız olursa aşağıdaki klasörleri manuel olarak silmeniz ve ardından yukarıdaki içe aktarma adımını tekrar denemeniz gerekir.

      • Assets/Editor Default Resources/Firebase
      • Assets/ExternalDependencyManager
      • Assets/Firebase
      • Assets/Parse
      • Assets/Plugins/iOS/Firebase

Firebase paketleri UPM tarafından yönetiliyorsa daha yeni SDK sürümünü .tgz olarak içe aktarın. Bu içe aktarma işlemi, önceki sürümün üzerine otomatik olarak yazar.