안드로이드가 시작될 때의 로그를 유지합니까?


19

Android 용 자녀 보호 / 책임 앱을 만들고 있습니다. 백그라운드에서 실행되고 전화가 부팅 될 때 시작되는 모니터링 서비스로 구성됩니다.

불행히도, 안드로이드가 "안전 모드"에서 시작될 때 서비스가 자동으로 시작되지 않으며, 이로 인해 내 앱에 심각한 결함이 있음을 발견했습니다.

안전 모드에서 모니터링 서비스를 실행하지 않고도 웹 및 기타 앱을 시작할 수 있습니다.

안전 모드에서 앱 활동을 모니터링 할 수 없다면 휴대 전화가 이전에 안전 모드에 있는지 여부를 앱에서 감지하도록 할 수 있다고 생각했습니다. 그러면 부모 또는 책임 파트너에게 경고 할 수 있습니까?

안드로이드는 이것에 대한 로그를 유지합니까? 아니면 일반적인 부팅 로그? 나는 제안과 대안에 매우 개방적이다.


2
나는 이것을 할 수있는 방법이 없기를 바라고 있습니다.
RR

4
나는 이것이 닫혀서는 안된다고 생각합니다. 이것에 관심을 가질 수있는 것은 개발자 만이 아닙니다.
RR

@Richard에 동의합니다. 이것은 특별히 코딩 문제가 아니라 Android의 작동 방식에 관한 것입니다.
ale

답변:


13

한마디로 당신이 자신을 사로 잡았다 고 생각합니다.

이 섹션에서 이유를 설명하는 이 소스 를 살펴보십시오 .

시스템 파티션 및 안전 모드

시스템 파티션에는 운영 체제 라이브러리, 응용 프로그램 런타임, 응용 프로그램 프레임 워크 및 응용 프로그램뿐만 아니라 Android 커널도 포함됩니다. 이 파티션은 읽기 전용으로 설정되어 있습니다. 사용자가 기기를 안전 모드로 부팅하면 핵심 Android 애플리케이션 만 사용할 수 있습니다. 이를 통해 사용자는 타사 소프트웨어가없는 환경에서 휴대폰을 부팅 할 수 있습니다.

키워드에는 타사 소프트웨어가 없습니다

편집하다:

Android가 부팅되면 logcat에있는 임시 버퍼에 캐시를 보관합니다 /dev/log. 해당 버퍼가 임계 값에 도달하면 재활용됩니다. 임계 값이 클수록 Android는 logcat 버퍼에 대한 지속적인 스팸 처리 속도가 느려지므로 최소 64K 인 iirc로 유지됩니다.

#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"정상적인 비즈니스"처럼 재부팅 할 때 플러시됩니다 .
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"`.logAndroid 8 기반 LineageOS를 사용하여 OP3에서 TWRP와 함께 작동
beppe9000
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.