Bu sayfa, Firebase'i kullanırken karşılaşabileceğiniz Unity'ye özgü sorunlar için ipuçları ve sorun giderme sunar.
Başka zorluklarınız mı var veya sorununuzu aşağıda ana hatlarıyla göremiyor musunuz? Daha fazla Pan-Firebase veya ürüne özel SSS için ana Firebase SSS'ye göz atmayı unutmayın.
Unity 2017.x ve sonraki sürümlerini kullanırken .NET uyumluluğu
Firebase, Unity 2017 ve sonrasında deneysel derleme seçeneği olarak .NET 4.x'i destekler. Firebase eklentileri, .NET'in önceki sürümlerinde bazı .NET 4.x sınıfları sağlamak için Ayrıştırma SDK'sının bileşenlerini kullanır.
Bu nedenle, Firebase Unity SDK sürüm 5.4.0
ve sonraki sürümleri, Firebase Unity SDK'nın dotnet3
ve dotnet4
dizinlerinde .NET 3.x veya .NET 4.x ile uyumlu eklentiler sağlar.
Projenizde etkinleştirilen .NET sürümüyle uyumlu olmayan bir Firebase eklentisi içe aktarırsanız, Parse SDK tarafından uygulanan .NET çerçevesindeki bazı türlerden derleme hataları görürsünüz.
.NET 3.x kullanıyorsanız derleme hatasını çözmek için:
- Tüm platformlar için aşağıdaki DLL'leri kaldırın veya devre dışı bırakın:
-
Parse/Plugins/dotNet45/Unity.Compat.dll
-
Parse/Plugins/dotNet45/Unity.Tasks.dll
-
- Tüm platformlar için aşağıdaki DLL'leri etkinleştirin:
-
Parse/Plugins/Unity.Compat.dll
-
Parse/Plugins/Unity.Tasks.dll
-
.NET 4.x kullanıyorsanız derleme hatasını çözmek için:
- Tüm platformlar için aşağıdaki DLL'leri kaldırın veya devre dışı bırakın:
-
Parse/Plugins/Unity.Compat.dll
-
Parse/Plugins/Unity.Tasks.dll
-
- Tüm platformlar için aşağıdaki DLL'leri etkinleştirin:
-
Parse/Plugins/dotNet45/Unity.Compat.dll
-
Parse/Plugins/dotNet45/Unity.Tasks.dll
-
Başka bir Firebase eklentisi içe aktarırsanız:
- Unity projenizde, projeniz için doğru DLL'leri etkinleştirmek üzere Varlıklar > Play Services Çözümleyici > Sürüm İşleyici > Güncelle'ye gidin.
.NET 4.x projelerinde Unity 2017.1 IL2CPP derlemesi
Firebase, Unity 2017 ve sonrasında deneysel derleme seçeneği olarak .NET 4.x'i destekler. Firebase eklentileri, .NET'in önceki sürümlerinde bazı .NET 4.x sınıfları sağlamak için Ayrıştırma SDK'sının bileşenlerini kullanır.
Bu nedenle, Firebase Unity SDK sürüm 5.4.0 ve sonraki sürümleri, Ayrıştırma türlerini (örneğin, System.Threading.Tasks.Task
öğesinin Ayrıştırma uygulaması) .NET çerçevesine ileten tür iletme DLL'leri sağlar. Ne yazık ki, Unity 2017.1.x'te gönderilen IL2CPP (C#'ı C++'a dönüştüren bir aktarıcı), tür iletme DLL'lerini doğru şekilde işlemez ve bu da aşağıdakine benzer derleme hatalarına neden olur:
Fatal error in Unity CIL Linker Mono.Cecil.ResolutionException: Failed to
resolve System.Threading.Tasks.TaskCompletionSource`1<T>
Şu anda Unity 2017.1'deki .NET 4.x IL2CPP derleme hataları için bir geçici çözüm mevcut değildir, bu nedenle IL2CPP ile derlenen projelerde .NET 4.x'i kullanmak için Unity 2017.2 veya sonraki bir sürüme yükseltmeniz gerekir.
Birlik 2017.2 ağ iletişimi
Firebase Realtime Database, .NET ağ yığınını kullanarak TLS ağ bağlantıları oluşturur. Unity 2017.2'de .NET 4.6 kullanılırken TLS işlevselliğinin bozulması, Realtime Database eklentisinin düzenleyicilerde ve masaüstünde başarısız olmasına neden oluyor.
Bu sorun için geçici bir çözüm yoktur, bu nedenle Unity'nin farklı bir sürümünü, örneğin 2017.1 veya 2017.3 sürümünü kullanmalısınız.
Unity 2020'de Firebase Android yapılandırma dosyası eksik
Gradle derlemesini özelleştirme yeteneğine sahip olmayan Unity sürümlerini desteklemek için, Firebase düzenleyici aracı bir Android kaynağı olarak Assets/Plugins/Android/Firebase/res/values/google-services.xml
oluşturur. Firebase SDK'nın varsayılan FirebaseApp örneğini başlatmak için kullanabilmesi için Android derlemesi.
Unity 2020'de, tüm Android kaynakları .androidlib
son ekine sahip dizinlerde olmalıdır. Projeniz bir Assets/Plugins/Android/Firebase
dizini oluşturan bir Firebase SDK kullanıyorsa, bunu Assets/Plugins/Android/Firebase.androidlib
olarak yeniden adlandırın. AndroidManifest.xml
, project.properties
ve res/values/google-services.xml
içerdiğinden emin olun.
Android uygulamasını oluştururken tek dex ile ilgili bir sorun
Android uygulaması 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 görünür.
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 yardımcı verileri tutmak için kullanılır. Tek bir dex dosyası, 65.536 yönteme referansla sınırlıdır. Projenizdeki tüm Android kitaplıklarından toplam yöntem sayısı bu sınırı aşarsa yapı başarısız olur.
Unity, kullanılmayan kodu çıkarmak için Proguard'ı (veya Unity'nin bazı sürümlerindeki diğer araçları) kullanan ve tek bir dex dosyasında başvurulan yöntemlerin toplam sayısını azaltabilen Minification'ı 2017.2'de tanıttı. Bu seçenek , Player Settings > Android > Publishing Settings > Minify bölümünde bulunabilir. Seçenekler, Unity'nin farklı sürümlerinde farklılık gösterebilir, bu nedenle resmi Unity belgelerine bakın.
Başvurulan yöntemlerin sayısı hala sınırı aşıyorsa, başka bir seçenek de multidex
etkinleştirmektir. Unity'de bunu başarmanın birçok yolu vardır:
-
Player Settings
altındakiCustom Gradle Template
etkinleştirildiyse,mainTemplate.gradle
öğesini değiştirin. - Dışa aktarılan projeyi oluşturmak için Android Studio kullanıyorsanız, modül düzeyinde
build.gradle
dosyasını değiştirin.
Daha fazla detay multidex kullanım kılavuzunda bulunabilir.
Unity 2017 ve Unity 2018'de (Firebase Unity SDK 8.0.0 ve üstü) Android derlemeleri için Java 8 desteği ve şeker giderme
Mayıs 2021'de (Firebase BoM v28.0.0), Firebase tüm Android kitaplıkları için şeker gidermeyi devre dışı bıraktı (bkz. sürüm notu ). Firebase Unity SDK (8.0.0 ve üstü) ile bir 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 yapılarını etkiler. Unity'nin daha yeni sürümleri, compileOptions
bloğunu varsayılan olarak gradle derleme dosyalarına 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:- Derleme sistemi olarak
Gradle
kullanın. -
Player Settings
altındaCustom Gradle Template
etkinleştirin. mainTemplate.gradle
dosyasına (veya Android Studio için bir proje dışa aktarılıyorsa modül düzeyindebuild.gradle
) aşağıdaki satırları ekleyin:android { compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } }
- Derleme sistemi olarak
Alternatif olarak, Android projeniz için minSdkVersion değerini 26 veya üzerine yükseltin.
Ayrıca bkz. Android sorun giderme - derleme hatalarının şekerini giderme .
Cocoapod'larla iOS için derleme yaparken karşılaşılan sorunlar
iOS için derleme yapılırken Cocoapod yüklemesi, dil yerel ayarı veya UTF-8 kodlamasıyla ilgili bir hata vererek başarısız olabilir. Şu anda soruna geçici bir çözüm bulmanın birkaç farklı yolu var.
Terminalden doğrudan
pod install
çalıştırın ve ortaya çıkan 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 mevcuttur.
~/.bash_profile
veya eşdeğerinize,export LANG=en_US.UTF-8
ekleyin
Firebase Unity SDK'larının sürümü nasıl güncellenir?
Firebase Unity SDK'larının sürümlerini güncelleme işlemi, bunların ilk olarak nasıl içe aktarıldıklarına bağlıdır. İşte iki alternatif içe aktarma yöntemi:
-
.unitypackage
dosyalarını projenizinAssets/
dizini altına alma - Unity Paket Yöneticisini (UPM) kullanarak içe aktarma
- Unity 2018.4+'de paketleri yönetmenin önerilen yolu budur.
- Gelecekteki sürüm güncellemelerini kolaylaştırmak ve
Assets/
dizininizi daha temiz hale getirmek 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 kullanmalısınız. Aşağıdaki talimatlar yalnızca tek tek 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 kullanmak için geçiş yapın (Unity 2018.4+ sürümünde mevcuttur)
- Paket yönetimini UPM'ye taşımak için Firebase tarafından sağlanan talimatları uygulayın.
- Bu yöntem,
.unitypackage
iş akışını kullanmaya devam etmekten daha fazla ilk kurulum gerektirse de, sonraki SDK sürüm güncellemelerinin kolaylığıyla karşılığını verir.
2. Seçenek :
.unitypackage
dosyalarınıAssets/
dizinine aktarmak için kullanmaya devam edinGüncellenmiş 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
doğrudotnet
klasöründen içe aktardığınızdan emin olun.- Unity 2019 veya sonraki bir sürümünü kullanıyorsanız
dotnet4
klasöründen içe aktarın. - Aksi takdirde, Player Settings'de Scripting Runtime Version'u 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ünü 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 yapılmalıdır (Firebase
.unitypackages
dosyasını içe aktardığınızda bu, otomatik olarak dahil edilir).Ancak, YALNIZCA bu otomatik işlem başarısız olursa, aşağıdaki klasörleri manuel olarak silmeniz ve ardından yukarıdaki içe aktarma adımını yeniden 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 otomatik olarak önceki sürümün üzerine yazacaktır.