[Java] 아쉽게도 MyApp가 중지되었습니다. 이 문제를 어떻게 해결할 수 있습니까?


Answers

Google의 ADB 도구 를 사용하여 Logcat file 로 문제를 분석 할 수 있습니다.

adb logcat > logcat.txt

logcat.txt 파일을 열고 응용 프로그램 이름을 검색하십시오. 실패한 이유, 회선 번호, 클래스 이름 등에 대한 정보가 있어야합니다.

Question

나는 응용 프로그램을 개발하고 있으며 매번 실행할 때마다 메시지가 나타납니다.

아쉽게도 MyApp가 중지되었습니다.

이 문제를 해결하려면 어떻게해야합니까?

이 질문에 대해 - 스택 추적이란 무엇인가에 영감을 받았으며 응용 프로그램 오류를 디버그하는 데 어떻게 사용할 수 있습니까? 더 자세한 내용없이 응용 프로그램이 손상되었다는 많은 질문이 있습니다. 이 질문은 초심자 안드로이드 프로그래머에게 스스로 문제를 시도하고 해결하는 방법을 가르치거나 올바른 질문을하는 것을 목표로합니다.




Force Close (응용 프로그램이 작동하지 않을 때)를 만날 때 기본 Logcat 분석을 공유하겠습니다.

의사

로그를 수집 / 분석하는 Android의 기본 도구는 logcat입니다.

HERE logcat에 대한 Android 페이지가 있습니다.

android Studio를 사용하는 경우이 LINK 확인할 수도 있습니다.

캡처 중

기본적으로 다음 명령을 사용하여 logcat을 수동으로 캡처 할 수 있습니다 (또는 AndroidStudio에서 AndroidMonitor 창 확인).

adb logcat

원하는 메시지를 필터링하고 표시하는 데 도움이되는 명령에 추가 할 수있는 많은 매개 변수가 있습니다. 개인용입니다 ... 나는 항상 아래 명령을 사용하여 메시지 시간 소인을 얻습니다.

adb logcat -v time

출력을 파일로 재지 정하고 텍스트 편집기에서 분석 할 수 있습니다.

분석하는

앱이 충돌하는 경우 다음과 같은 메시지가 표시됩니다.

07-09 08:29:13.474 21144-21144/com.example.khan.abc D/AndroidRuntime: Shutting down VM
07-09 08:29:13.475 21144-21144/com.example.khan.abc E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.khan.abc, PID: 21144
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.app.FragmentActivity.onBackPressed()' on a null object reference
     at com.example.khan.abc.AudioFragment$1.onClick(AudioFragment.java:125)
     at android.view.View.performClick(View.java:4848)
     at android.view.View$PerformClick.run(View.java:20262)
     at android.os.Handler.handleCallback(Handler.java:815)
     at android.os.Handler.dispatchMessage(Handler.java:104)
     at android.os.Looper.loop(Looper.java:194)
     at android.app.ActivityThread.main(ActivityThread.java:5631)
     at java.lang.reflect.Method.invoke(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:372)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
07-09 08:29:15.195 21144-21144/com.example.khan.abc I/Process: Sending signal. PID: 21144 SIG: 9

로그의이 부분은 많은 정보를 보여줍니다.

  • 문제가 발생했을 때 : 07-09 08:29:13.475

문제가 발생한시기를 확인하는 것이 중요합니다 ... 로그에서 여러 가지 오류를 발견 할 수 있습니다 ... 올바른 메시지를 확인하고 있는지 확인해야합니다. :)

  • 어떤 앱이 다운 com.example.khan.abc

이렇게하면 어떤 앱이 다운되었는지 알 수 있습니다 (메시지에 대한 로그를 확인하고 있는지 확인)

  • 어떤 오류 : java.lang.NullPointerException

NULL 포인터 예외 오류

  • 오류에 대한 자세한 정보 : Attempt to invoke virtual method 'void android.support.v4.app.FragmentActivity.onBackPressed()' on a null object reference .

FragmentActivity 개체에서 onBackPressed() 메서드를 호출하려고했습니다. 그러나, 당신이 그것을했을 때 그 객체는 null 이었다.

  • Stack Trace : Stack Trace는 메소드 호출 순서를 보여줍니다 ... 호출 된 메소드가 아닌 호출 된 메소드에서 오류가 발생하는 경우가 있습니다.

    at com.example.khan.abc.AudioFragment $ 1.onClick (AudioFragment.java:125)

com.example.khan.abc.AudioFragment.java 파일에서 onClick() 메서드의 125 줄에서 오류가 발생했습니다 (스택 트레이스는 오류가 발생한 행을 보여줍니다).

그것은에 의해 불렸다 :

at android.view.View.performClick(View.java:4848)

어느 것이 호출되었습니다 :

at android.view.View$PerformClick.run(View.java:20262)

그것은에 의해 불렸다 :

at android.os.Handler.handleCallback(Handler.java:815)

기타....

개요

이것은 단지 개요였습니다 ... 모든 로그가 단순하지는 않습니다 ... 아이디어를 공유하고 사용자에게 엔트리 레벨 정보를 제공하는 것입니다 ...

나는 너를 도울 수 있었으면 좋겠다. 어쩌면 ... 안부




LogCat을 사용하여 무엇이 앱을 중단시키는 지 찾으십시오.

Android Studio 를 사용하는 경우 Logcat을 보려면 Alt + 6 을 누르거나

Eclipse 를 사용하는 경우 Window -> Open Perspective -> Other - LogCat

LogCat으로 이동하여 드롭 다운 메뉴에서 오류를 선택하십시오. 여기에는 디버깅에 필요한 모든 필수 정보가 포함됩니다. 도움이되지 않는 경우 LogCat을 질문에 편집으로 게시하면 누군가 도움이됩니다.




다음 도구 중 하나를 사용할 수 있습니다.

  1. adb logcat

  2. adb logcat> logs.txt (편집자를 사용하여 오류를 열어 검색 할 수 있습니다.)

  3. eclipse logcat (이클립스에서 보이지 않는다면 Windows-> Show View-> Others-> Android-> LogCat)

  4. Android 디버그 모니터 또는 Android 디바이스 모니터 (유형 명령 모니터 또는 UI를 통해 열림)

  1. Android Studio

Android Debug Monitor 를 사용하는 것이 좋습니다. 좋습니다. 너무 많은 로그가있을 때 이클립스가 멈추고 adb logcat 필터를 통해 모든 것이 어렵 기 때문에.




이 팝업은 앱 실행을 중단시키는 코드에서 치명적인 예외가 발생하는 경우에만 표시됩니다. NullPointerException, OutOfMemoryException 등의 예외가 될 수 있습니다.

가장 좋은 방법은 스택 추적을 읽고 앱의 원인을 확인하는 빠른 방법 인 Android 스튜디오에서 앱을 개발하는 경우 Logcat을 사용하는 것입니다.

앱이 이미 실행 중이면 logcat을 사용할 수 없습니다. 그래서, 당신은 발생하는 모든 예외에 대한 버그 리포트를 제공하기 위해 Crashlytics를 구현할 수 있습니다.




로그 고양이에서 오류를 확인하십시오.

당신은 이클립스에서 로그 고양이 옵션을 얻을 :

window-> show view-> others-> Android-> Logcat

로그 고양이에 오류가 있습니다.

디버그 모드에서 응용 프로그램을 실행하여 오류를 확인할 수도 있습니다. 먼저 다음을 수행하여 중단 점을 설정하십시오.

프로젝트 -> 디버그 -> Android 애플리케이션을 마우스 오른쪽 버튼으로 클릭하십시오.




스택 추적이나 추가 오류 메시지없이이 오류 메시지를 독자적으로 가져올 수도 있습니다.

이 경우 Android 매니페스트가 올바르게 구성되었는지 (라이브러리에서 발생한 매니페스트 병합 및 라이브러리에서 가져온 모든 활동 포함) 매니페스트 파일에서 애플리케이션에 표시되는 첫 번째 활동에 특히주의해야합니다. .