GÜNCELLEME (24.05.2018): 3 yeni metot eklendi.

Hepinize merhabalar,

Unity‘de oyun tasarlarken bol bol Debug.Log kullanır, nerede ne olduğunu veya bir hatanın neyden kaynaklandığını bu şekilde anlamaya çalışırım. Oyunu Android cihazda test ederken de bu log’lara erişebilmek ve(ya) Unity’nin verdiği exception’ları görebilmek oldukça büyük önem arz edebiliyor. Bunun için kullanabileceğimiz 5 farklı yöntem var: Unity 2017+ için Consoleadb logcat, Android Studio, Oyun İçi Debug Konsolu ve Eclipse ADT.

Başlamadan önce tamamlamanız gereken birkaç adım var:

  • cihazınızın Geliştirici Seçenekleri menüsünden USB hata ayıklama‘yı aktifleştirin (eğer geliştirici seçenekleri sizde yoksa internette “Android geliştirici seçeneklerini aktif etme” diye arama yapabilirsiniz)
  • cihazı USB kablo ile bilgisayarınıza bağlayın.
  • Android SDK Manager‘da Google USB Driver‘ın kurulu olduğundan emin olun:

  • eğer hata almadan Build&Run yapabiliyorsanız her şey tamamdır. Aksi taktirde cihazınızın güncel USB sürücüsünü indirip kurmanız gerekebilir

Artık log’larımızı görmeye hazırız!

1) Unity 2017 ve Sonrasında Konsolu Kullanmak

Bu yöntem vasıtasıyla log’ları direkt Unity’nin konsolunda görmeniz mümkün. Bunun için Build Settings‘ten “Development Build“i işaretleyip cihazınızı USB kablo ile bilgisayarınıza bağlayın ve Build&Run yapın. Ardından Console panelinde Error Pause butonunun sağında yer alan butona tıklayıp AndroidPlayer‘ı seçin:

Ancak sanırım sistem biraz bug’lı çünkü bazen log’ları görmeye başlamak için Player Logging‘i kapatıp tekrar açmam gerekiyor.

Bu yöntem her ne kadar pratik olsa da gözlemlediğim kadarıyla epey dezavantajı da bulunmakta:

  • emülatör desteklemiyor
  • log’lara tıklayınca stacktrace (hangi satırın log/hata verdiği) gözükmüyor
  • Development Build’i işaretlemeniz gerekiyor

2) adb logcat

Yapmanız gereken şey, Android SDK’yı kurduğunuz yerdeki platform-tools klasörüne gitmek (C:\Program Files (x86)\Android\android-sdk\platform-tools). Bu klasörde normal şartlarda adb.exe dosyası olması lazım, yoksa sebebini ben de bilmiyorum. Şimdi klavyeden Shift tuşuna basılı tutarken ve hiçbir dosya seçili değilken klasörde boş bir yere sağ tıklayın ve “Komut penceresini burada aç” seçeneğini seçin (Windows 10’da PowerShell penceresini buradan açın):

resim2

Gelen komut penceresine “adb logcat -s Unity” (tırnaksız) yazın. Artık Unity oyununuzu cihazınızda çalıştırdığınızda oyuna dair tüm log’lar burada gözükecek:

resim3

Logcat’i durdurmak için CTRL+C yapabilirsiniz. Burada bilmeniz gereken bir nokta şu ki; adb logcat komutunu çalıştırdığınızda belki 10-20 dakika önce alınmış log’ları da görürsünüz çünkü bu log’lar hemen temizlenmez ve bir süre cihazda tutulurlar. Kafa karışıklığını önlemek amaçlı, cihazdaki log’ları tamamen temizlemek isterseniz konsola “adb logcat -c” yazabilirsiniz.

NOT: Admob log’larını görmek için “adb logcat -s Ads” yazın. Cihaza gelen tüm log’ları (Unity ile alakalı veya değil) görmek için de sadece “adb logcat” yazın.

3) Android Studio

Android Studio’yu açın ve View-Tool Windows-Logcat yolunu izleyin. Şu anda cihaza gelen tüm log’ları Logcat penceresinde göreceksiniz. Sadece Unity ile alakalı log’ları görmek için Logcat penceresinin en sağ üstündeki butona tıklayın ve “Edit Filter Configuration” yolunu izleyin:

Artık sadece Unity’nin log’larını göreceksiniz. Ancak diyelim ki sadece Admob’un log’larını görmek istiyorsanız o zaman “Log Tag” olarak Ads girin.

4) Oyun İçi Debug Konsolu

Bu plugin ile herhangi bir araç kullanmadan direkt oyun içerisinden log’ları görmeniz mümkün. Detaylar için sizi şuraya alayım: https://yasirkula.com/2016/06/18/unity-oyun-ici-debug-konsolu-ui-sistemi-ile/

5) Eclipse ADT

ADT dediğimiz şey, henüz Android Studio yokken Android’e uygulama yazmak için kullanılan bir Eclipse plugin’i idi. Her ne kadar artık ADT çok kullanılmıyor olsa da bu seçenekten de bahsetmeden geçmeyelim.

Eclipse ADT plugin’ini bir şekilde (google) kurup açtıktan sonra menü barından “Window-Show View-Other…” yolunu izleyin ve gelen listeden LogCat‘i seçin:

resim4

Kullanıcı arayüzüne LogCat adında yeni bir panel gelecek. Bu LogCat panelinde “Saved Filters” diye ufak bir bölme var. Orada ilk başta sadece “All messages (no filters)” yer almakta. Bu filter seçili iken Android cihazınızın verdiği tüm log’lar LogCat panelinde listelenir. Sadece Unity’nin verdiği log’ları görmek için yapmamız gereken şey “Saved Filters“a yeni bir filtre eklemek:

resim5

Artık Unity oyununuzu çalıştırdığınız vakit LogCat panelinde Unity’nin verdiği log’ları ve exception’ları görebilirsiniz:

resim6

İşte bu kadar! Sonraki derste görüşmek üzere!

yorum
  1. Kimex dedi ki:

    adb logcat ile loglara bakmak istediğimde
    error : more than one device / emulator
    waiting for device hatası aldım
    Bu hatayı nasıl düzenleyebilirim. Birde Eclipse ile deniyeyim dedim ama ondada hangisi kurulacak bir dünya kurulma seçeneği verdi 😀
    ve plugin için verdiğiniz linkde sadece yönlendirme linkleri var install linki yok 😦 Yada sinirlerim iyice bozulduğu için ben göremedim 😦 ( Oyunun menu sistemi + admob + şimdide bu olmuyor)

    • yasirkula dedi ki:

      Java için olan Eclipse’i kuracaksınız. ADT için verdiğim link dediğiniz gibi artık işlevsiz olmuş, internette “eclipse adt kurulumu” diye aratırsanız birkaç sonuç çıkıyor. Hatayı çözmek için ise; eğer bilgisayara birden çok cihaz bağlı ise birini çıkarmayı deneyin.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

w

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.