ACRA ve Cloudant ile Otomatik Android Kilitlenme Raporları

Yayınlanan: 2022-03-11

Temel bir Android uygulaması yapmak kolaydır. Öte yandan güvenilir, ölçeklenebilir ve sağlam bir Android uygulaması yapmak oldukça zor olabilir.

Tonlarca farklı üreticiden pompalanan binlerce mevcut cihazla, tek bir kod parçasının telefonlarda güvenilir bir şekilde çalışacağını varsaymak en iyi ihtimalle saflıktır.

Segmentasyon, açık bir platforma sahip olmak için en büyük ödünleşimdir ve bedeli, bir uygulama üretim aşamasını geçtikten çok sonra devam eden kod bakımının para biriminde öderiz.

Android hata raporlama neden önemlidir?

Peki, bir Android uygulaması çöktüğünde veya yanıt vermediğinde ne olur? Peki, "Kapatmaya Zorla" iletişim kutusu açılır ve kullanıcıya bir şeylerin ters gittiğini bildirir. Uygulama Google Play üzerinden indirildiyse, kullanıcıdan, sizin (geliştiricinin) içinde görüntüleyebileceğiniz ayrıntılı bir Android kilitlenme raporu (zaman, telefon modeli, Android sürümü, yığın izleme vb. dahil) göndererek kilitlenmeyi bildirmesi istenir. Geliştirici Konsolu, suçlu hatayı gidermenize olanak tanır.

Bunların hepsi kulağa hoş geliyor - ancak Android'in varsayılan hata raporlamasıyla ilgili büyük bir sorun var: kullanıcılar bunu kullanmama eğilimindedir ve geliştiricilerin uygulamalarının durumu hakkında bilgisiz kalmasına neden olur.

Bunların hepsi kulağa hoş geliyor - ancak Android'in varsayılan hata bildirimini kullanmanın büyük bir sorunu var: kullanıcılar uygulamaları çöktüğünde herhangi bir işlem yapma eğiliminde değiller ; Aslında, çoğunluk Android hata raporları göndermemeyi tercih ediyor. O halde, vicdanlı bir geliştirici olarak, uygulamanızın çökmeleri ve başarısızlıkları hakkında nasıl güvenilir bilgiler edinebilirsiniz?

Güvenilir bir Android kilitlenme günlüğü, özellikle kullanıcılar kilitlenme raporları göndermediğinde önemlidir.

ACRA ile tanışın

ACRA, “Android için Otomatik Kilitlenme Raporlaması” anlamına gelir. 'Manuel hata raporlama' sorununu birkaç satır kodla çözmenizi sağlayan ücretsiz bir kitaplıktır. Kitaplığı uyguladıktan ve her şey düzgün bir şekilde başlatıldıktan sonra, Google varsayılanıyla aynı Android hata günlüklerini (artı bir dizi ek özelleştirme seçeneği) otomatik olarak ve kullanıcının işlem yapmasına gerek kalmadan ayıklayabilirsiniz.

Bunun ötesinde, ACRA, varsayılanı sessiz arka plan raporlaması ve özelleştirilmiş diyaloglar dahil alternatifler olmak üzere bir Android çökmesi hakkında kullanıcıyı nasıl bilgilendirmek istediğinizi seçmenize izin verir.

Yakın zamana kadar ACRA, Google E-Tablo tarafından destekleniyordu; bu, tüm raporlarınızı Google Drive hesabınızda ücretsiz olarak barındırılan tek bir dosyada alabileceğiniz anlamına geliyordu. Maalesef Google gelecekte bu seçeneği kullanmamamızı istedi, bu nedenle kilitlenme raporu verilerini göndermek için bazılarını bu eğiticide ele alacağımız birkaç alternatifimiz kaldı:

  • Standart e-posta (hala kullanıcı etkileşimi gerektirir).
  • Özel e-posta/HTTP istemcisi (kapsamlı kurulum gerektirir).
  • Özel arka uç (ücretsizden ticari çözümlere kadar çeşitli seçeneklerle).

Bu makalede, şu çözümlerden birini analiz edeceğiz: ACRA raporlarınızı bir Cloudant arka ucunda barındırma ve verileri acralyzer ile görselleştirme.

Cloudant arka uç ayarlama

Yapmamız gereken ilk şey bir Cloudant hesabı açmak. Elbette bir püf noktası var: Cloudant'ın hizmetleri tamamen ücretsiz değil, ancak fiyatlandırma sayfalarına göre aylık 5 ABD doları sınırını aşmanız pek olası değil (kodunuzda çok büyük bir kullanıcı tabanınız ve bir ton hata yoksa).

Kayıt olduktan sonra, işlerin nasıl yürüdüğünü anlamamız gerekiyor. Yüksek düzeyde, arka ucumuz iki bileşenden oluşacaktır:

  1. Bir depolama veritabanı veya daha kesin olmak gerekirse, bir Apache CouchDB. CouchDB, verilerini JSON formatında saklar; bu, Android cihazından gönderilen tüm raporların bir giriş olarak eklenebilmesi için formatla eşleşmesi gerektiği anlamına gelir. Bir veritabanı eki, basit bir HTTP POST veya PUT isteğidir.
  2. Bir web uygulaması (analiz için) veya daha doğrusu bir CouchApp. Bu, sorguları çalıştırmanıza ve CouchDB örneğinde depolanan verileri görüntülemenize olanak tanıyan basit bir JavaScript uygulamasıdır.

Arka uçumuzun düzgün çalışması için bu iki bileşeni kurmamız gerekecek. Teoride, veritabanını ve uygulamayı kaynaktan oluşturabilir ve ardından bunları arka uçumuza dağıtmak için bir araç kullanabiliriz - ancak ACRA'daki iyi insanlar bunu bizim için zaten yaptı. Bu yüzden en kolay yaklaşım, uzak bir veritabanını ve uzak bir uygulamayı çoğaltmaktır.

Devam edelim ve boş bir ACRA CouchDB kopyalayalım:

  • Cloudant kontrol panelinizde 'Çoğaltma' bölümünü seçin.
  • Kaynak veritabanı olarak, URL olarak http://get.acralyzer.com/distrib-acra-storage olan 'Uzak veritabanı'nı seçin.
  • Hedef veritabanı olarak 'Yeni veritabanı'nı seçin ve "acra-{myapp}" (tırnak işaretleri olmadan) olarak adlandırın. {myapp} parametresinin uygulamanıza özel olması ve veritabanı adının "acra-" ile başlaması gerektiğini unutmayın.
  • 'Çoğalt'ı tıklayın.

Bu, Android kilitlenme raporlamasını yönetmek için bir Cloudant arka ucunun nasıl kurulacağını gösterir.

Böylece, rapor depolamak için veritabanını başarıyla kopyaladık. Ardından, verileri görselleştirebilmemiz için acralyzer CouchApp'i çoğaltmamız gerekiyor:

  • Cloudant kontrol panelinizde 'Çoğaltma' bölümünü seçin.
  • Kaynak veritabanı olarak, URL olarak http://get.acralyzer.com/distrib-acralyzer olan 'Uzak veritabanı' öğesini seçin.
  • Hedef veri tabanı olarak 'Yeni veri tabanı'nı seçin ve ona “acralyzer” adını verin.
  • 'Çoğalt'ı tıklayın.

Bu adım, Android kilitlenme günlüğü verilerini görselleştirmek için acra uygulamasının çoğaltılmasından oluşur.

Not : acralyzer uygulamasının kopyalanması isteğe bağlıdır. Verileri görselleştirmek yerine yalnızca Android kilitlenme raporunuzu depolamakla ilgileniyorsanız, buna ihtiyacınız olmayacak (bu Android öğreticisinin sonraki bölümünde acralyzer'a daha yakından bakacağız). JavaScript becerilerinizden yeterince eminseniz, kendi analitik uygulamanızı bile yazabilirsiniz! Ancak bu, bu blog gönderisinin kapsamı dışındadır.

İlk kurulum işleminin son adımı güvenlik izinlerini eklemektir. Cloudant, bireysel haklar üzerinde daha hassas kontrol ile CouchDB üzerinde kendi güvenlik katmanını sağlar, bu nedenle veritabanımıza bir rapor yazmak için yazma izinlerine sahip bir kullanıcı hesabı oluşturmamız gerekir:

  • Cloudant kontrol panelinizde 'Veritabanı' bölümünü seçin.
  • acra-{myapp} veritabanı için izinler bölümünü (kilit simgesi) tıklayın.
  • 'API anahtarları oluştur' seçeneğini tıklayın.
  • Oluşturulan kullanıcı adını ve şifreyi not edin (bunları daha sonra kullanacağız).
  • Oluşturulan kullanıcı adı için yazma izinleri ekleyin.

Android kilitlenme günlüklerinize ve raporlarınıza daha sonra erişilebilmesi için güvenlik izinleri ekleyin.

Acralyzer ile Android kilitlenme raporlarını görselleştirme

Kopyalandıktan sonra, acralyzer panosuna https://{myapp}.cloudant.com/acralyzer/_design/acralyzer/index.html#/dashboard takip edilerek kolayca erişilebilir. Kabul edeceğim: Piyasadaki en güzel analitik aracı değil, ama amacına hizmet ediyor.

Üst menüden, görselleştirmek istediğiniz veritabanını seçebilir (tek bir projede farklı uygulamalar için birden fazla veritabanı barındırmak mümkündür; bu, kullanım kotanızı etkiler) ve verileri ana panoda önizleyebilirsiniz. Örneğin, şunları yapabilirsiniz:

  • Rapor sayısını zaman birimine göre (saat, gün, ay, vb.) çizin.
  • Raporların Android'e özgü metriklere göre dağılımını görüntüleyin (Android sürümü, SDK sürümü, uygulama sürümü, cihaz vb.).
  • Tüm kilitlenme raporlarını listeleyin (ayrıntılı bir yığın izleme ile) veya tüm hataları görüntüleyin (burada bir "hata", farklı kullanıcılardan alınan bir grup özdeş rapordur).
  • Tek bir hatanın ayrıntılarını önizleyin ve durumunu çözüldü olarak ayarlayın (düzeltilmişse).
  • Eski veya kullanılmayan girdileri temizleyin.

Android kilitlenme günlüğü verilerini görselleştirmek, uygulamanızı daha stratejik bir şekilde geliştirmek için çok yardımcı olabilir.

Görselleştirme için kullanılabilen Android kilitlenme metriklerinin, uygulamamızdan göndermeyi seçtiğimiz raporlara bağlı olacağını unutmayın. ACRA, bazıları oldukça büyük olabilen veya hata düzeltmeyle tamamen ilgili olmayan çeşitli rapor alanları sunar. Çoğu proje için gerekli rapor alanları yeterli olacaktır. Bunlar şunları içerir:

  • APP_VERSION_CODE
  • APP_VERSION_NAME
  • ANDROID_VERSION
  • PAKET İSMİ
  • REPORT_ID
  • YAPI
  • YIĞIN İZLEME

Android projenizde ACRA'yı uygulama

Bu öğreticide daha önce bahsedildiği gibi, ACRA'yı uygulamak çok kolaydır ve yalnızca birkaç hızlı adım gerektirir.

bağımlılık ekle

İlk olarak, aşağıdaki yollardan biriyle kitaplığı bir bağımlılık olarak eklememiz gerekir:

  • /libs klasörünüzde bir .jar dosyası olarak.
  • Bir maven bağımlılığı olarak:

     <dependency> <groupId>ch.acra</groupId> <artifactId>acra</artifactId> <version>XYZ</version> </dependency>
  • Gradle bağımlılığı olarak:

     compile 'ch.acra:acra:XYZ'

Uygulama sınıfı ekle

Ardından, projemize bir Android Application sınıfı eklememiz (veya yalnızca bir örnek olabileceği için mevcut bir sınıfı güncellememiz) ve bunu AndroidManifest.xml'de bildirmemiz gerekiyor:

 <application android:name=".MyApp" android:theme="@style/AppTheme"> ...

Ve orada ACRA'yı kurun:

 @ReportsCrashes( formUri = "https://{myusername}.cloudant.com/acra-{myapp}/_design/acra-storage/_update/report", reportType = HttpSender.Type.JSON, httpMethod = HttpSender.Method.POST, formUriBasicAuthLogin = "GENERATED_USERNAME_WITH_WRITE_PERMISSIONS", formUriBasicAuthPassword = "GENERATED_PASSWORD", formKey = "", // This is required for backward compatibility but not used customReportContent = { ReportField.APP_VERSION_CODE, ReportField.APP_VERSION_NAME, ReportField.ANDROID_VERSION, ReportField.PACKAGE_NAME, ReportField.REPORT_ID, ReportField.BUILD, ReportField.STACK_TRACE }, mode = ReportingInteractionMode.TOAST, resToastText = R.string.toast_crash ) public class MainApp extends Application { @Override public void onCreate() { super.onCreate(); // The following line triggers the initialization of ACRA ACRA.init(this); } }

Bu kadar! Elbette, tüm {myapp} yer tutucularını gerçek değerlerle ve ayrıca formUriBasicAuthLogin ve formUriBasicAuthPassword değerleriyle değiştirmeniz gerekecektir.

Yukarıdaki kod parçasından da görebileceğiniz gibi, sadece gerekli rapor alanlarını kullanıyoruz. Başvurunuzla ilgili olabilecek diğer alanları eklemekten çekinmeyin.

POST yerine PUT kullanmayı da seçebilirsiniz. Bu durumda, REPORT_ID parametre olarak former sonuna eklenecektir.

Son olarak, varsayılan olarak sessiz bir arka plan raporu olmak üzere, kullanıcının Android uygulamasının çökmesi hakkında nasıl bilgilendirileceğini de seçebilirsiniz. Bizim durumumuzda, kullanıcıya çökmenin rapor edildiğini ve yakında bir hata düzeltmesinin sunulacağını bildiren bir Toast mesajı görüntülemeyi seçiyoruz.

Yardıma mı ihtiyacınız var? İşte örnek bir proje

ACRA'yı çalışırken görmek için GitHub'da acra_example deposunu kurdum. Başlangıçta ACRA'yı başlatan basit bir uygulamaya sahiptir ve bir düğmeye basarak (daha sonra bir boş işaretçi istisnasını tetikleyen) çökmesine izin verir. Kilitlenme verileri, burada görselleştirilebilen örnek bir Cloudant veritabanına gönderilir.

Verileri görüntülemek için aşağıdaki kimlik bilgileriyle oturum açın:

  • kullanıcı adı: medo
  • Şifre: acraexample

ACRA'ya alternatifler

ACRA, otomatik Android hata raporlaması için tek seçenek değildir. Çökmelerin olması kaçınılmaz olduğundan, çözümlerinden para kazanmaya çalışan büyük bir işletmeden geliştiriciye (B2D) pazar var.

Örneğin Crittercism, kilitlenme raporlaması için çok olgun bir platformdur. Harika görünüyor, veri analizi için birçok seçenek sunuyor ve entegrasyonu çok kolay. Tek dezavantajı: fiyat ve ücretsiz deneme, aktif kullanıcı sayısı, veri saklama günleri ve destek açısından oldukça sınırlıdır). BugSense benzer bir hizmettir.

Ancak bence Crashlytics üstün bir çözüm. Yakın zamana kadar Crashlytics'in ücretsiz bir modeli vardı (ücretli premium katmanla); ama şimdi (Twitter tarafından satın alındıktan sonra), önceden premium olan tüm özellikler ücretsiz olarak kullanılabilir. Kullanım maliyeti, ücreti veya limiti yoktur. Bu, kullanımı çok kolay olduğu ve güçlü analitik ve görselleştirme araçları sunduğu için birçok yüksek profilli ve üst düzey şirket ve geliştirici için tercih edilen hata raporlama yöntemidir. Hatta bir eklenti olarak en popüler IDE'lerle (örn. Eclipse, Android Studio) entegre olur, bu nedenle uygulamanıza Crashlytics eklemek, bir proje seçip bir düğmeye basmak kadar basittir. Bu eklentiler ayrıca, bir tarayıcı açmanıza gerek kalmadan IDE'nizden kilitlenme raporlarını izlemenizi sağlar.

Öyleyse, aynı uygulama çabası için çok daha iyi görünen ve daha fazla özellik sunan başka alternatifler varken neden ACRA kullanalım? Sana iki sebep vereceğim.

  1. Tüm bu diğer seçenekler kapalı kaynak, özel yazılımdır . EULA'larla dolu bir sepetle bile, verilerinizin nasıl toplandığından ve işlendiğinden tam olarak emin olamazsınız. Öte yandan, ACRA ve acralyzer, GitHub'da barındırılan, kolayca çatallayabileceğiniz ve ihtiyaçlarınıza göre uyarlayabileceğiniz açık kaynaklı projelerdir.

  2. Veri hareketliliği . Diyelim ki Cloudant'tan memnun değilsiniz. Verilerinizi çoğaltmak ve başka bir arka uca taşımak çok kolay. Verilerin size ait kalacağı garanti edilir.

Birçok seçenekte olduğu gibi, bu da kişisel tercihe ve aşinalığa bağlı. Uygulamanızı daha güvenilir hale getirmek için kullanılabilecek çeşitli alternatifler hakkında daha fazla tartışma için bu Google+ ileti dizisine göz atın.

Sonuç olarak

ACRA, minimum uygulama çabası için ücretsiz, otomatik kilitlenme raporlaması ve uygulamanız için temel analitik elde etmek için Cloudant ve acralyzer ile birlikte kullanılabilen, son derece sağlam ve son derece özelleştirilebilir bir kitaplıktır.

Güvenilir Android kodu yazmak çok fazla deneyim ve öngörü gerektirir, ancak hiçbirimiz gerçekten her şeyi bilen değiliz. Beklenmedik çökmelere ve hatalara hazırlıklı olun ve beklenmeyenleri en kısa sürede düzeltmeye hazır olun. Harika ürünlere ve harika kullanıcı deneyimlerine giden çalışma türü budur.

İlgili: Uygulamanızı Karlı Hale Getirin—Mobil Analizden Yararlanın