programing

안타깝게도 My App이 중지되었습니다.어떻게 하면 해결할 수 있을까요?

newsource 2022. 7. 31. 23:05

안타깝게도 My App이 중지되었습니다.어떻게 하면 해결할 수 있을까요?

응용 프로그램을 개발 중인데 실행할 때마다 다음과 같은 메시지가 나타납니다.

안타깝게도 My App이 중지되었습니다.

이 문제를 해결하려면 어떻게 해야 하나요?


스택 트레이스란 무엇인가에서 영감을 받아 어플리케이션 오류를 디버깅하기 위해 스택트레이스를 어떻게 사용할 수 있는가라는 질문에 대해서는 많은 질문이 있습니다.상세한 내용은 설명하지 않습니다.이 질문은 초보 Android 프로그래머에게 문제를 스스로 해결하거나 올바른 질문을 하는 방법을 가르치는 것을 목적으로 합니다.

이 답변에서는 스택트레이스를 취득하는 프로세스에 대해 설명합니다.스택 트레이스가 이미 있습니까?스택 트레이스에 대한 자세한 내용은 "스택트레이스란 무엇인가, 어플리케이션오류를 디버깅하기 위해 스택트레이스를 어떻게 사용할 수 있는가?"를 참조해 주세요.

문제

되지 않은 이 되었습니다.RuntimeException져졌졌다
이들 중 가장 일반적인 것은 입니다.

어떻게 해결할까요?

Android 그 어플리케이션이 크래시 할마다 Android는 "Java" (Java)를 합니다.Stack trace로그캣이 스택 트레이스에는 문제를 해결하기 위한 중요한 정보가 포함되어 있습니다.

Android Studio

Android Studio에서 스택 추적 찾기

에서 [ ]을 합니다.Logcat버튼을 클릭합니다.또는 + 6를 눌러도 됩니다.에뮬레이터 또는 디바이스가Devices패널. 다음으로 빨간색으로 표시된 스택 트레이스를 찾습니다. 수 logcat을 할 수 .스택 트레이스를 쉽게 찾을 수 있는 방법은 로그캣(오른쪽 휴지통 사용)을 지우고 앱을 다시 크래시하는 것입니다.

스택 트레이스를 찾았으니 이제 어쩌죠?

!이!
스택 트레이스를 분석하여 응용 프로그램의 정확한 크래시를 알아내기만 하면 됩니다.

스택 트레이스에 대한 자세한 내용은 "스택트레이스란 무엇인가, 어플리케이션오류를 디버깅하기 위해 스택트레이스를 어떻게 사용할 수 있는가?"를 참조해 주세요.

난 아직도 내 문제를 해결하지 못해!

Exception또한 발생한 행에서도 수정 방법을 찾을 수 없습니다.Stack Overflow stack stack 。

가능한 한 간결하게 해 주세요.스택 트레이스와 관련 코드(예를 들어, 를 던진 행까지 몇 줄)를 투고합니다.Exception를 참조해 주세요.

구글의 ADB 툴을 사용하여Logcat file문제를 분석합니다.

adb logcat > logcat.txt

logcat.txt파일화하여 어플리케이션명을 검색합니다.실패한 이유, 회선 번호, 클래스 이름 등에 대한 정보가 있어야 합니다.

충돌한 합니다(앱이 충돌한 지점).Unfortunately, MyApp has stopped.하면 Log.e("TAG", "Message");로그캣을 사용합니다.

그 후, 앱이 정지한 지점을 발견하면, 매우 간단하게 해결할 수 있습니다.

log cat 에러를 체크해 주세요.

log cat 옵션은 이클립스에서 얻을 수 있습니다.

window -> show view -> 기타 -> Android -> Logcat

로그캣에 오류가 있습니다.

또는 응용 프로그램을 디버깅모드로 실행하여 오류를 체크할 수도 있습니다.그 후 먼저 다음 작업을 수행하여 중단점을 설정합니다.

프로젝트 우클릭 -> 디버깅 as-> Android 어플리케이션

주의:이 답변은 Android Studio 2.2를 사용하는 것입니다.

주 2: 저는 당신의 장치가 성공적으로 연결되었다고 생각하고 있습니다.


응용 프로그램이 크래시되면 가장 먼저 LogCat을 살펴봅니다. Android Studio 하단에 메뉴 목록이 있는 툴바가 있습니다.

이미지

"Android Monitor"(위 이미지에서 밑줄 친 모니터)를 클릭합니다.^)

다음과 같은 결과를 얻을 수 있습니다.

이미지

경""" VerboseError이제 기록된 오류만 표시됩니다.이제 이 모든 오류에 대해 걱정하지 마십시오.

이미지

좋아요, 이제 앱을 크래쉬 할 때 했던 일을 하세요.앱이 크래시되면 로그캣으로 이동합니다.에는 많은 의 크래시 로그가 .at:x.x.x및 : ★Caused by: TrumpIsPresidentException저기!Caused by:명령어를 입력합니다.

이미지

옆에Caused By:발생한 예외가 있습니다. 경우에는 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★.RuntimeException그 아래에는 다음과 같은 파란색 링크가 포함된 줄이 있어야 합니다.

이미지

아래 어딘가에 파란색 텍스트가 있는 줄이 없는 경우 다른 줄을 찾습니다.Caused by:,,, 렇지지.

저 파란 링크를 클릭하세요.문제가 발생한 곳으로 이동합니다.제 경우, 그 이유는 다음과 같습니다.

throw new RuntimeException();

이제 왜 추락하는지 알겠네요내가 직접 예외를 던지고 있기 때문이다.이것은 명백한 오류였다.


그러나 다른 오류가 발생했다고 가정해 보겠습니다.

java.lang.NullPointerException

로그캣을 확인하고 표시되는 파란색 링크를 클릭하면 다음과 같이 표시됩니다.

mTextView.setText(myString);

이제 디버깅을 하겠습니다. StackOverflow 질문에 따르면 NullPointer는예외에 의하면null.

그럼 무엇이 null인지 알아보겠습니다.두 가지 가능성이 있습니다.어느 하나mTextView null입니다.myStringmanageda 입니다., 「 」mTextView.setText(mString) 줄, 줄, 줄, 줄, 줄, 줄, 줄, 줄, 줄, 줄, 줄, 줄, 줄, 줄, 줄, 줄, 줄, 줄, 줄, 줄, 줄, 줄, 줄, 줄

Log.d("AppDebug","mTextView is null: " + String.valueOf(mTextView == null);
Log.d("AppDebug","myString is null: " + String.valueOf(myString== null);

이전과 마찬가지로 (Verose를 Error로 변경) "Error"를 "Debug"로 변경합니다.디버깅으로 로깅을 하기 때문에로그 방법은 다음과 같습니다.

Log.
  d means Debug
  e means error
  w means warning
  v means verbose
  i means information
  wtf means "What a terrible failure". This is similar to Log.e

래서저......를 ...Log.d디버깅을 체크합니다.이치노

★★Log.d에는 첫 번째 파라미터가 있습니다.앱 디버깅하다로그캣 오른쪽 상단에 있는 "No Filters(필터 없음)" 드롭다운 메뉴를 클릭합니다."Edit Filter Configuration(편집 필터 설정)" "Log Tag(로그 태그)" "App Debug(앱 디버깅)"입니다.[확인] 을 클릭합니다.로그캣을 사용하다

yourPackageNameAndApp: mTextView is null: true
yourPackageNameAndApp: myString is null: false

이제 mTextView가 null임을 알 수 있습니다.

난 내 코드를 지키는데, 이제 뭔가 알아챘어.

있다private TextView mTextView우리 반에서 1등이라고 선언했어요.하지만 나는 그것을 정의하는 것이 아니다.

기본적으로 onCreate()에서 이 작업을 수행하는 것을 잊었습니다.

mTextView = (TextView) findViewById(R.id.textview_id_in_xml);

★★★★★★★★★★★★★★★★★★★★★★.mTextView앱에 정보를 알려주지 않았기 때문에 무효입니다.이 라인을 추가하고 앱을 실행하면 앱이 크래쉬하지 않습니다.


이 팝업은 앱 실행을 중지하는 치명적인 예외가 코드에서 발생한 경우에만 표시됩니다. 예외도 수 .NullPointerException,OutOfMemoryExceptionsyslog.

Android Studio에서 앱을 개발하고 있다면 Logcat을 통해 확인하는 것이 가장 좋습니다.이것은 스택 트레이스를 읽고 앱의 원인을 확인하는 빠른 방법입니다.

앱이 이미 라이브 상태이면 logcat을 사용할 수 없습니다.이를 위해 구현이 가능합니다.Crashlytics예외 발생 시 오류 보고서를 제공합니다.

해 주세요.Logcat your " " " " 를 참조하십시오.Manifest, , 파일, , 파일, 파일, 파일, 파일, 파일, 파일, 파일 등이 . 예를 들어 이 파일을 정의하는 것과 같은Activity,사용자 허가 등

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

  1. adb 로그캣

  2. adb logcat > logs.txt (에디터를 사용하여 오류를 열고 검색할 수 있습니다)

  3. exclipse logcat (이클립스로 표시되지 않는 경우 Windows로 이동 -> 보기 표시 -> 기타 -> Android -> LogCat)

  4. Android 디버그 모니터 또는 Android 장치 모니터(명령어 모니터를 입력하거나 UI를 통해 열기)

여기에 이미지 설명 입력

  1. Android Studio

Android Debug Monitor를 사용하는 것이 좋습니다.일식은 로그가 너무 많거나 adb logcat 필터를 통해 발생하며 모든 것이 어렵기 때문입니다.

.Stack trace

어떻게 하는 거야?

IDE에서 LOGCAT 형식의 창을 확인합니다.

로그캣 창이 표시되지 않으면 이 경로로 이동하여 엽니다.

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

Google-Api를 사용하는 경우 이 경로로 이동합니다.

adb logcat > logcat.txt

다음 showToast() 메서드에서는 콘텍스트 또는 응용 프로그램콘텍스트의 다른 파라미터를 전달해야 합니다.

  public void showToast(String error, Context applicationContext){
        LayoutInflater inflater = getLayoutInflater();
        View view = inflater.inflate(R.layout.custom_toast, (ViewGroup)      
        findViewById(R.id.toast_root));
        TextView text = (TextView) findViewById(R.id.toast_error);
        text.setText(error);
        Toast toast = new Toast(applicationContext);
        toast.setGravity(Gravity.TOP | Gravity.FILL_HORIZONTAL, 0, 0);
        toast.setDuration(Toast.LENGTH_SHORT);
        toast.setView(view);
        toast.show();
}

Force Close를 만났을 때(앱이 작동하지 않을 때)에 대한 기본적인 Logcat 분석을 공유합니다.

DOCS

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

여기 로그캣에 대한 Android의 페이지가 있습니다.

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

캡처

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

adb logcat

명령어에 추가할 수 있는 파라미터가 많아 원하는 메시지를 필터링하고 표시할 수 있습니다.이건 개인적인...항상 다음 명령을 사용하여 메시지 타임스탬프를 가져옵니다.

adb logcat -v time

출력을 파일로 리디렉션하고 텍스트 편집기에서 분석할 수 있습니다.

분석 중

앱이 크래시(Crashing)인 경우 다음과 같은 메시지가 나타납니다.

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

메서드를 .onBackPressed() FragmentActivity는 '오브젝트'였습니다.null★★★★★★★★★★★★★★★★★★

  • Stack Trace: Stack Trace에 메서드 호출 순서가 표시됩니다.경우에 따라서는, 콜 방식(착신 방식 이외)으로 에러가 발생하는 일이 있습니다.

    com.com.com.com.com.com.tAudio Fragment $ 1. on Click (Audio Fragment.java:125)

했습니다.com.example.khan.abc.AudioFragment.java , , , , , , 。onClick()method on line:125가 발생한 있습니다 (stacktrace는 에러가 발생한 행을 나타내고 있습니다.

호출자:

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으로 이동하여 드롭다운 메뉴에서 error를 선택합니다.여기에는 디버깅에 도움이 되는 모든 필수 정보가 포함됩니다.그래도 문제가 해결되지 않으면 LogCat을 질문 편집으로 게시하면 누군가가 도움을 줄 것입니다.

어떤 이유로든 정상적인 스택 트레이스 없이 앱이 크래쉬하는 경우.첫 번째 줄부터 디버깅을 시도하고 충돌할 때까지 한 줄씩 진행합니다.그러면 어느 선에서 문제가 발생하고 있는지 알 수 있습니다.그런 다음 이를 try catch block으로 래핑하여 오류 출력을 출력할 수 있습니다.

스택 트레이스나 그 이후의 에러 메시지 없이, 이 에러 메시지 자체를 표시할 수도 있습니다.

이 경우 Android 매니페스트가 올바르게 설정되어 있는지 확인하고(라이브러리에서 발생하는 매니페스트와 라이브러리에서 발생하는 모든 액티비티를 포함), 매니페스트 파일의 응용 프로그램에 표시되는 첫 번째 액티비티에 특히 주의를 기울여야 합니다.

사람들은 실수를 하고, 코드도 마찬가지죠.

때라도error항상 logcat에서 빨간색 텍스트로 확인하세요. 단, 파란색 텍스트에서 빨간색 텍스트에 밑줄이 있는 진짜 문제를 찾을 수 있습니다.

.activity합니다.activity AndroidManifestfilename을 클릭합니다.

[ Permission ]를할 경우 [Permission]에서합니다.AndroidMainifest파일링도 합니다.

Logcat - Android Studio 개발 단계에서 로그를 확인합니다.

처음에 Logcat을 클리어하고 크래시된 로그 상세 정보만 얻을 수 있도록 앱을 크래시합니다.스택 트레이스를 확인해야 합니다.

안타깝게도 MyApp은 중지되었습니다.여러 가지 이유가 있어.로그에서도 같은 것을 확인할 수 있습니다.이를 위해 Log.e("TAG", "Message")를 사용할 수 있습니다.

앱 충돌 시 다음과 같은 일반적인 오류:

  1. 코딩 실수(키워드의 잘못된 사용).
  2. 속성 이름이 일치하지 않습니다.
  3. 지원되지 않는 플러그인입니다.
  4. 버전이 일치하지 않습니다.
  5. AndroidManifest 파일에 작업이 없습니다.
  6. AndroidManifest 파일에 권한이 없습니다.
  7. 가장 일반적인 Null Pointer예외.
  8. 선언되었지만 정의되지 않았습니다.

앱 충돌 오류를 해결하려면:

  • 위 사항을 염두에 두고 검토하세요.
  • 에러가 발생하면, 파일명도 파란색으로 표시됩니다(클릭 후 에러에서 코드로 이동합니다).

개발 중 크래시

개발 중에 로그를 가져와 분석하려면 내가 가장 좋아하는 도구 로그뷰를 사용해 보십시오.
마크를 ../logview ★★★★★★★★★★★★★★★★★」./lib/logview.jar실행할 수 있습니다.

마음에 들지 않으면 Android용 대체 데스크톱 로그 뷰어가 많이 있습니다.

야생에서의 크래시

Firebase Crashlytics 등의 실시간 크래시 리포트 툴을 통합하여 사용자의 디바이스에서 발생한 처리되지 않은 예외의 스택 트레이스를 가져옵니다.

현장에서 버그를 처리하는 방법에 대한 자세한 내용은 Buggy 앱을 출시하는 방법( 라이브 투 더 텔)을 참조하십시오.

.(Unfortunately, MyApp has stopped.).★★★★★★★★의 도움을 받아LOG뭐가 잘못됐는지 알아낼 수 있어요

그런 다음 앱이 이를 수정하는 작업을 중지한 지점을 찾습니다.

터미널에 흥미로운 로그가 없는 경우(또는 앱과 직접 관련이 없는 경우) 문제는 네이티브 라이브러리 때문일 수 있습니다.이 경우 터미널 내의 "tombstone" 파일을 확인해야 합니다.

각 이 과 같이 Tombstone written to: /data/tombstones/tombstone_06

자세한 것은, https://source.android.com/devices/tech/debug 를 참조해 주세요.

또, 이 커맨드를 단말기로 실행해도, 문제의 특정에 도움이 됩니다.

gradlew build > log.txt 2>details.txt

그러면 위의 로그 파일 2개를 읽고 gradlew 파일 위치로 이동해야 합니다.

이런 걸 제안할게요.

  1. 휴대폰에 앱이 실행 가능한 충분한 공간이 있는지 확인합니다.---사전/

  2. 앱이 충돌할 때 로그캣을 확인합니다.앱이 충돌한 정확한 선이 표시됩니다.

  3. 메인 스레드에서 ANR로 인해 메모리를 많이 사용하는 것을 사용하고 있는지 확인합니다.

앱이 오류 없이 충돌하고 자산 관리자를 사용하지 않고 다음과 같은 텍스처를 로드한 경우:

Texture texture = new Texture("myImage.png"); //dont to this all the time

그게 문제예요나한테도 그런 일이 있었어메모리 과부하를 방지하려면 항상 자산 관리자를 사용해야 합니다.

언급URL : https://stackoverflow.com/questions/23353173/unfortunately-myapp-has-stopped-how-can-i-solve-this