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 bilgileri yer almaktadır.

Başka sorunlarınız mı var veya sorununuz aşağıda belirtilmemiş mi? Firebase genelinde veya ürüne özel daha fazla SSS için ana Firebase SSS sayfasını inceleyin.

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

Android uygulaması oluştururken tek bir dex dosyasıyla 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ı, Android uygulamaları (.apk) için bir dizi sınıf tanımını ve bunlarla ilişkili ek verileri tutmak amacıyla kullanılır. Tek bir dex dosyası, 65.536 yönteme referans vermekle sınırlıdır. Projenizdeki tüm Android kitaplıklarının toplam yöntem sayısı bu sınırı aşarsa derleme başarısız olur.

Unity, 2017.2 sürümünde Sadeleştirme özelliğini kullanıma sundu. Bu özellik, kullanılmayan kodları kaldırmak için Proguard'ı (veya Unity'nin bazı sürümlerindeki diğer araçları) kullanır. Bu sayede, tek bir dex dosyasında referans verilen yöntemlerin toplam sayısı azaltılabilir. Bu seçeneği Player Settings > Android > Publishing Settings > Minify (Oynatıcı Ayarları > Android > Yayınlama Ayarları > Küçült) 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ı hâlâ sınırı aşıyorsa başka bir seçenek de multidex özelliğini etkinleştirmektir. Unity'de bunu yapmanın birden fazla yolu vardır:

  • Player Settings altındaki Custom Gradle Template etkinleştirilmişse mainTemplate.gradle ayarını değiştirin.
  • Dışa aktarılan projeyi derlemek için Android Studio kullanıyorsanız modül düzeyindeki build.gradle dosyasını değiştirin.

Daha fazla bilgiyi multidex kullanıcı rehberinde bulabilirsiniz.

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

Android için derleme yaparken minSdkVersion 23'ü hedefliyorsanız dexing adımında (genellikle ":launcher:mergeExtDexDebug" Gradle görevinde) başarısız olabilir ve Android kitaplıklarından birinin "dönüştürülemediğini" belirtebilir. Bu sorun, çoğu Unity düzenleyicisinin 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.
  • Player Settings > Android > Publishing Settings > Minify (Oynatıcı Ayarları > Android > Yayınlama Ayarları > Sadeleştir) bölümünde Android sadeleştirmeyi 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üklemesi, dil yerel ayarı veya UTF-8 kodlamasıyla ilgili bir hatayla başarısız olabilir. Şu anda bu sorunu çözmek için birkaç farklı yöntem vardır.

  • Terminalden doğrudan pod install komutunu çalıştırın ve elde edilen 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 görülüyor.

  • ~/.bash_profile veya eşdeğerinde 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 süreci, ilk olarak nasıl içe aktarıldıklarına bağlıdır. İki alternatif içe aktarma yöntemi şunlardır:

  • Projenizin Assets/ dizini altındaki .unitypackage dosya içe aktarılıyor
  • Unity Paket Yöneticisi'ni (UPM) kullanarak içe aktarma
    • Unity 2018.4 ve sonraki sürümlerde paketleri yönetmek için bu yöntem önerilir.
    • Gelecekteki sürüm güncellemelerini kolaylaştırmak ve Assets/ dizininizi daha temiz tutmak 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 ayrı ayrı 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.