Bagaimana saya bisa mendapatkan data macet (setidaknya setumpuk jejak) dari aplikasi Android saya? Setidaknya ketika bekerja pada perangkat saya sendiri sedang diambil dengan kabel, tetapi idealnya dari setiap contoh aplikasi saya berjalan di alam sehingga saya dapat memperbaikinya dan membuatnya lebih solid.
android
crash
stack-trace
J. Pablo Fernández
sumber
sumber
Jawaban:
Anda dapat mencoba perpustakaan ACRA (Application Crash Report untuk Android) :
Mudah dipasang di aplikasi Anda, sangat dapat dikonfigurasi, dan tidak mengharuskan Anda meng-host skrip server di mana saja ... laporan dikirim ke spreadsheet Google Doc!
sumber
Untuk contoh aplikasi dan keperluan debugging, saya menggunakan solusi sederhana yang memungkinkan saya untuk menulis stacktrace ke kartu sd perangkat dan / atau mengunggahnya ke server. Solusi ini telah terinspirasi oleh Project android-remote-stacktrace (khususnya, bagian save-to-device dan upload-to-server) dan saya pikir ini memecahkan masalah yang disebutkan oleh Soonil. Ini tidak optimal, tetapi berfungsi dan Anda dapat memperbaikinya jika Anda ingin menggunakannya dalam aplikasi produksi. Jika Anda memutuskan untuk mengunggah stacktraces ke server, Anda dapat menggunakan skrip php (
index.php
) untuk melihatnya. Jika Anda tertarik, Anda dapat menemukan semua sumber di bawah ini - satu kelas java untuk aplikasi Anda dan dua skrip php opsional untuk server yang menampung stacktraces yang diunggah.Dalam Konteks (misalnya Kegiatan utama), panggil
CustomExceptionHandler
upload.php
index.php
sumber
HttpPost httpPost = new HttpPost(url);
harus dalam tugas async (atau penangan ... utas terpisah) sekarang jika Anda menargetkan Honeycomb atau lebih baruAnda juga dapat mencoba
[BugSense]Alasan: Spam Redirect ke url lain . BugSense mengumpulkan dan menganalisis semua laporan kerusakan dan memberi Anda laporan yang bermakna dan visual. Ini gratis dan hanya 1 baris kode untuk diintegrasikan.Penafian: Saya adalah salah satu pendiri
sumber
Di Android 2.2 sekarang dimungkinkan untuk secara otomatis mendapatkan Laporan Crash dari Aplikasi Android Market:
http://developer.android.com/sdk/android-2.2-highlights.html
sumber
Dimungkinkan untuk menangani pengecualian ini dengan
Thread.setDefaultUncaughtExceptionHandler()
, namun ini tampaknya mengacaukan metode penanganan pengecualian Android. Saya berusaha menggunakan penangan seperti ini:Namun, bahkan dengan memikirkan kembali pengecualian, saya tidak dapat mendapatkan perilaku yang diinginkan, yaitu mencatat pengecualian sementara masih memungkinkan Android untuk mematikan komponen yang telah terjadi itu, jadi saya menyerah setelah beberapa saat.
sumber
Constants.TAG
bagian dari kerangka kerja Android? Pertama kali melihatnya. Tampaknya tidak dapat menemukannya.Saya melihat bahwa pertanyaannya terlalu lama, dan harap jawaban saya bermanfaat bagi orang lain yang memiliki masalah yang sama ...
Berikan Crashlytics mencoba. Ini akan memberikan wawasan mendalam ke semua crash pada semua perangkat yang memiliki aplikasi Anda dan mengirim pemberitahuan kepada Anda melalui email .. Dan bagian terbaiknya adalah sepenuhnya gratis untuk digunakan ..
sumber
Ok, well saya melihat sampel yang disediakan dari rrainn dan Soonil, dan saya menemukan solusi yang tidak mengacaukan penanganan kesalahan.
Saya memodifikasi CustomExceptionHandler sehingga ia menyimpan UncaughtExceptionHandler asli dari Thread yang kami asosiasikan dengan yang baru. Pada akhir "uncaughtException" yang baru - Metode saya hanya memanggil fungsi lama menggunakan UncaughtExceptionHandler yang tersimpan.
Di kelas DefaultExceptionHandler Anda perlu sth. seperti ini:
Dengan modifikasi pada kode di http://code.google.com/p/android-remote-stacktrace Anda memiliki basis kerja yang baik untuk masuk dalam bidang ke server web Anda atau ke kartu-sd.
sumber
Google Play Developers Console benar-benar memberi Anda jejak Stack dari aplikasi yang mogok dan telah mengirim laporan, juga memiliki bagan yang sangat baik untuk membantu Anda melihat informasi, lihat contoh di bawah:
sumber
Saya telah menggunakan Crittercism untuk aplikasi Android dan iOS saya - dengar tentang mereka di techcrunch. Cukup senang dengan mereka sejauh ini!
sumber
Saya membuat versi saya sendiri di sini: http://androidblogger.blogspot.com/2009/12/how-to-improve-your-application-crash.html
Ini pada dasarnya hal yang sama, tetapi saya menggunakan surat daripada koneksi http untuk mengirim laporan, dan, yang lebih penting, saya menambahkan beberapa informasi seperti versi aplikasi, versi OS, model telepon, atau memori yang tersedia untuk laporan saya .. .
sumber
gunakan ini untuk menangkap detail pengecualian:
simpan ini dalam database dan pertahankan lognya.
sumber
Anda juga dapat menggunakan layanan keseluruhan (sederhana) untuk itu daripada hanya perpustakaan. Perusahaan kami baru saja merilis layanan untuk itu: http://apphance.com .
Ini memiliki perpustakaan .jar sederhana (untuk Android) yang Anda tambahkan dan integrasikan dalam 5 menit dan kemudian perpustakaan mengumpulkan tidak hanya informasi macet tetapi juga log dari aplikasi yang berjalan, serta memungkinkan penguji Anda melaporkan masalah langsung dari perangkat - termasuk seluruh konteks (rotasi perangkat, apakah itu terhubung ke wifi atau tidak dan banyak lagi). Anda dapat melihat log menggunakan panel web yang sangat bagus dan berguna, di mana Anda dapat melacak sesi dengan aplikasi Anda, crash, log, statistik dan banyak lagi. Layanan ini dalam tahap uji beta tertutup sekarang, tetapi Anda dapat meminta akses dan kami memberikannya kepada Anda dengan sangat cepat.
Penafian: Saya CTO dari Polidea, dan rekan pembuat layanan ini.
sumber
Terima kasih sumber daya hadir dalam
Stackoverflow
membantu saya menemukan jawaban ini.Anda dapat menemukan laporan kerusakan Android Anda dari jarak jauh langsung ke email Anda . ingat Anda harus memasukkan email Anda di dalam kelas CustomExceptionHandler .
Langkah-langkah yang diperlukan:
1) di onCreate dari aktivitas Anda, gunakan bagian kode ini.
2) gunakan versi override ini dari kelas CustomExceptionHandler (rrainn), menurut phpscript saya.
sumber
Sekarang, laporan Firebase Crash sangat populer dan lebih mudah digunakan. Silakan merujuk tautan berikut untuk informasi lebih lanjut: Firebase Crash Reporting
Semoga ini bisa membantu Anda.
sumber
Ini sangat kasar, tetapi memungkinkan untuk menjalankan logcat di mana saja, jadi peretasan yang cepat dan kotor akan ditambahkan ke sembarang blok tangkapan
getRuntime().exec("logcat >> /sdcard/logcat.log");
sumber
Ada alat yang disebut fabric, ini adalah alat analitik crash, yang akan memungkinkan Anda untuk mendapatkan laporan kerusakan, ketika aplikasi dikerahkan secara langsung dan selama pengembangan. Menambahkan alat ini ke aplikasi Anda juga sederhana .. Saat aplikasi Anda mogok, laporan kerusakan itu dapat dilihat dari dasbor fabric.io Anda. laporan itu ditangkap secara otomatis. tidak akan meminta izin pengguna. Apakah dia ingin mengirim laporan bug / crash. Dan ini sepenuhnya gratis ... https://get.fabric.io/
sumber
Google Firebase adalah cara terbaru (2016) Google untuk menyediakan data kerusakan / kesalahan pada ponsel Anda. Sertakan dalam file build.gradle Anda:
Kecelakaan fatal dicatat secara otomatis tanpa memerlukan input pengguna dan Anda juga dapat mencatat crash tidak fatal atau peristiwa lain seperti:
sumber
Ada perpustakaan android ini bernama Sherlock . Ini memberi Anda laporan lengkap kerusakan bersama dengan informasi perangkat dan aplikasi. Setiap kali terjadi kerusakan, ini menampilkan pemberitahuan di bilah pemberitahuan dan mengklik mengklik pemberitahuan itu, itu membuka rincian kecelakaan. Anda juga dapat berbagi detail kerusakan dengan orang lain melalui email atau opsi berbagi lainnya.
Instalasi
Demo
sumber
Meskipun banyak jawaban di halaman ini berguna, mudah bagi mereka untuk menjadi ketinggalan zaman. Situs web AppBrain mengumpulkan statistik yang memungkinkan Anda menemukan solusi pelaporan kerusakan paling populer yang ada saat ini:
Pustaka pelaporan kerusakan Android
Anda dapat melihat bahwa pada saat memposting gambar ini, Crashlytics digunakan di 5,24% aplikasi dan 12,38% pemasangan.
sumber
Kami menggunakan sistem yang kami tanam sendiri di dalam perusahaan dan melayani kami dengan sangat baik. Ini adalah pustaka android yang mengirimkan laporan kerusakan ke server dan server yang menerima laporan dan membuat beberapa analitik. Server mengelompokkan pengecualian dengan nama pengecualian, stacktrace, pesan. Ini membantu mengidentifikasi masalah paling kritis yang perlu diperbaiki. Layanan kami dalam versi beta publik sekarang sehingga semua orang dapat mencobanya. Anda dapat membuat akun di http://watchcat.co atau lihat saja cara kerjanya menggunakan akses demo http://watchcat.co/reports/index.php?demo .
sumber
Jika Anda ingin jawaban segera, Anda dapat menggunakan logcat
$adb shell logcat -f /sdcard/logoutput.txt *:E
Jika ada terlalu banyak sampah di log Anda sekarang, coba bersihkan dulu.
$adb shell logcat -c
Kemudian coba jalankan aplikasi Anda kemudian logcat lagi.
sumber
Saya menemukan satu lagi aplikasi web yang bagus untuk melacak laporan kesalahan.
https://mint.splunk.com/
Sejumlah kecil langkah untuk dikonfigurasikan.
Itu dia. Anda masuk dan pergi ke dasbor aplikasi Anda, Anda akan mendapatkan semua laporan kesalahan.
Semoga ini bisa membantu seseorang.
sumber
Untuk layanan pelaporan pelaporan / pelaporan kecelakaan alternatif, periksa Raygun.io - ada banyak logika bagus untuk menangani gangguan Android, termasuk pengalaman pengguna yang baik saat menghubungkannya ke aplikasi Anda (dua baris kode di Aktivitas utama Anda dan beberapa baris XML disisipkan ke dalam AndroidManifest).
Ketika aplikasi Anda mogok, itu akan secara otomatis mengambil jejak tumpukan, data lingkungan untuk perangkat keras / perangkat lunak, info pelacakan pengguna, data kustom apa pun yang Anda tentukan dll. Ini mempostingnya ke API secara tidak sinkron sehingga tidak ada pemblokiran utas UI, dan menyimpannya di cache. ke disk jika tidak ada jaringan yang tersedia.
Penafian: Saya membangun penyedia Android :)
sumber
Baru Mulai menggunakan ACRA https://github.com/ACRA/acra menggunakan Google Forms sebagai backend dan sangat mudah diatur & digunakan, ini adalah default.
TETAPI Mengirim laporan ke Google Forms akan ditinggalkan (kemudian dihapus): https://plus.google.com/118444843928759726538/posts/GTTgsrEQdN6 https://github.com/ACRA/acra/wiki/Notice-on-Google -Form-Spreadsheet-penggunaan
Pokoknya memungkinkan untuk mendefinisikan pengirim Anda sendiri https://github.com/ACRA/acra/wiki/AdvancedUsage#wiki-Implementing_your_own_sender Anda dapat mencoba mengirim email kepada pengirim misalnya.
Dengan upaya minimum, Anda dapat mengirim laporan ke bugense: http://www.bugsense.com/docs/android#acra
NB Akun gratis bugense dibatasi hingga 500 laporan / bulan
sumber
Terlambat ke pesta, saya mendukung dan percaya ACRA adalah pilihan terbaik di antara semuanya. Mudah diatur dan dikonfigurasikan. Saya telah membuat panduan terperinci dengan masukan dari seluruh penjuru untuk mengambil laporan kerusakan menggunakan ACRA dan mengirimkan hal yang sama ke alamat email saya menggunakan MandrillAp.
Tautan ke pos: https://androidician.wordpress.com/2015/03/29/sending-crash-reports-with-acra-over-email-using-mandrill/
Tautan ke proyek sampel di github: https://github.com/ayushhgoyal/AcraSample
sumber
Saya salah satu pendiri Bugsnag yang kami desain untuk tujuan ini. Bugsnag secara otomatis menangkap pengecualian yang tidak ditangani di aplikasi Android dan mengirimkannya ke dasbor kami, tempat Anda dapat memprioritaskan perbaikan dan menyelami informasi diagnostik.
Berikut adalah beberapa hal penting untuk dipertimbangkan saat memilih atau membangun sistem pelaporan kerusakan, bersama dengan beberapa cuplikan kode:
Jika Anda ingin melihat beberapa praktik terbaik seputar penanganan / pelaporan kerusakan di Android, Anda dapat memeriksa kode sumber lengkap untuk pustaka pelaporan kerusakan Bugsnag yang sepenuhnya open source, jangan ragu untuk merobohkannya dan menggunakannya dalam aplikasi Anda sendiri!
sumber
Jika aplikasi Anda sedang diunduh oleh orang lain dan macet di perangkat jarak jauh, Anda mungkin ingin melihat ke perpustakaan pelaporan kesalahan Android (dirujuk dalam pos SO ini ). Jika hanya di perangkat lokal Anda sendiri, Anda dapat menggunakan LogCat. Bahkan jika perangkat tidak terhubung ke mesin host ketika crash terjadi, menghubungkan perangkat dan mengeluarkan perintah adb logcat akan mengunduh seluruh riwayat logcat (setidaknya sejauh itu buffered yang biasanya merupakan loooot data log , hanya saja tidak terbatas). Apakah salah satu dari opsi itu menjawab pertanyaan Anda? Jika tidak, bisakah Anda mencoba menjelaskan apa yang Anda cari sedikit lebih banyak?
sumber
Analitik yang membingungkan memberi Anda info macet, model perangkat keras, versi android, dan statistik penggunaan aplikasi langsung. Di SDK baru mereka tampaknya memberikan info kerusakan lebih rinci http://www.flurry.com/flurry-crash-analytics.html .
sumber
Google mengubah berapa banyak laporan kerusakan yang Anda dapatkan. Sebelumnya Anda hanya mendapat laporan bug yang dilaporkan secara manual.
Sejak konferensi pengembang terakhir dan pengenalan Android Vitals, Anda juga mendapatkan laporan kerusakan dari pengguna yang telah memungkinkan untuk berbagi data diagnostik.
Lihat kesalahan & aplikasi tidak merespons (ANR) kesalahan
sumber
Anda dapat melakukan ini langsung di Android Studio. Cukup sambungkan ponsel Anda, jalankan aplikasi, biarkan crash dan Anda dapat melihat stacktrace langsung di Android Studio.
sumber