Android เก็บบันทึกเมื่อมันเริ่มต้นหรือไม่?


19

ฉันกำลังสร้างแอพควบคุม / ความรับผิดชอบต่อผู้ปกครองสำหรับ Android ประกอบด้วยบริการตรวจสอบสถานะที่ทำงานในพื้นหลังและเริ่มต้นเมื่อโทรศัพท์ถูกบูท

น่าเสียดายที่ฉันพบว่าเมื่อ Android เริ่มทำงานใน "Safe Mode" บริการจะไม่เริ่มทำงานโดยอัตโนมัติและด้วยเหตุนี้แอปของฉันจึงมีข้อบกพร่องร้ายแรง

ในขณะที่อยู่ในเซฟโหมดเว็บและแอพอื่น ๆ สามารถเริ่มทำงานได้โดยที่บริการการตรวจสอบของฉันไม่ทำงาน

ฉันคิดว่าถ้ามันเป็นไปไม่ได้ที่จะตรวจสอบกิจกรรมของแอพในขณะที่อยู่ในเซฟโหมดบางทีอย่างน้อยฉันก็สามารถตรวจสอบแอพของฉันได้ว่าโทรศัพท์เคยอยู่ในเซฟโหมดหรือไม่ ถ้าอย่างนั้นก็อาจจะเตือนผู้ปกครองหรือหุ้นส่วนที่รับผิดชอบ

Android เก็บบันทึกสิ่งนี้ไว้หรือไม่? หรือบันทึกการบูตทั่วไป ฉันเปิดกว้างสำหรับข้อเสนอแนะและทางเลือก


2
ฉันหวังเป็นอย่างยิ่งว่าจะไม่มีทางทำเช่นนี้
RR

4
ฉันคิดว่าสิ่งนี้ไม่ควรปิด นักพัฒนาไม่ใช่คนเดียวที่สนใจเรื่องนี้
RR

ฉันเห็นด้วยกับ @Richard นี่ไม่ใช่คำถามเข้ารหัสโดยเฉพาะ แต่เกี่ยวกับการทำงานของ Android
เบียร์

คำตอบ:


13

ฉันคิดว่าคุณได้ตามใจตัวเองไปแล้วไม่มีอะไรที่คุณทำได้

ดูที่แหล่งข้อมูลนี้ซึ่งอธิบายว่าทำไมโดยเฉพาะในส่วนนี้:

พาร์ติชันระบบและเซฟโหมด

พาร์ติชันระบบประกอบด้วยเคอร์เนลของ Android รวมถึงไลบรารีระบบปฏิบัติการรันไทม์ของแอปพลิเคชันเฟรมเวิร์กแอปพลิเคชันและแอปพลิเคชัน พาร์ติชันนี้ถูกตั้งค่าเป็นแบบอ่านอย่างเดียว เมื่อผู้ใช้บู๊ตอุปกรณ์ในเซฟโหมดจะมีเฉพาะแอปพลิเคชัน Android หลักเท่านั้น วิธีนี้ช่วยให้มั่นใจได้ว่าผู้ใช้สามารถบู๊ตโทรศัพท์ในสภาพแวดล้อมที่ไม่มีซอฟต์แวร์ของ บริษัท อื่น

คำหลักไม่มีซอฟต์แวร์ของบุคคลที่สาม

แก้ไข:

เมื่อรองเท้า Android ขึ้นจะช่วยให้แคชของในบัฟเฟอร์ชั่วคราวที่สงวนไว้พบในlogcat /dev/logบัฟเฟอร์นั้นจะถูกนำกลับมาใช้ใหม่เมื่อถึงขีด จำกัด เห็นได้ชัดว่ายิ่งมีขีด จำกัด มากขึ้นเท่าไหร่ Android ที่ช้าลงก็จะได้รับการส่งสแปมอย่างต่อเนื่องในบัฟเฟอร์ logcat ดังนั้นจึงอยู่ในระดับต่ำสุด - iirc รอบ 64K:

#define DEFAULT_LOG_ROTATE_SIZE_KBYTES 16
#define DEFAULT_MAX_ROTATED_LOGS 4

ที่มา: system/core/logcat/logcat.cpp

อย่าถามจำนวนบรรทัดที่สามารถแตกต่างกันได้สำหรับแต่ละแอปและทุกแอป ไม่เพียงแค่นั้น logcat จะหายไปเมื่อรีบูต!


2
คุณไม่ได้ตอบคำถามที่คุณเพิ่งปรับปรุงสิ่งที่เขารู้ว่าแอปของเขาไม่สามารถตรวจสอบในเซฟโหมด เพิ่มบางอย่างเกี่ยวกับบันทึกของเซฟโหมดหรือทางเลือกจากนั้น +1
Peanut

1
@Peanut, Android จะยังคงบันทึก logcat แต่เฉพาะบริการหลักไม่มีอะไรอื่น! ไม่มีทางเลือกอื่น! และไม่มีทางที่แอปของบุคคลที่สามจะรับรู้ได้ว่ามีการเปิดใช้งานเซฟโหมดเพราะในครั้งต่อไปที่ออกจากเซฟโหมดคือรีบูตตามปกติแอปของบุคคลที่สาม "คิดว่า" ไม่มีอะไรเกิดขึ้นเช่นเดียวกับ "ไม่มีอะไรให้ดูที่นี่ ... เลื่อนตาม "
t0mm13b

1
ขออภัยฉันแก้ไขความคิดเห็นของฉันก่อนที่จะเห็นความคิดเห็นของคุณ แต่ฉันบอกว่าคุณไม่ได้ตอบคำถามของเขา ดังนั้นทางเลือกอื่นคือการตรวจสอบว่า logcat ทำงานเมื่อแอพของเขาไม่ได้หรือไม่ เห็นได้ชัดว่าสิ่งนี้จะต้องมีบุคคลที่จะเริ่มต้นมันไม่ได้อยู่ในเซฟโหมดในบางจุด แต่อย่างน้อยมันก็เป็นทางออกที่สมจริง
ถั่วลิสง

เนื้อหาของ logcat ... ถูกล้างออกไป/dev/nullเมื่อรีบูตเหมือน "ธุรกิจตามปกติ" ... แค่บอกว่า .. :) และขอบคุณสำหรับ downvote!
t0mm13b

อ่าฉันไม่ทราบเลย ^^ ฉันจะโหวตเพราะคุณเสนอคำตอบให้กับคำถามของเขาที่นี่ :) ฉันคิดว่าคุณควรเพิ่มเนื้อหาเกี่ยวกับบันทึกลงในคำตอบที่แท้จริงของคุณ แก้ไข: โอ้ฉันไม่สามารถลงคะแนนได้จริงจนกว่าคุณจะแก้ไขคำตอบ: p
Peanut

6

ไม่ใช่คำตอบที่ดีที่สุด แต่ข้อมูลอาจมีประโยชน์

/proc/last_kmsgวิธีเดียวที่ฉันรู้ที่มีบันทึกที่ผลิตโดยระบบหลังจากที่มีการรีบูต

เคอร์เนลจะเก็บล็อกไฟล์นี้หลังจากรีบูตหรือไม่ขึ้นอยู่กับการตั้งค่าที่ระบุในระหว่างการรวบรวมเคอร์เนล

ประสบการณ์ของฉันแสดงให้เห็นว่าอุปกรณ์สต็อกบางส่วน (HTC) มีการเปิดใช้งานการบันทึกนี้และอุปกรณ์อื่นไม่ทำ ฉันไม่เห็นรูปแบบที่สอดคล้องกัน


ขอขอบคุณ! คุณเรียนรู้เกี่ยวกับบันทึกนี้ที่ไหน คุณมีข้อเสนอแนะใด ๆ เกี่ยวกับวิธีที่ฉันสามารถเรียนรู้เพิ่มเติมเกี่ยวกับบันทึกเหล่านี้ได้หรือไม่? มีการอ้างอิงที่ไหนสักแห่ง?
jws121295

ในกรณีที่ทุกคนเดินอย่างฉันบันทึกตอนนี้อยู่ใน / sys / fs / pstore / console_ramoops มันไม่ใช่บันทึกที่สมบูรณ์แบบเช่น dmesg แต่โดยทั่วไปมีเพียงข้อมูลเกี่ยวกับเคอร์เนลครั้งสุดท้ายและสิ่งที่นำไปสู่
Evan Langlois

adb shell cp /sys/fs/pstore/console-ramoops /data/media/0/console-ramoops.`date "+%Y_%m_%d_%H_%M_%S"`.logทำงานร่วมกับ TWRP บน OP3 กับ LineageOS ที่ใช้ Android 8
beppe9000
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.