Apakah android menyimpan log ketika dimulai?

19

Saya membuat aplikasi kontrol / akuntabilitas orang tua untuk android. Ini terdiri dari layanan pemantauan yang berjalan di latar belakang dan dimulai ketika ponsel di-boot.

Sayangnya, saya telah menemukan bahwa ketika android dimulai pada "Safe Mode", layanan tidak dimulai secara otomatis, dan karena ini aplikasi saya memiliki kelemahan serius.

Saat dalam mode aman, web dan aplikasi lain dapat dimulai tanpa layanan pemantauan saya berjalan.

Saya pikir jika tidak mungkin memantau aktivitas aplikasi saat dalam mode aman, mungkin saya setidaknya bisa mendeteksi aplikasi saya jika ponsel sebelumnya dalam mode aman. Maka mungkin bisa mengingatkan orang tua atau mitra akuntabilitas?

Apakah Android menyimpan log ini? Atau boot log apa saja secara umum? Saya sangat terbuka dengan saran dan alternatif.

jws121295
sumber
2
Saya sangat berharap bahwa tidak ada cara untuk melakukan ini.
RR
4
Saya pikir ini tidak boleh ditutup. Pengembang bukan satu-satunya yang bisa tertarik dengan ini.
RR
Saya setuju dengan @Richard. Ini bukan pertanyaan pengkodean, tetapi tentang cara kerja Android.
ale

Jawaban:

13

Saya pikir Anda telah menangkap diri Anda, singkatnya, tidak ada yang dapat Anda lakukan!

Lihat sumber ini yang menjelaskan alasannya, khususnya di bagian ini:

Partisi Sistem dan Mode Aman

Partisi sistem berisi kernel Android serta pustaka sistem operasi, runtime aplikasi, kerangka kerja aplikasi, dan aplikasi. Partisi ini diatur menjadi hanya-baca. Ketika pengguna mem-boot perangkat ke Safe Mode, hanya aplikasi inti Android yang tersedia. Ini memastikan bahwa pengguna dapat mem-boot telepon mereka ke lingkungan yang bebas dari perangkat lunak pihak ketiga.

Kata kunci bebas dari perangkat lunak pihak ketiga

Edit:

Saat Android melakukan booting, ia menyimpan cache dari logcat, dalam buffer sementara yang disediakan ditemukan di /dev/log. Buffer itu akan didaur ulang ketika mencapai ambang, jelas, semakin besar ambangnya, Android semakin lambat dengan spam yang terus-menerus masuk ke buffer logcat karenanya dijaga tetap minimum - iirc, sekitar 64K:

#define DEFAULT_LOG_ROTATE_SIZE_KBYTES 16
#define DEFAULT_MAX_ROTATED_LOGS 4

Sumber: system/core/logcat/logcat.cpp

Jangan bertanya berapa banyak baris yang dapat, untuk masing-masing dan setiap aplikasi, berbeda. Bukan itu saja, logcat menghilang saat reboot!

t0mm13b
sumber
2
Anda tidak benar-benar menjawab pertanyaan Anda hanya menyatakan kembali apa yang dia tahu, bahwa aplikasinya tidak dapat memonitor selama mode aman. Tambahkan sesuatu tentang log mode aman atau alternatif, lalu +1
Kacang
1
@Peanut, Android masih akan mencatat logcat, tetapi hanya layanan inti, tidak ada yang lain! Tidak ada alternatif untuk itu! Dan tidak ada cara bagi aplikasi pihak ketiga untuk mengenali bahwa ada mode aman diaktifkan karena, kali keluar dari mode aman yaitu reboot normal, aplikasi pihak ketiga "berpikir" tidak ada yang terjadi seperti dalam "tidak ada yang lihat di sini ... bergeraklah "
t0mm13b
1
Maaf saya mengedit komentar saya sebelum melihat komentar Anda, tetapi seperti yang saya katakan Anda tidak benar-benar menjawab pertanyaannya. Jadi alternatifnya adalah memeriksa apakah logcat berjalan ketika aplikasinya tidak? Jelas ini akan mengharuskan orang untuk memulainya tidak dalam safe mode di beberapa titik tetapi setidaknya itu solusi yang realistis.
Kacang
Konten logcat ... dialihkan ke /dev/nullsaat reboot seperti "bisnis seperti biasa" ... hanya mengatakan .. :) Dan terima kasih untuk downvote!
t0mm13b
Ah, saya tidak tahu itu ^^ Saya akan memilih karena Anda menawarkan jawaban untuk pertanyaannya di sini :) Saya pikir Anda harus menambahkan hal-hal tentang log ke jawaban Anda yang sebenarnya. sunting: Oh, saya tidak bisa benar-benar memperbaiki sampai Anda mengedit jawabannya: p
Peanut
6

Bukan jawaban terbaik tapi mungkin informasinya akan bermanfaat.

Satu-satunya metode yang saya ketahui yang berisi log yang dihasilkan oleh sistem setelah reboot adalah /proc/last_kmsg.

Apakah kernel menyimpan file log ini setelah reboot, tergantung pada pengaturan yang diberikan selama kompilasi kernel.

Pengalaman saya menunjukkan bahwa beberapa perangkat stok (HTC) mengaktifkan pencatatan ini dan yang lainnya tidak. Saya belum melihat pola yang konsisten.

joeyk
sumber
Terima kasih! Di mana Anda belajar tentang log ini? Apakah Anda punya saran tentang bagaimana saya bisa belajar lebih banyak tentang log ini? Apakah ada referensi di suatu tempat?
jws121295
Jika ada yang berkeliaran seperti saya, log sekarang di / sys / fs / pstore / console_ramoops. Ini bukan log lengkap seperti dmesg, tetapi pada dasarnya hanya memiliki informasi tentang kepanikan kernel terakhir dan apa yang menyebabkannya.
Evan Langlois
adb shell cp /sys/fs/pstore/console-ramoops /data/media/0/console-ramoops.`date "+%Y_%m_%d_%H_%M_%S"`.logbekerja dengan TWRP di OP3 dengan LineageOS berbasis Android 8
beppe9000