852

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

残念ながら、MyApp は停止しています。

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


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

4

22 に答える 22

127

問題を分析するには、Google の ADB ツールを使用できます。Logcat file

adb logcat > logcat.txt

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

于 2015-03-22T23:06:52.597 に答える
30

注:この回答は Android Studio 2.2.2 を使用しています

注 2: あなたのデバイスは正常に接続されていると考えています。


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

画像

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

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

画像

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

画像

Ok。次に、アプリをクラッシュさせるために行ったことを実行します。アプリがクラッシュしたら、logcat に移動します。たとえば、多くのat:x.x.x: を含む新しいクラッシュ ログが見つかるはずです。logcat のCaused by: TrumpIsPresidentExceptionそのステートメントに移動します。Caused by:

画像

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

画像

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

その青いリンクをクリックします。問題が発生した場所に移動する必要があります。私の場合、それは次の行が原因でした:

throw new RuntimeException();

これで、クラッシュする理由がわかりました。自分で例外をスローしているためです。これは明らかなエラーです。


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

java.lang.NullPointerException

logcat を確認し、表示された青いリンクをクリックすると、次の場所に移動しました。

mTextView.setText(myString);

だから、今私はデバッグしたい。この StackOverflow questionによると、NullPointerException は何かがnull.

それでは、 null とは何かを調べてみましょう。2 つの可能性があります。mTextViewnull であるか、nullmyStringです。調べるために、行の前に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.dDebug でチェックインします。そのため、デバッグに変更しました。

NoticeLog.dには、最初のパラメーター (この場合は "AppDebug") があります。logcat の右上にある [No Filters] ドロップダウン メニューをクリックします。[フィルター構成の編集] を選択し、フィルターに名前を付けて、[ログ タグ] に「App Debug」と入力します。「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である理由です。そのため、その行を追加してアプリを実行すると、アプリはクラッシュしなくなりました。


于 2016-11-06T09:23:57.257 に答える
18

Logcatメッセージを確認し、ファイルを参照してくださいManifestActivity,ユーザー権限の定義など、何かが欠けているはずです。

于 2015-06-29T11:48:47.430 に答える
15

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

  1. adb logcat

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

  3. Eclipse logcat (Eclipse で表示されない場合は、[Windows] -> [Show View] -> [Others] -> [Android] -> [LogCat] に移動します)

  4. Android デバッグ モニターまたは Android デバイス モニター (タイプ コマンドモニターまたは UI から開く)

ここに画像の説明を入力

  1. Android スタジオ

Android Debug Monitorを使用することをお勧めします。ログが多すぎるとEclipseがハングアップし、adb logcatフィルターとすべてが困難になるためです。

于 2015-11-03T05:47:45.907 に答える
13

を確認する必要がありますStack trace

どうやってするか?

IDE で Windows フォーム LOGCAT を確認します

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

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

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

adb logcat > logcat.txt

于 2015-07-13T08:37:51.973 に答える
12

以下の 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();
}
于 2017-04-03T09:37:25.587 に答える
9

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

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

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

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

于 2016-05-15T07:45:20.753 に答える
7

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

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

于 2015-03-22T08:50:58.587 に答える
1

次のようなものを提案します

1.お使いの携帯電話にアプリを実行できる十分なスペースがあるかどうかを確認してください----前/ 2.アプリがクラッシュしたときにlogcatを確認すると、クラッシュした正確な行が表示されますANRによる記憶喪失が起こっています。

于 2021-08-17T07:55:58.900 に答える