残念ながら、MyAppは停止しました。どうすればこれを解決できますか?

Apr 29 2014

アプリケーションを開発していますが、実行するたびに次のメッセージが表示されます。

残念ながら、MyAppは停止しました。

これを解決するにはどうすればよいですか?


この質問について-明らかにスタックトレースとは何ですか、そしてそれを使用してアプリケーションエラーをデバッグするにはどうすればよいですか?、アプリケーションがクラッシュしたことを示す質問がたくさんありますが、それ以上の詳細はありません。この質問は、初心者のAndroidプログラマーに、自分で問題を解決する方法、または適切な質問をする方法を教えることを目的としています。

回答

734 nhaarman Apr 29 2014 at 06:55

この回答は、スタックトレースを取得するプロセスについて説明しています。すでにスタックトレースがありますか?「スタックトレースとは何ですか。アプリケーションエラーをデバッグするためにどのように使用できますか?」のスタックトレースを読んでください

問題

キャッチRuntimeExceptionされなかったものがスローされたため、アプリケーションは終了しました。
これらの中で最も一般的なのはNullPointerExceptionです。

それを解決する方法は?

Androidアプリケーション(またはJavaアプリケーション)がクラッシュするたびStack traceに、コンソール(この場合はlogcat)にaが書き込まれます。このスタックトレースには、問題を解決するための重要な情報が含まれています。

Android Studio

ウィンドウの下部のバーで、Logcatボタンをクリックします。または、alt+を押すこともできます6Devicesパネルでエミュレータまたはデバイスが選択されていることを確認してください。次に、赤で示されているスタックトレースを見つけてみてください。logcatにログインしているものがたくさんある可能性があるため、少しスクロールする必要があるかもしれません。スタックトレースを見つける簡単な方法は、logcatをクリアして(右側のごみ箱を使用)、アプリを再度クラッシュさせることです。

スタックトレースを見つけましたが、今は何ですか?

わーい!あなたはあなたの問題を解決する途中です。
スタックトレースを分析することで、アプリケーションがクラッシュした原因を正確に特定するだけで済みます。

「スタックトレースとは何ですか。アプリケーションエラーをデバッグするためにどのように使用できますか?」のスタックトレースを読んでください

私はまだ私の問題を解決することはできません!

自分Exceptionとそれが発生した行を見つけても、それを修正する方法がわからない場合は、StackOverflowで遠慮なく質問してください。

できるだけ簡潔にするようにしてください。スタックトレースと関連するコードを投稿します(たとえば、をスローした行までの数行Exception)。

121 VladBezden Mar 23 2015 at 06:06

GoogleのADBツールを使用Logcat fileして、問題を分析することができます。

adb logcat > logcat.txt

logcat.txtファイルを開き、アプリケーション名を検索します。失敗した理由、行番号、クラス名などに関する情報が必要です。

38 HirenVaghela Mar 18 2015 at 15:01

まず、アプリがクラッシュしたポイントを確認します(Unfortunately, MyApp has stopped.)。これには、を使用できますLog.e("TAG", "Message");。この行を使用すると、logcatでアプリのログを確認できます。

その後、アプリが停止したポイントを見つけるのは、あなたの側で非常に簡単に解決できます。

29 RahilAli Jun 11 2015 at 17:58

logcatのエラーを確認してください。

Eclipseからlogcatオプションを取得します。

ウィンドウ->ビューを表示->その他-> Android-> Logcat

ログ猫にエラーが含まれています。

それ以外の場合は、デバッグモードでアプリケーションを実行してエラーを確認することもできます。その後、最初に次のようにしてブレークポイントを設定します。

プロジェクトを右クリック->デバッグとして-> Androidアプリケーション

28 AliBdeir Nov 06 2016 at 16:23

注:この回答はAndroid Studio2.2.2を使用しています

注2: デバイスが正常に接続されていると考えています。


アプリケーションがクラッシュしたときに最初に行うことは、LogCatを調べることです。AndroidStudioの下部には、メニューのリストを含むツールバーがあります。

「Androidモニター」(上の画像で下線を引いたもの。^)をクリックします。

これで、次のようなものが得られます。

Verbose」を「Error」に変更します。これで、ログに記録されたエラーのみが表示されます。これらすべてのエラーについて心配する必要はありません(エラーが発生した場合)。

OK。次に、アプリをクラッシュさせるために行ったことを実行します。アプリがクラッシュしたら、logcatに移動します。at:x.x.x:などCaused by: TrumpIsPresidentExceptionがたくさんある新しいクラッシュログを見つける必要があります。Caused by:logcatのそのステートメントに移動します。

次のことCaused By:、起こった例外があるはずです。私の場合、それはaでRuntimeExceptionあり、その下に次のような青いリンクを含む行があるはずです。

そのCaused by:下のどこかに青いテキストのある行がない場合は、ある別の行を探してくださいCaused by:

その青いリンクをクリックします。問題が発生した場所に移動するはずです。私の場合、それはこの行によるものでした:

throw new RuntimeException();

だから、なぜそれがクラッシュするのかがわかりました。自分で例外を投げているからです。これは明らかなエラーでした。


ただし、別のエラーが発生したとしましょう。

java.lang.NullPointerException

私は自分のlogcatをチェックし、それが私に与えた青いリンクをクリックしました、そしてそれは私をここに連れて行きました:

mTextView.setText(myString);

だから、今私はデバッグしたいと思います。このStackOverflowの質問によると、NullPointerExceptionは何かがであると言いnullます。

それでは、nullとは何かを調べてみましょう。2つの可能性があります。mTextViewnull、またはnullのいずれかですmyString。調べるために、mTextView.setText(mString)行の前に、次の2行を追加します。

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メソッドは次のとおりです。

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デバッグでチェックインしています。そのため、デバッグに変更しました。

NoticeLog.dには最初のパラメータがあります。この場合は「AppDebug」です。logcatの右上にある[フィルターなし]ドロップダウンメニューをクリックします。[フィルター構成の編集]を選択し、フィルターに名前を付け、[ログタグ]に[アプリのデバッグ]を入力します。「OK」をクリックします。これで、logcatに次の2行が表示されます。

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

これで、mTextViewがnullであることがわかりました。

私は自分のコードを観察しましたが、今何かに気づきました。

私はprivate TextView mTextViewクラスのトップで宣言しました。しかし、私はそれを定義していません。

基本的に、onCreate()でこれを行うのを忘れました:

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

それでは、だからこそmTextView、私はそれが何であるかを私のアプリを伝えるのを忘れているので、nullです。その行を追加してアプリを実行すると、アプリがクラッシュしなくなります。


20 Ani Jul 04 2017 at 11:38

このポップアップは、アプリの実行を停止する致命的な例外がコードで発生した場合にのみ表示されます。これは、任意の例外可能性がありNullPointerExceptionOutOfMemoryExceptionなど

スタックトレースを読み取ってアプリの原因を確認する簡単な方法であるAndroidStudioでアプリを開発している場合は、Logcatを使用して確認するのが最善の方法です。

アプリがすでに公開されている場合は、logcatを使用できません。したがって、そのためにCrashlytics、発生した例外のバグレポートを提供するように実装できます。

18 Manojahirwar Jun 29 2015 at 18:48

ご確認Logcatのメッセージを、あなたの参照Manifestファイルを。Activity,ユーザー権限の定義など、何か足りないものがあるはずです。

15 ShivBuyya Nov 03 2015 at 12:47

次のツールのいずれかを使用できます。

  1. adb logcat

  2. adb logcat> logs.txt(エディターを使用してエラーを開いて検索できます。)

  3. eclipse logcat(eclipseに表示されない場合は、[Windows]-> [ビューの表示]-> [その他]-> [Android]-> [LogCat]に移動します)

  4. AndroidデバッグモニターまたはAndroidデバイスモニター(コマンドモニターを入力するか、UIから開きます)

  1. Android Studio

Android DebugMonitorの使用をお勧めします。それは良いことです。ログが多すぎるとEclipseがハングし、adblogcatフィルターを介してすべてが困難になるためです。

13 alirezaamini Jul 13 2015 at 15:37

あなたはチェックする必要があります Stack trace

どうやってするか?

IDEでLOGCATからウィンドウを確認します

logcatウィンドウが表示されない場合は、このパスに移動して開きます

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

Google-Apiを使用している場合は、このパスに移動します

adb logcat> logcat.txt

12 MayankNema Apr 03 2017 at 16:37

以下の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();
}
11 W0rmH0le Jul 14 2016 at 10:21

強制終了に遭遇したとき(アプリが機能しなくなったとき)の基本的なLogcat分析を共有しましょう。

ドキュメント

ログを収集/分析するためのAndroidの基本的なツールはlogcatです。

logcatに関するAndroidのページはこちらです

android Studioを使用している場合は、このリンクも確認できます。

キャプチャ

基本的に、次のコマンドを使用して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

オブジェクトonBackPressed()からメソッドを呼び出そうとしましたFragmentActivity。しかし、そのオブジェクトはnullあなたがそれをしたときでした。

  • スタックトレース:スタックトレースは、メソッドの呼び出し順序を示します...時々、エラーは呼び出し元のメソッドで発生します(呼び出されたメソッドでは発生しません)。

    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)

等....

概要概要

これは単なる概要でした...すべてのログが単純なわけではありませんが、エラーによって特定の問題が発生し、詳細にすべての問題が表示されます...アイデアを共有し、エントリレベルの情報を提供するだけです...

どうにかしてお役に立てれば幸いです...よろしく

9 BiswajitKarmakar May 15 2016 at 14:45

LogCatを使用して、アプリがクラッシュする原因を見つけてください。

Android Studioを使用している場合にLogcatを表示するには、ALT +6 または

Eclipseを使用している場合は、 ウィンドウ->パースペクティブを開く->その他-LogCat

LogCatに移動し、ドロップダウンメニューからエラーを選択します。これには、デバッグに役立つすべての必要な情報が含まれます。それでも問題が解決しない場合は、質問の編集としてLogCatを投稿すると、誰かが助けてくれます。

8 felislynx.silae Oct 02 2017 at 22:07

何らかの理由でアプリが適切なスタックトレースなしでクラッシュした場合。最初の行からデバッグしてみて、クラッシュするまで1行ずつ実行してください。それからあなたは答えを得るでしょう、どの行があなたに問題を引き起こしているのか。おそらく、それをtry catchブロックにラップして、エラー出力を出力することができます。

6 Pelpotronic Mar 22 2015 at 15:50

このエラーメッセージは、スタックトレースやその他のエラーメッセージなしで、単独で取得することもできます。

この場合、Androidマニフェストが正しく構成されていることを確認する必要があり(ライブラリから発生するマニフェストのマージとライブラリから発生するアクティビティを含む)、マニフェストファイルのアプリケーションに表示される最初のアクティビティに特に注意を払う必要があります。

6 naXa Sep 11 2018 at 15:35

開発中のクラッシュ

私のお気に入りのツールlogviewを試して、ログを取得し、開発中に分析してください。Linuxで実行する場合は、
必ず実行可能としてマーク./logview./lib/logview.jarてください。

気に入らない場合は、Android用の代替デスクトップログビューアがたくさんあります。

野生でのクラッシュ

ユーザーのデバイスで発生した未処理の例外のスタックトレースを取得するために、FirebaseCrashlyticsなどのリアルタイムのクラッシュレポートツールを統合します。

現場でのバグの処理について詳しくは、バギーアプリをリリースする方法(およびライブで物語を伝える方法)をお読みください。

5 KopiBryant May 20 2018 at 00:24

人々は間違いを犯すので、コーディングも同様です。

何かerrorが起こったときは、常に赤い色のテキストでlogcatに確認してください。ただし、赤い色のテキストに下線が付い青い色のテキストの実際の問題を見つけることができます。

uが新しいを作成する場合はactivity、常にファイルでを宣言activityしてくださいAndroidManifest

権限を追加する場合は、AndroidMainifestファイルでも宣言します。

5 Ashish Mar 26 2019 at 11:42

Logcat - AndroidStudioの開発フェーズでログを確認します

最初にLogcatをクリアし、アプリを再度クラッシュさせて、クラッシュしたログの詳細のみを取得できるようにします。スタックトレースを確認する必要があります

残念ながら、MyAppは停止しました。それには多くの理由があります。あなたはログで同じことをチェックすることができます。これには、Log.e( "TAG"、 "Message");を使用できます。

次のようなアプリのクラッシュ時の一般的なエラー:

  1. コーディングミス(キーワードの使い方の間違い)。
  2. プロパティ名が一致しません。
  3. サポートされていないプラグイン(多分)。
  4. 不一致バージョン(多分)。
  5. AndroidManifestファイルにアクティビティがありません。
  6. AndroidManifestファイルに権限がありません。
  7. 最も一般的なNullPointerException。
  8. 宣言されていますが、定義されていません。

アプリのクラッシュエラーを解決するには:

  • 上記の点に留意し、それを通過してください。
  • エラーがあると、ファイル名も青色で表示されます(それらをクリックして、エラーが発生しているコードにジャンプします)。
4 MehulSolanki May 22 2019 at 17:40

まず、アプリがクラッシュした場所と理由を確認する必要があります。(Unfortunately, MyApp has stopped.).の助けを借りてLOG、何が悪かったのかを把握できます。

その後、アプリが停止したポイントを見つけて、そのポイントから修正します。

4 zapotec Jun 12 2019 at 20:07

ターミナルに興味深いログがない場合(またはアプリに直接関連していない場合)、問題はネイティブライブラリが原因である可能性があります。その場合は、ターミナル内の「トゥームストーン」ファイルを確認する必要があります。

トゥームストーンファイルのデフォルトの場所はすべてのデバイスによって異なりますが、その場合は、次のようなログが表示されます。 Tombstone written to: /data/tombstones/tombstone_06

詳細については、https://source.android.com/devices/tech/debugを確認してください

2 MohsenEmami Mar 16 2020 at 17:18

また、ターミナルでこのコマンドを実行すると、問題を見つけるのに役立ちます。

gradlew build > log.txt 2>details.txt

次に、上記の2つのログファイルを読み取ってgradlewファイルの場所に移動する必要があります。