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 SettingsaltındakiCustom Gradle TemplateetkinleştirilmişsemainTemplate.gradleayarını değiştirin.- Dışa aktarılan projeyi derlemek için Android Studio kullanıyorsanız modül düzeyindeki
build.gradledosyası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:
minSdkVersiondeğ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.gradledosyanı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 installkomutunu ç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_profileveya eşdeğerindeexport LANG=en_US.UTF-8ekleyin
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.unitypackagedosya 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.