giriiş
Aşağıda, Unity için Firebase SDK'sını kullanarak Unity oyunlarına yönelik derleme ve oluşturma sürecinde hata ayıklamaya yönelik bir kılavuz bulunmaktadır. Oyununuzu yeni bir platform için yapılandırırken ve oluştururken veya bir güncelleme sonrasında karşılaşabileceğiniz daha yaygın sorunların çoğunu nasıl araştıracağınızı ve çözeceğinizi açıklar. Süreçte bu hataların ne zaman oluşabileceğine göre sıralanmıştır. Onlara sırayla danışın ve her biri çözüldükçe devam edin.
Daha fazla bilgi için bu belgeye ek olarak Firebase for Unity SSS sayfasına bakın.
Oynatma Modu derleme sorunları
Mobil derlemeyi başlatmayı denemeden önce düzenleyicide test yaparken birinci sınıf derleme sorunları ortaya çıkabilir. Bu bölüm, Oynatma Modu öncesinde ve sırasında meydana gelen tüm Firebase hatalarıyla ilgilidir.
Unity başladığında veya bağımlılıklarda, kodda veya diğer varlıklarda değişiklik tespit ettiğinde projeyi yeniden oluşturmaya çalışacaktır. Proje o anda derlenemiyorsa, editör derleme hatalarını konsola kaydeder ve Oynatma Moduna girmeyi denerseniz, Unity'nin Sahne sekmesinde All compiler errors have to be fixed before you can enter playmode!
yazan bir hata açılır penceresi 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ı nedeniyle ortaya çıkar. 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üm adımları:
Firebase sınıflarını veya yöntemlerini kodda kullandığınızda, ihtiyaç duyulan 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 olarak ekleyin - Ek Birlik kurulum seçeneklerindeki alternatifleri araştırın ve uygulayın.
- Firebase Unity SDK'yı
- Projenizdeki ve EDM4U'nuzdaki her Firebase ürününün aşağıdaki özelliklere sahip olduğundan emin olun:
- Aynı sürümdeyiz
- Yalnızca
.unitypackage
olarak VEYA yalnızca Unity Paket Yöneticisi aracılığıyla kuruldu.
- Uygun paketleri içe aktarmak için:
Firebase Unity SDK'yı "10.0.0" sürümünden önce
.unitypackage
s olarak içe aktardıysanız Firebase Unity SDK zip arşivi hem .NET 3.x hem de .NET 4.x desteğine yönelik paketler içerir. Projenize yalnızca uyumlu .NET Framework düzeyini eklediğinizden emin olun:- Unity Editor sürümleri ile .NET Framework Düzeyleri arasındaki uyumluluk , Firebase'i Unity projenize ekleme bölümünde tartışılmıştır.
- Firebase paketlerinizi yanlışlıkla yanlış .NET Framework Düzeyinde içe aktardıysanız veya
.unitypackage
kullanmaktan Ek Birlik kurulum seçeneklerinden birine geçmeniz gerekiyorsa, en temiz yol, her Firebase paketini bu geçiş bölümünde belirtilen yöntemlerle kaldırmaktır ve ardından tüm Firebase paketlerini yeniden içe aktarın.
Editörünüzün projenizi yeniden oluşturduğundan ve oynatma girişimlerinizin projenizin en güncel durumunu yansıttığından emin olun:
- Varsayılan olarak Unity düzenleyicisi, varlık veya konfigürasyon değişiklikleri algılandığında yeniden oluşturulacak şekilde ayarlanmıştır.
- Bu işlevselliğin devre dışı bırakılmış olması ve Unity Düzenleyicisinin manuel yenileme/yeniden derlemeye ayarlanmış olması mümkündür. Bunu araştırın ve bu durumda manuel yenilemeyi deneyin.
Oynatma Modu çalışma zamanı hataları
Oyununuz başlıyor ancak çalışırken Firebase ile ilgili sorunlarla karşılaşıyorsanız aşağıdakileri deneyin:
Firebase paketlerini Mac OS'ta "Güvenlik ve Gizlilik" bölümünde onayladığınızdan emin olun
Oyununuzu Mac OS'deki düzenleyicide başlatırken "FirebaseCppApp-<version>.bundle Geliştirici doğrulanamadığı için açılamıyor." yazan bir diyalogla karşılaşırsanız, söz konusu paket dosyasını şurada 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ştiriciye ait 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 tekrar Oynat'a basın.
Daha sonra ilkine benzer bir uyarı göreceksiniz:
Aç'a bastığınızda programınız devam edebilecektir; bir daha bu dosyayla ilgili soru sorulmayacak.
Projenizin geçerli yapılandırma dosyalarını içerdiğinden ve kullandığından emin olun
- File > Build Settings bölümünde derleme ayarlarınızın istediğiniz hedef (iOS veya Android) için ayarlandığından emin olun. Daha kapsamlı bir tartışma için Unity Build Ayarları Belgelerini okuyun.
- Uygulamanıza ilişkin yapılandırma dosyasını indirin (Android için
google-services.json
veya iOS içinGoogleService-Info.plist
) ve Firebase konsolundan Proje Ayarları > Uygulamalarınız bölümünde hedef oluşturun: Bu dosyalara zaten sahipseniz projenizde bunları silin ve dosya adlarına "(1)" veya başka sayılar eklenmeden tam olarak yukarıda gösterildiği gibi yazıldığından emin olarak bunları en son sürümle değiştirin. - Konsol
Assets/StreamingAssets/
içindeki dosyalarla ilgili bir mesaj içeriyorsa, Unity'nin oradaki dosyaları düzenleyemediğini söyleyen 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şturulmamışsa 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şturulmamışsa 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'larının ve EDM4U'nun yalnızca bir veya diğer yöntemle kurulduğundan 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 Paket Yöneticisi (UPM) paketlerinde EDM4U içerebilir. Projenizde EDM4U'nun yalnızca bir kopyasının olduğundan emin olun. Herhangi bir UPM paketi EDM4U'ya bağlıysa yalnızca EDM4U'nun Unity Arşivi için Google API'leri sayfasında bulunabilecek UPM sürümlerini saklamak 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" ifadesini arayın ve tüm Firebase paketlerinin aynı sürümde olduğundan emin olun.
- Projeniz Firebase SDK'ların farklı sürümlerini içeriyorsa, tüm Firebase SDK'larını bu sefer aynı sürümlerle tekrar yüklemeden ö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 bahsedilen yöntemlerle kaldırmaktır.
Çözümleyici ve hedef cihaz oluşturma hataları
Oyununuz düzenleyicide çalışıyorsa (seçtiğiniz uygun derleme hedefi için yapılandırılmışsa), daha sonra 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 takip etmeniz gereken sürecin bu kısmı için adım adım bir kılavuz içerir.
'Single Dex' sorunları ve küçültülmesi (Cloud Firestore kullanılıyorsa zorunludur )
Android uygulaması geliştirirken tek bir dex dosyasına sahip olmanızdan kaynaklanan 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ındaki yöntemlerin toplam sayısı bu sınırı aşarsa derlemeler başarısız olur.
Aşağıdaki iki adım sırasıyla uygulanabilir; multidex'i yalnızca küçültme sorunu çözmezse etkinleştirin.
Küçültmeyi Etkinleştir
Unity, kullanılmayan kodu ortadan kaldırmak için 2017.2'de Küçültme'yi tanıttı; bu, tek bir dex dosyasında başvurulan yöntemlerin toplam sayısını azaltabilir. * Bu seçeneği Oynatıcı Ayarları > Android > Yayınlama Ayarları > Küçült bölümünde bulabilirsiniz. * Seçenekler Unity'nin farklı versiyonlarında farklılık gösterebilir; bu nedenle resmi Unity belgelerine bakın.
Multidex'i Etkinleştir
Küçültme etkinleştirildikten 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 birden fazla yolu vardır:
- Oynatıcı Ayarları altında Özel Gradle Şablonu etkinse
mainTemplate.gradle
öğesini değiştirin. - Dışa aktarılan projeyi oluşturmak için Android Studio'yu kullanıyorsanız modül düzeyinde build.gradle dosyasını değiştirin.
Daha fazla ayrıntıyı multidex kullanım kılavuzunda bulabilirsiniz.
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ümde olası hatalar ve yalnızca cihazda veya simülatörde çalışma zamanında meydana gelen bu tür bir hata için günlüklerinizi nasıl araştıracağınız ayrıntılı olarak açıklanmaktadır.
Android
Simülatör
- Emülatörü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ı kullanabilseniz de alternatif olarak logcat'in seçeneklerine bakmayı düşünün.
ADB oturumunu temiz bir sayfayla başlatmanın basit bir yolu şudur:
adb logcat -c && adb logcat <OPTIONS>
burada
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 cihaz çalıştırıyorsanız, onu bilgisayarınıza bağlayın. Xcode'da lldb'yi inceleyin.
Hızlı Sorunlar
Swift'ten bahseden hata günlükleriyle karşılaşırsanız bunlarla ilgili Unity için Harici 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ı inceleyin 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.