Masalah saat mengakses log pesan di Jelly Bean dengan aLogcat

12

Ringkasan

Saya mengalami masalah dalam mengakses pesan log K9 menggunakan aLogcat, lihat di bawah untuk detail lebih lanjut. Yang ingin saya ketahui adalah:

  • Mengapa tidak ada pesan log dari K9 yang muncul di penampil log aLogcat?
  • Adakah yang punya saran tentang bagaimana saya bisa melihat teks lengkap dari kesalahan yang terjadi ketika mencoba menyinkronkan folder K9 saya?
  • Mungkinkah ada sesuatu yang berubah di Jelly Bean yang menyebabkan logging K9 berhenti bekerja?
  • Karena tampaknya ada beberapa pesan yang ditampilkan oleh aLogcat secara umum, apakah ada sesuatu yang berubah di Jelly Bean yang dapat berarti bahwa ia tidak lagi dapat mengakses semua pesan?

Detail

Saya baru-baru ini mengalami masalah koneksi dengan K9. Folder saya gagal disinkronkan dan daftar folder akhirnya penuh dengan kesalahan soket ( libcore.io.ErrnoException:) atau kesalahan ssl ( javex.net.ssl.SSLException:) dll. Di mana waktu yang terakhir diperiksa . Saya mendapatkan pesan berbeda tergantung pada masalah yang terjadi pada saat itu, tetapi saya tidak dapat melihat teks lengkap dari pesan kesalahan tersebut, jadi sulit untuk menebak penyebabnya.

Berpikir bahwa file-file log mungkin berisi lebih banyak informasi, saya mengikuti instruksi di Merekam log debug , mengaktifkan debug logging di K9, menginstal Loglog dan mencoba untuk melihat log. Sayangnya, mana buffer log yang saya pilih ( Utama , Acara atau Radio ), tampaknya tidak ada pesan dari K9.

Jika saya menambahkan (k9|AndroidRuntime)filter regex yang disarankan maka saya tidak melihat apa pun di log. Jika saya menghapusnya maka Main sebagian besar berisi pesan pengumpulan sampah, Acara tampaknya sebagian besar berisi pesan dari aLogcat itu sendiri dan saya belum melihat pesan log di Radio .

Jika ada bedanya, saya menggunakan Nexus 7, tetapi saya akan berpikir bahwa penebangan akan ke lokasi standar yang tidak akan berubah antara versi android.

Mark Booth
sumber

Jawaban:

24

Adakah yang punya saran tentang bagaimana saya bisa melihat teks lengkap dari kesalahan yang terjadi ketika mencoba menyinkronkan folder K9 saya?

Tampaknya tidak ada cara untuk melihat pesan log ini di perangkat tanpa akses root , tetapi jika Anda memang memiliki akses root, ada beberapa opsi, baik memberikan izin yang diperlukan ke aLogcat atau mempertimbangkan menggunakan peretasan TM yang mengerikan untuk melihat mereka secara langsung.

Lihat file log di PC atau workstation via adb

Jika Anda dapat menghubungkan perangkat Android Anda ke PC atau workstation, maka Anda dapat mengakses log melalui adbperintah.

Untuk melakukan ini pada Windows, pertama Anda harus menginstal Android SDK (yang akan membutuhkan Java SE SDK ) dan menambahkan android-sdk\toolsdan android-sdk\platform-toolske jalur sistem . Kemudian aktifkan USB debugging pada Nexus 7 Anda, colokkan melalui USB, dan instal Antarmuka ADB Komposit Android dari android-sdk\extras\google\usb_driver(saya harus memaksa Windows XP untuk mencari di sini, tidak akan menemukan driver pada itu sendiri).

Untuk perincian tentang cara adbbangkit dan berjalan tanpa menginstal SDK Android lengkap, atau pada mesin Mac atau Linux, lihat jawaban Izzy yang sangat baik untuk Apakah ada instalasi minimal ADB?

Kemudian Anda dapat membuka shell (yaitu cmdjendela) dan menjalankan perintah:

adb logcat k9:V *:S AndroidRuntime:E
  • Saya telah mengkonfirmasi bahwa ini berfungsi pada Nexus 7 non-rooted saya.

Berikan izin ke aLogcat

Jika Anda memiliki akses root , Anda dapat mempertimbangkan untuk memberikan READ_LOGSizin ke aLogcat , seperti yang disarankan dalam posting ini aLogcat / CatLog / Lumberjack tidak berfungsi? Lakukan ini ... di forum xda-developer :

pm grant <pkg> android.permission.READ_LOGS

Untuk memberikan izin ini kepada alogcatatau alogcat.donate, Anda akan menggunakan salah satu dari perintah berikut, tergantung pada apakah Anda menjalankan versi donasi:

pm grant org.jtb.alogcat.donate android.permission.READ_LOGS
pm grant org.jtb.alogcat android.permission.READ_LOGS

Menurut salah satu posting di android-developer dan tiket , pemberian izin tetap hidup kembali dan diperbarui, tetapi tidak mencopot / instal ulang.

Sayangnya karena ini memerlukan akses root, apakah saya menjalankan ini di perangkat atau di PC saya (diawali oleh adb shell) saya hanya mendapatkan kesalahan:

Neither user 12345 nor current process has android.permission.GRANT_REVOKE_PERMISSION
  • Saya tidak dapat mengonfirmasi bahwa ini berfungsi, karena Nexus 7 saya belum di-root.

Pertimbangkan untuk menggunakan peretasan TM yang mengerikan

Jika Anda memiliki akses root , Anda dapat mempertimbangkan untuk membuat logcat setuid root dan menjalankan logcat dari shell perangkat, seperti yang disarankan dalam jawaban saya ini. Bagaimana saya bisa mengakses file log android pada Nexus 7 saya tanpa akses root? pertanyaan:

chmod 04755 /system/bin/logcat
logcat k9:V *:S AndroidRuntime:E
  • Sekali lagi, saya tidak dapat mengkonfirmasi bahwa ini berfungsi dan saya mungkin hanya akan menggunakannya sebagai upaya terakhir , mengingat implikasi keamanannya.

Mengapa tidak ada pesan log dari K9 yang muncul di penampil log aLogcat ?

Mungkinkah ada sesuatu yang berubah di Jelly Bean yang menyebabkan logging K9 berhenti bekerja?

Karena tampaknya ada beberapa pesan yang ditampilkan oleh aLogcat secara umum, apakah ada sesuatu yang berubah di Jelly Bean yang dapat berarti bahwa ia tidak lagi dapat mengakses semua pesan?

Tampaknya ini adalah perubahan dalam Jelly Bean yang memengaruhi semua aplikasi yang mungkin mencoba membaca file log.

Rupanya izin READ_LOGS tidak diberikan untuk aplikasi pihak ke-3 di Jelly Bean . Karena tautan ini tampaknya tidak dapat diandalkan:

Hari ini saya telah menguji aplikasi saya pada emulator terbaru (api 16) sebelum merilisnya ke Google Play. Ternyata Android sekarang menolak untuk memberikan izin ini ke aplikasi pihak ke-3. Ini aneh karena saya telah melihat semua perubahan yang didokumentasikan Jelly Bean dan tidak dapat menemukan apa pun yang menyebutkan izin READ_LOGS.

dan kemudian

ProtectionLevel untuk READ_LOGS sekarang "signature | system | development". Sintaksis pipa baru untuk protectionLevel juga tidak berdokumen (lihat http://code.google.com/p/android/issues/detail?id=34785 ).

Kecurigaan saya adalah bahwa aLogcat hanya melihat pesan yang dihasilkan dengan sendirinya dan itu adalah vm.

Untuk informasi lebih lanjut, lihat Alur jawaban pertanyaan saya Seberapa aktif saya harus mengharapkan file log sistem Jelly Bean saya?

Mark Booth
sumber
IIRC adb logcatmasih bisa mendapatkan log android penuh pada Jelly Bean.
Aliran
Itu tidak memerlukan root tetapi Anda harus mengaktifkan adb di perangkat Anda (biasanya di bawah opsi pengembang).
Aliran
@ Aliran - Saya sekarang telah mengkonfirmasi bahwa saya dapat melihat log pada PC saya menggunakan adb logcatdari sana dan telah memperbarui jawaban saya sesuai. Masih frustasi karena saya tidak dapat menemukan cara untuk mengakses log tanpa akses root dari perangkat itu sendiri.
Mark Booth
Ini adalah keseluruhan poin dalam perubahan log JB yang pengguna non-root tidak dapat mengakses log sistem lengkap.
Aliran
@ Aliran - Ya, dan seluruh poin dari pesan log adalah Anda dapat menggunakannya untuk mencari tahu apa yang terjadi. JB membuat aplikasi seperti aLogcat sangat tidak berguna, karena sekarang hanya dapat mengakses pesan log yang telah dibuat sendiri!
Mark Booth
0

Saya telah melihat perilaku ini di K9 ketika server email saya memperbarui sertifikat SSL-nya. Cara mengatasinya adalah dengan menekan lama akun, pilih Account settings -> Fetching mail -> Incoming serverdan tekan saja Nexthalaman untuk mengkonfirmasi pengaturan Anda sampai Anda mendapatkan popup tentang sertifikat (ini mungkin tidak muncul jika semuanya OK dengan sertifikat, tambang saya memiliki vhost salah). Konfirmasikan sertifikat dan ikuti saja pengaturan lainnya dan akun Anda akan mulai berfungsi.

onik
sumber
@ MarkBooth Mungkin Anda seharusnya bertanya itu, kami biasanya lebih suka pertanyaan yang tidak mengandaikan solusi.
Matius Baca
@ MatthewRead Saya harus setuju dengan Markus di sini: 4 item dalam rangkumannya secara eksplisit menyatakan ia ingin membantu dengan masalah logging, dan saya juga tidak melihat "masalah XY" di sini (solusi yang ada sebelumnya). K9 jelas hanya contoh - tetapi mungkin judul pertanyaan harus disesuaikan untuk menggarisbawahi itu: "Menggunakan logcat untuk menentukan penyebab masalah" akan cocok (dan fokus) lebih baik;)
Izzy
@MarkBooth Yepp, tnx - lebih jelas sekarang. Juga tnx untuk jawaban terperinci! Harap beri kami informasi terbaru tentang kemajuan Anda.
Izzy
Haruskah saya menghapus jawaban saya, karena itu benar-benar di luar topik setelah pengeditan dan cenderung downvoted?
onik
Terserah kamu onik. Seperti yang saya katakan pada awalnya, saya sangat menghargai Anda meluangkan waktu untuk mengirim jawaban, tetapi sekarang setelah saya memperbarui pertanyaan, jawaban Anda terlihat semakin tidak pada tempatnya. Saya kira Anda selalu bisa menunggu dan melihat apakah mendapat suara di bawah -3 sehingga Anda dapat mengumpulkan lencana tekanan rekan Anda . * 8 ')
Mark Booth