Firebase Crashlytics, uygulamanızdaki kararlılık sorunlarını kolayca yönetmenizi sağlayan hafif ve anlık bir kilitlenme raporu aracıdır. Crashlytics, kilitlenmeleri akıllıca gruplandırarak ve kilitlenmelere yol açan koşulları vurgulayarak sorun giderme süresini kısaltır.
Bu kılavuzda, reklam yanıtı kimliklerini kaydedebilmek için Crashlytics'i Android Studio projenize nasıl entegre edeceğiniz açıklanmaktadır. Daha sonra, uygulamanızdaki kilitlenmelerle ilgili sorunları giderirken reklam yanıtı kimliğini arayabilir ve reklamları bulup engellemek için AdMob'daki Reklam İnceleme Merkezi'ni kullanabilirsiniz.
1. adım: Firebase'i Android uygulamasına ekleyin
Temiz bir uygulamadan Firebase ile oturum açmayı denemek isterseniz GitHub'daki depoda Android için Google Mobile Ads SDK örneklerini indirebilir veya klonlayabilirsiniz. Bu kılavuzda özellikle Banner Example (Banner Örneği) kullanılmaktadır.
Halihazırda bir uygulamanız varsa uygulamanızın paket adıyla diğer adımlara geçebilirsiniz. Aynı adımlar, küçük uyarlamalarla birlikte depodaki diğer örnekler için de geçerlidir.
Firebase Crashlytics'i kullanmak için bir Firebase projesi oluşturmanız ve uygulamanızı bu projeye eklemeniz gerekir. Henüz yapmadıysanız bir Firebase projesi oluşturun. Uygulamanızı bu hizmete kaydettiğinizden emin olun.
Firebase konsolunun Crashlytics sayfasında Crashlytics'i ayarla'yı tıklayın.
Görüntülenen ekranda Hayır > Yeni bir Firebase uygulaması oluştur'u tıklayın.
build.gradle dosyanıza Google Analytics, Fabric ve Crashlytics bağımlılıklarını ekleyin.
app/build.gradle
apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' // Add the Fabric plugin apply plugin: 'io.fabric' dependencies { // ... // Add Google Mobile Ads SDK implementation 'com.google.android.gms:play-services-ads:24.6.0' // Add the Firebase Crashlytics dependency. implementation 'com.google.firebase:firebase-crashlytics:20.0.2' }
project/build.gradle
buildscript { repositories { // ... // Add Google's Maven repository. google() } dependencies { // ... classpath 'com.google.gms:google-services:4.4.3' // Add the Fabric Crashlytics plugin. classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.6' } } allprojects { // ... repositories { // Check that Google's Maven repository is included (if not, add it). google() // ... } }
Crashlytics'in doğru şekilde yapılandırıldığından emin olmak için uygulamanızı oluşturup çalıştırın. İşlem başarılı olduğunda Crashlytics kontrol paneline erişebilirsiniz.
(İsteğe bağlı): Kurulumunuzu test etme
Kilitlenme düğmesi ekleyerek her düğmeye basıldığında uygulamanın kilitlenmesini sağlayabilirsiniz.
Aşağıda, Activity
sınıfının onCreate()
yöntemine kilitlenme düğmesinin nasıl ekleneceğini gösteren bir örnek verilmiştir:
MainActivity (alıntı)
Java
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); // Gets the ad view defined in layout/ad_fragment.xml with ad unit ID set in // values/strings.xml. adView = findViewById(R.id.ad_view); // Start loading the ad in the background. adView.loadAd(new AdRequest.Builder().build()); // Add a crash button. Button crashButton = new Button(this); crashButton.setText("Crash!"); crashButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { throw new RuntimeException("Test Crash"); // Force a crash } }); addContentView(crashButton, new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); }
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_my) // Gets the ad view defined in layout/ad_fragment.xml with ad unit ID set in // values/strings.xml. adView = findViewById(R.id.ad_view) // Start loading the ad in the background. adView.loadAd(AdRequest.Builder().build()) // Add a crash button. val crashButton = Button(this) crashButton.text = "Crash!" crashButton.setOnClickListener { throw RuntimeException("Test Crash") // Force a crash } addContentView(crashButton, ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)) }
Android Studio'da uygulamanızı bir emülatörde veya bağlı bir cihazda oluşturup çalıştırın. Uygulama yüklendikten sonra Kilitlenme düğmesini tıklayabilirsiniz. Kilitlenme günlüğünün Crashlytics'e yüklenmesi için uygulamayı cihazdan veya Android Studio'dan yeniden başlatın.
2. adım: Reklam yanıtı kimliğini günlüğe kaydedin
Birden fazla reklam yükleyip bunları farklı zamanlarda gösteriyorsanız her reklam yanıtı kimliğini ayrı bir anahtarla günlüğe kaydetmeniz önerilir. Örneğin, bu kılavuzda yalnızca bir banner reklam içeren bir örnek kullanılıyor. Bu nedenle, reklam yanıtı kimliğini aşağıdaki snippet'te banner_ad_response_id
anahtarı olarak günlüğe kaydederiz. Gerçekten de farklı reklam türleri ve reklam etkinlikleri için Firebase Crashlytics'te birden fazla özel anahtar / değer çifti oluşturabilirsiniz (reklamın yaşam döngüsü için AdListener
bölümüne bakın). Özel günlük kaydı hakkında daha fazla bilgi için Firebase Crashlytics kilitlenme raporlarınızı özelleştirme başlıklı makaleyi inceleyin.
MyActivity.java
dosyasına aşağıdaki kodu ekleyin. Temel olarak, getResponseInfo()
çağrılmaya çalışılmadan önce reklamın yüklendiğinden emin olmak için onAdLoaded()
geri çağırma işlevinde FirebaseCrashlytics.setCustomKey()
işlevini kullanır.
Java
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); // Gets the ad view defined in layout/ad_fragment.xml with ad unit ID set in // values/strings.xml. adView = findViewById(R.id.ad_view); adView.setAdListener(new AdListener() { @Override public void onAdLoaded() { String adResponseId = adView.getResponseInfo().getResponseId(); FirebaseCrashlytics.getInstance().setCustomKey( "banner_ad_response_id", adResponseId); } }); // Start loading the ad in the background. adView.loadAd(new AdRequest.Builder().build()); // Add a crash button. Button crashButton = new Button(this); crashButton.setText("Crash!"); crashButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { throw new RuntimeException("Test Crash"); // Force a crash } }); addContentView(crashButton, new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); }
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_my) // Gets the ad view defined in layout/ad_fragment.xml with ad unit ID set in // values/strings.xml. adView = findViewById(R.id.ad_view) adView.adListener = object : AdListener() { override fun onAdLoaded() { mAdView.responseInfo?.responseId?.let { adResponseId -> FirebaseCrashlytics.getInstance().setCustomKey( "banner_ad_response_id", adResponseId) } } } // Start loading the ad in the background. adView.loadAd(AdRequest.Builder().build()) // Add a crash button. val crashButton = Button(this) crashButton.text = "Crash!" crashButton.setOnClickListener { throw RuntimeException("Test Crash") // Force a crash } addContentView(crashButton, ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)) }
Tebrikler! Artık Crashlytics kontrol panelinizdeki kilitli oturumların önemli bölümünde en son banner_ad_response_id
gösterilecek. Bazı anahtarların kontrol panelinizde görünmesinin bir saati bulabileceğini unutmayın.