Oyun Oluşturma, Yükleme ve Çalıştırma Sürecinde Hata Ayıklama

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 girmeye çalışırsanız, 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! .

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ı:
  1. 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.

    1. MechaHamster'dan örnekler: Firebase Edition ile Seviye Atlayın :
      1. using Firebase.RemoteConfig;
      2. using Firebase.Crashlytics;
  2. Uygun Firebase paketlerini içe aktardığınızı doğrulayın:

    1. Uygun paketleri içe aktarmak için:
      1. Firebase Unity SDK'yı .unitypackage s veya olarak ekleyin
      2. Ek Birlik kurulum seçeneklerindeki alternatifleri araştırın ve uygulayın.
    2. 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.
  3. 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:

    1. 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.
    2. 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ırmak ve ardından tüm Firebase paketlerini yeniden içe aktarın.
  4. Editörünüzün projenizi yeniden oluşturduğundan ve oynatma girişimlerinizin projenizin en güncel durumunu yansıttığından emin olun:

    1. Varsayılan olarak Unity düzenleyicisi, varlık veya konfigürasyon değişiklikleri algılandığında yeniden oluşturulacak şekilde ayarlanmıştır.
    2. 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.

c35166e224cce720.png

Unity'ye geri dönün ve tekrar Oynat'a basın.

Daha sonra ilkine benzer bir uyarı göreceksiniz:

5ad9ddb0d3a52892.png

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

  1. 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.
  2. Uygulamanıza ilişkin yapılandırma dosyasını indirin (Android için google-services.json veya iOS için GoogleService-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.
  3. 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.
  4. 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, dizini Assets dizininde manuel olarak oluşturun.
    • Unity'nin artık google-services-desktop.json oluşturup oluşturmadığını kontrol edin.

Her Firebase ürününün ve EDM4U'nun yalnızca .unitypackage veya Unity Paket Yöneticisi aracılığıyla kurulduğundan emin olun

  1. 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.
  2. 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.

  1. Firebase SDK'ları .unitypackage aracılığıyla yüklendiyse Assets/Firebase/Plugins/x86_64/ altındaki tüm FirebaseCppApp kitaplıklarının aynı sürümde olup olmadığını kontrol edin.
  2. 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.
  3. 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'ı 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.