giriiş
Aşağıda, Unity için Firebase SDK kullanarak Unity oyunları için derleme ve oluşturma sürecinde hata ayıklamaya yönelik bir kılavuz yer almaktadır. Oyununuzu yeni bir platform için yapılandırırken ve oluştururken veya bir güncellemeden sonra karşılaşabileceğiniz daha yaygın sorunların birçoğunu nasıl araştıracağınızı ve çözeceğinizi açıklar. Bu hataların süreç içinde ne zaman oluşabileceği sırasına göre düzenlenmiştir. Onlara sırayla danışın ve her biri çözüldükçe devam edin.
Bu belgeye ek olarak, daha fazla bilgi için Firebase for Unity SSS bölümüne bakın.
Oynatma Modu derleme sorunları
Bir mobil derleme başlatmayı denemeden önce düzenleyicide test ederken birinci sınıf derleme sorunları ortaya çıkabilir. Bu bölüm, Oynatma Modundan önce ve sırasında oluşan tüm Firebase hatalarıyla ilgilidir.
Unity başladığında veya bağımlılıklarda, kodda veya diğer varlıklarda değişiklik algıladığında, projeyi yeniden oluşturmaya çalışır. Proje o sırada derlenemezse, düzenleyici derleme hatalarını konsola kaydeder ve Oynatma Moduna girmeye çalışırsanız, Unity'nin Sahne sekmesinde All compiler errors have to be fixed before you can enter playmode!
bir açılır pencere alırsınız. All compiler errors have to be fixed before you can enter playmode!
.
Firebase ile ilgili derleme sorunlarında hata ayıklama
Eksik türler, sınıflar, yöntemler ve üyeler
Birçok Firebase sorunu, düzenleyicinin ve derleyicinin gerekli türleri, sınıfları, yöntemleri ve üyeleri bulamamasından kaynaklanır. Bunun yaygın belirtileri, aşağıdakilerin varyantlarıdır:
The type or namespace name '<CLASS OR NAMESPACE NAME>' could not be found. Are you missing a using directive or an assembly reference?
The type or namespace name <TYPE OR NAMESPACE NAME> does not exist in the namespace 'Firebase<.OPTIONAL NESTED NAMESPACE NAME PATH>' (are you missing an assembly reference?)
'<CLASS NAME>' does not contain a definition for '<MEMBER VARIABLE OR METHOD NAME>'
Çözünürlük adımları:
Kodda Firebase sınıflarını veya yöntemlerini kullandığınız yerlerde, gereken belirli Firebase ürünleri için doğru
using
yönergelerine sahip olarak bunları kullanılabilir hale getirdiğinizden emin olun.Uygun Firebase paketlerini içe aktardığınızı doğrulayın:
- Uygun paketleri içe aktarmak için:
- Firebase Unity SDK'yı
.unitypackage
s veya - Ek Birlik yükleme seçeneklerindeki alternatiflere bakın ve bunlardan birini gerçekleştirin.
- Firebase Unity SDK'yı
- Projenizdeki ve EDM4U'daki her Firebase ürününün:
- Aynı sürümde
- Ya özel olarak
.unitypackage
s olarak VEYA yalnızca Unity Paket Yöneticisi aracılığıyla kuruldu.
- Uygun paketleri içe aktarmak için:
"10.0.0" sürümünden önceki Firebase Unity SDK'sını
.unitypackage
s olarak içe aktardıysanız, Firebase Unity SDK zip arşivi hem .NET 3.x hem de .NET 4.x desteği için paketler içerir. Projenize yalnızca uyumlu .NET Framework düzeyini dahil ettiğinizden emin olun:- Unity Editor sürümleri ile .NET Frameworks Düzeyleri arasındaki uyumluluk , Firebase'i Unity projenize ekleme bölümünde ele alınmıştır.
- Firebase paketlerinizi yanlışlıkla yanlış .NET Framework Düzeyinde içe aktardıysanız veya
.unitypackage
kullanmaktan Ek Unity yükleme seçeneklerinden birine geçmeniz gerekirse, en temiz yol, bu geçiş bölümünde belirtilen yöntemlerle tüm Firebase paketlerini kaldırmak ve ardından tüm Firebase paketlerini yeniden içe aktarın.
Editörünüzün projenizi yeniden oluşturup oluşturmadığını ve oynatma denemelerinizin projenizin en güncel durumunu yansıttığını kontrol edin:
- Varsayılan olarak Unity editörü, varlık veya yapılandırma değişiklikleri algılandığında yeniden oluşturulacak şekilde ayarlanmıştır.
- Bu işlevsellik devre dışı bırakılmış ve Unity Düzenleyicisi manuel yenileme/yeniden derleme olarak ayarlanmış olabilir. Bunu araştırın ve böyle bir durumda manuel yenilemeyi deneyin.
Oynatma Modu çalışma zamanı hataları
Oyununuz başlar ancak çalışırken Firebase ile ilgili sorunlarla karşılaşırsa aşağıdakileri deneyin:
Mac OS'de "Güvenlik ve Gizlilik" bölümünde Firebase paketlerini onayladığınızdan emin olun
Oyununuzu Mac OS'deki düzenleyicide başlatırken size "FirebaseCppApp-<version>.bundle açılamıyor çünkü geliştirici doğrulanamıyor" şeklinde bir diyalog sunulursa, o belirli paket dosyasını onaylamanız gerekir. Mac'in Güvenlik ve Gizlilik menüsü.
Bunu yapmak için Apple Simgesi > Sistem Tercihleri > Güvenlik ve Gizlilik'i tıklayın.
Güvenlik menüsünde, sayfanın yaklaşık yarısında, ""FirebaseCppApp-<version>.bundle" tanımlanmış bir geliştiriciden olmadığı için kullanımı engellendi" yazan bir bölüm var.
Yine de İzin Ver etiketli düğmeyi tıklayın.
Unity'ye geri dönün ve Play'e tekrar basın.
Daha sonra ilkine benzer bir uyarı göreceksiniz:
Aç'a basın, programınız devam edebilecektir; bu özel dosya hakkında bir daha sorulmayacaktır.
Projenizin geçerli yapılandırma dosyaları içerdiğinden ve kullandığından emin olun
- Dosya > Yapı Ayarları bölümünde derleme ayarlarınızın, amaçladığınız hedef (iOS veya Android) için ayarlandığından emin olun. Daha eksiksiz bir tartışma için Unity Yapı Ayarları Belgelerini okuyun.
- Uygulamanız için yapılandırma dosyasını indirin (Android için
google-services.json
veya iOS içinGoogleService-Info.plist
) ve Proje Ayarları > Uygulamalarınız bölümünde Firebase konsolundan hedef oluşturun: Bu dosyalara zaten sahipseniz, bunları projenizden silin ve dosya adlarına eklenmiş "(1)" veya diğer sayılar olmadan tam olarak yukarıda gösterildiği gibi yazıldığından emin olarak en son sürümle değiştirin. - Konsol
Assets/StreamingAssets/
içindeki dosyalarla ilgili bir mesaj içeriyorsa, Unity'nin buradaki dosyaları düzenleyemediğini belirten hiçbir konsol mesajı olmadığından emin olun. -
Assets/StreamingAssets/google-services-desktop.json
oluşturulduğundan ve indirilen yapılandırma dosyasıyla eşleştiğinden emin olun.- Otomatik olarak oluşturulmadıysa ve
StreamingAssets/
mevcut değilse, diziniAssets
dizininde manuel olarak oluşturun. - Unity'nin artık
google-services-desktop.json
oluşturup oluşturmadığını kontrol edin.
- Otomatik olarak oluşturulmadıysa ve
Her Firebase ürününün ve EDM4U'nun yalnızca .unitypackage
veya Unity Paket Yöneticisi aracılığıyla kurulduğundan emin olun
- Firebase SDK'lerinin ve EDM4U'nun özel olarak bir veya diğer yöntemle yüklendiğinden emin olmak için hem
Assets/
klasörünü hem de Unity Paket Yöneticisini kontrol edin. - Google Play gibi Google tarafından geliştirilen bazı eklentiler ve üçüncü taraf eklentiler EDM4U'ya bağlı olabilir. Bu eklentiler,
.unitypackage
s veya Unity Package Manager (UPM) paketlerinde EDM4U içerebilir. Projenizde yalnızca bir EDM4U kopyası olduğundan emin olun. Herhangi bir UPM paketi EDM4U'ya bağlıysa, yalnızca Google API'leri for Unity Archive sayfasında bulunabilen EDM4U'nun UPM sürümlerini tutmak en iyisidir.
Projenizdeki her Firebase ürününün aynı sürümde olduğundan emin olun.
- Firebase SDK'ları
.unitypackage
aracılığıyla yüklendiyseAssets/Firebase/Plugins/x86_64/
altındaki tümFirebaseCppApp
kitaplıklarının aynı sürümde olup olmadığını kontrol edin. - Firebase SDK'ları Unity Paket Yöneticisi (UPM) aracılığıyla yüklendiyse, Windows > Paket Yöneticisi'ni açın, "Firebase"i arayın ve tüm Firebase paketlerinin aynı sürümde olduğundan emin olun.
- Projeniz Firebase SDK'larının farklı sürümlerini içeriyorsa, tüm Firebase SDK'larını bu kez aynı sürümlerle tekrar kurmadan önce tüm Firebase SDK'larını tamamen kaldırmanızı öneririz. En temiz yol, her Firebase paketini bu taşıma bölümünde belirtilen yöntemlerle kaldırmaktır.
Çözümleyici ve hedef cihaz oluşturma hataları
Oyununuz düzenleyicide çalışıyorsa (seçtiğiniz uygun oluşturma hedefi için yapılandırılmış), ardından Unity için Harici Bağımlılık Yöneticisinin (EDM4U) düzgün şekilde yapılandırıldığını ve çalıştığını doğrulayın.
EDM4U GitHub deposu, devam etmeden önce incelemeniz ve izlemeniz gereken sürecin bu kısmı için adım adım bir kılavuz içerir.
"Single Dex" sorunları ve küçültme (Cloud Firestore kullanılıyorsa zorunludur )
Bir Android uygulaması oluştururken, tek bir dex dosyasına sahip olmakla ilgili bir derleme hatasıyla karşılaşabilirsiniz. Hata mesajı aşağıdakine benzer (projeniz Gradle derleme sistemini kullanacak şekilde yapılandırılmışsa):
Cannot fit requested classes in a single dex file.
.dex
dosyaları, Android uygulamaları 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 derlemeler başarısız olur.
Aşağıdaki iki adım sırayla uygulanabilir; multidex'i yalnızca küçültme sorunu çözmezse etkinleştirin.
Küçültmeyi Etkinleştir
Unity, kullanılmayan kodu çıkarmak için 2017.2'de Minification'ı tanıttı; bu, tek bir dex dosyasında başvurulan yöntemlerin toplam sayısını azaltabilir. * 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.
Multidex'i Etkinleştir
Küçültmeyi etkinleştirdikten sonra 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:
- Oynatıcı Ayarları altındaki Özel Gradle Şablonu 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üzeyindeki build.gradle dosyasını değiştirin.
Daha fazla detay multidex kullanım kılavuzunda bulunabilir.
Hedef cihaz çalışma zamanı hatalarını anlama ve düzeltme
Oyununuz düzenleyicide çalışıyorsa ve hedef cihazınız için oluşturulup kurulabiliyorsa ancak çalışma zamanı hatalarıyla karşılaşıyorsanız, cihazda oluşturulan günlükleri inceleyin ve araştırın .
Bu bölüm, günlüklerinizi olası hatalar ve yalnızca cihaz veya simülatör üzerindeki çalışma zamanında meydana gelen böyle bir hata için nasıl araştıracağınızı açıklar.
Android
Simülatör
- Öykünücünüzün konsolunda görüntülenen günlükleri inceleyin veya Logcat penceresini görüntüleyin.
Cihaz
Adb ve adb logcat'i ve bunların nasıl kullanılacağını öğrenin.
- Çıktıyı filtrelemek için komut satırı ortamınızın çeşitli araçlarını kullanabilirsiniz, ancak alternatif olarak logcat'in seçeneklerine bakmayı düşünün.
Bir ADB oturumunu temiz bir sayfa ile başlatmanın basit bir yolu şudur:
adb logcat -c && adb logcat <OPTIONS>
OPTIONS
çıktıyı filtrelemek için komut satırını ilettiğiniz bayraklardır.
Logcat'i Android Studio aracılığıyla kullanma
Logcat'i Android Studio aracılığıyla kullanırken, verimli aramalar oluşturmayı kolaylaştıran ek arama araçları mevcuttur .
iOS
Günlükleri İnceleme
Fiziksel bir aygıt çalıştırıyorsanız, bilgisayarınıza bağlayın. Xcode'da lldb'yi inceleyin.
Swift Sorunları
Swift'den bahseden hata günlükleriyle karşılaşırsanız, bunlarla ilgili Unity için Dış Bağımlılık Yöneticisi bölümüne bakın.
Sonraki adımlar
Oyununuzda hâlâ Firebase ile ilgili derleme, oluşturma veya çalıştırma sorunları varsa Unity için Firebase SDK sorunları sayfasını araştırın ve yeni bir sorun bildirmeyi düşünün. Ayrıca, ek seçenekler hakkında bilgi edinmek için Firebase destek sayfasına bakın.