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ındaCustom Gradle Template
etkinsemainTemplate.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ğerineexport 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.
Assets/
dizinine .unitypackage
dosyası olarak aktarılan paketler
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 edinGü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ğrudotnet
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.
- Unity 2019 veya sonraki bir sürümü kullanıyorsanız
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
UPM tarafından yönetilen paketler
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.