क्या Android शुरू होने पर लॉग रखता है?


19

मैं Android के लिए एक अभिभावकीय नियंत्रण / जवाबदेही ऐप बना रहा हूं। इसमें एक मॉनिटरिंग सेवा शामिल होती है जो पृष्ठभूमि में चलती है और फोन के बूट होने पर शुरू होती है।

दुर्भाग्य से, मैंने पाया है कि जब एंड्रॉइड को "सेफ मोड" में शुरू किया जाता है, तो सेवाएं स्वचालित रूप से शुरू नहीं होती हैं, और इस वजह से मेरे ऐप में एक गंभीर दोष है।

सुरक्षित मोड में रहते हुए, वेब और अन्य एप्लिकेशन मेरी निगरानी सेवा के बिना शुरू किए जा सकते हैं।

मैंने सोचा कि यदि सुरक्षित मोड में रहते हुए ऐप गतिविधि की निगरानी करना संभव नहीं है, तो हो सकता है कि फोन कम से कम सुरक्षित मोड में हो, तो मैं कम से कम अपने ऐप का पता लगा सकता था। तब यह माता-पिता या जवाबदेही साथी को सचेत कर सकता है?

क्या Android इसका कोई लॉग रखता है? या कोई बूट लॉग सामान्य रूप से? मैं सुझाव और विकल्प के लिए बहुत खुला हूं।


2
मुझे बहुत उम्मीद है कि ऐसा करने का कोई तरीका नहीं है।
आरआर

4
मुझे लगता है कि इसे बंद नहीं किया जाना चाहिए। डेवलपर्स केवल वही नहीं हैं जो इसमें दिलचस्पी ले सकते हैं।
आरआर

मैं @ रिचर्ड से सहमत हूँ। यह विशेष रूप से एक कोडिंग प्रश्न नहीं है, लेकिन एंड्रॉइड कैसे काम करता है, इसके बारे में।
ऐले

जवाबों:


13

मुझे लगता है कि आपने अपने आप को बाहर पकड़ा है, संक्षेप में, आप कुछ भी नहीं कर सकते हैं!

इस स्रोत पर एक नज़र डालें जो बताता है कि क्यों, विशेष रूप से इस खंड में:

सिस्टम विभाजन और सुरक्षित मोड

सिस्टम विभाजन में एंड्रॉइड कर्नेल के साथ-साथ ऑपरेटिंग सिस्टम लाइब्रेरी, एप्लिकेशन रनटाइम, एप्लिकेशन फ्रेमवर्क और एप्लिकेशन शामिल हैं। यह विभाजन केवल पढ़ने के लिए सेट है। जब कोई उपयोगकर्ता डिवाइस को सेफ मोड में बूट करता है, तो केवल कोर एंड्रॉइड एप्लिकेशन उपलब्ध होते हैं। यह सुनिश्चित करता है कि उपयोगकर्ता अपने फोन को ऐसे वातावरण में बूट कर सकता है जो तृतीय-पक्ष सॉफ़्टवेयर से मुक्त है।

कीवर्ड तृतीय-पक्ष सॉफ़्टवेयर से मुक्त हैं

संपादित करें:

जब एंड्रॉइड बूट होता है, तो यह logcatएक अस्थायी बफर में रखता है , जो इसमें पाया जाता है /dev/log। उस बफर को रिसाइकिल किया जाता है जब वह दहलीज से टकराता है, जाहिर है, बड़ा थ्रेशोल्ड, धीमे एंड्रॉइड को लॉगकैट बफर में लगातार स्पैमिंग के साथ मिलता है इसलिए न्यूनतम - iirc के लिए रखा जाता है, इसके 64K के आसपास:

#define DEFAULT_LOG_ROTATE_SIZE_KBYTES 16
#define DEFAULT_MAX_ROTATED_LOGS 4

स्रोत: system/core/logcat/logcat.cpp

मत पूछो कि कितनी लाइनें हो सकती हैं, जैसा कि प्रत्येक और हर ऐप, इसके अलग-अलग। अकेले नहीं, रिबूट पर लॉगकैट गायब हो जाता है!


2
आपने वास्तव में उस प्रश्न का उत्तर नहीं दिया, जिसे आपने अभी-अभी निश्चिंत किया कि वह क्या जानता था, कि उसका ऐप सुरक्षित मोड के दौरान निगरानी नहीं कर सकता है। सुरक्षित मोड लॉग या विकल्प के बारे में कुछ जोड़ें और फिर +1
मूंगफली

1
@ मूंगफली, एंड्रॉइड अभी भी लॉगकैट करेगा, लेकिन केवल मूल सेवाएं, और कुछ नहीं! इसका कोई विकल्प नहीं है! और तीसरे पक्ष के ऐप्स के लिए यह पहचानने का कोई तरीका नहीं है कि एक सुरक्षित मोड सक्रिय था क्योंकि, अगली बार सुरक्षित मोड से बाहर आने यानी सामान्य रूप से रिबूट, तीसरे पक्ष के ऐप्स "सोचते हैं" ऐसा कुछ नहीं हुआ है जैसा कि "यहां देखने के लिए कुछ नहीं है ..." साथ
चलें

1
क्षमा करें, मैंने आपकी टिप्पणी देखने से पहले अपनी टिप्पणी संपादित की, लेकिन जैसा कि मैंने कहा कि आपने वास्तव में उनके प्रश्न का उत्तर नहीं दिया है। तो एक विकल्प यह जांचने के लिए होगा कि क्या लॉगकैट तब चल रहा था जब उसका ऐप नहीं था? जाहिर है कि इसके लिए व्यक्ति को किसी बिंदु पर इसे सुरक्षित मोड में शुरू करने की आवश्यकता नहीं होगी, लेकिन कम से कम यह एक यथार्थवादी समाधान है।
मूंगफली

Logcat सामग्री ... /dev/nullहमेशा की तरह "व्यापार" के रूप में रिबूट पर फ्लश की जाती है ... बस कह रही है .. :) और डाउनवोट के लिए धन्यवाद!
t0mm13b

आह, मुझे इस बात की जानकारी नहीं थी कि ^ ^ मैं वोट करूंगा क्योंकि आप यहां उनके प्रश्न का उत्तर देते हैं :) मुझे लगता है कि आपको अपने वास्तविक उत्तर में लॉग के बारे में सामान जोड़ना चाहिए। संपादित करें: ओह, जब तक आप जवाब को संपादित नहीं करते, तब तक मैं वास्तव में उत्थान नहीं कर सकता: p
मूंगफली

6

सबसे अच्छा उत्तर नहीं, लेकिन शायद जानकारी कुछ उपयोगी होगी।

एकमात्र विधि जिसके बारे में मुझे पता है उसमें एक रिबूट के बाद सिस्टम द्वारा निर्मित लॉग होता है /proc/last_kmsg

रिबूट के बाद कर्नेल इस लॉग फ़ाइल को रखता है या नहीं, यह कर्नेल संकलन के दौरान प्रदान की गई सेटिंग्स पर निर्भर करता है।

मेरे अनुभव से पता चला है कि कुछ स्टॉक डिवाइस (एचटीसी) में यह लॉगिंग सक्षम है और अन्य नहीं है। मैंने एक सुसंगत पैटर्न नहीं देखा है।


धन्यवाद! आपने इस लॉग के बारे में कहां से सीखा? क्या आपके पास कोई सुझाव है कि मैं इनमें से अधिक लॉग के बारे में कैसे जान सकता हूं? कहीं एक संदर्भ है?
jws121295

यदि मैंने जैसा किया वैसा भटकने की स्थिति में, लॉग अब / sys / fs / pstore / कंसोल_ramoops में है। यह dmesg की तरह एक पूर्ण लॉग नहीं है, लेकिन मूल रूप से बस अंतिम कर्नेल घबराहट के बारे में जानकारी है और इसके कारण क्या हुआ।
इवान लैंग्लोइस

adb shell cp /sys/fs/pstore/console-ramoops /data/media/0/console-ramoops.`date "+%Y_%m_%d_%H_%M_%S"`.logएंड्रॉइड 8-आधारित वंशावली के साथ OP3 पर TWRP के साथ काम करता है
beppe9000
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.