Leider hat MyApp aufgehört. Wie kann ich das lösen?

786

Ich entwickle eine Anwendung und jedes Mal, wenn ich sie ausführe, erhalte ich die folgende Meldung:

Leider hat MyApp aufgehört.

Was kann ich tun, um das zu lösen?


Zu dieser Frage - offensichtlich inspiriert von Was ist ein Stack-Trace und wie kann ich damit meine Anwendungsfehler debuggen? Es gibt viele Fragen, die besagen, dass ihre Anwendung ohne weitere Details abgestürzt ist. Diese Frage zielt darauf ab, unerfahrene Android-Programmierer darin zu unterweisen, wie sie versuchen können, ihre Probleme selbst zu beheben oder die richtigen Fragen zu stellen.

Nhaarman
quelle
22
Ich habe viele Fragen gesehen, die damit als Betrüger geschlossen wurden. Dies ist eine gute Referenz, um Personen dabei zu helfen, relevante Daten in ihren Fragen zu veröffentlichen. Dies ist jedoch kein Duplikat eines Root-Problems, sondern nur eine Methode zum Ausgraben des Root-Problems. Ich denke, es wäre besser, nur den Link zu dieser Frage als Referenz anzugeben und nicht als Duplikat zu schließen.
Laalto
33
Ich denke, die Schließfunktion ist dafür perfekt. Die meisten dieser Fragen zeigen wenig Wissen über die grundlegenden Debugging-Fähigkeiten. Wenn Sie sie in die Warteschleife stellen, können sie ihr Problem mithilfe der in der Antwort angegebenen Methode klären. Besser noch, sie könnten das Problem möglicherweise selbst lösen. Diese Diskussion ist jedoch möglicherweise besser für meta.stackoverflow.com geeignet.
Nhaarman
Diese Frage ist zu vage. Eine bessere Frage wäre, mit [myIDE] eine Android-Anwendung zu debuggen, die den Fehler "Leider hat MyApp gestoppt" anzeigt
Chris Halcrow,
7
@ChrisHalcrow In dieser Frage / Antwort geht es überhaupt nicht um das Debuggen. Es geht darum, Anfängern in Android den Umgang mit App-Abstürzen beizubringen.
Nhaarman
stackoverflow.com/questions/26609734/… .. aktivieren Sie den Multidex-Becoz-Fehler bei der Konvertierung in apk
RejoylinLokeshwaran

Antworten:

718

Diese Antwort beschreibt den Vorgang des Abrufens der Stapelverfolgung. Haben Sie bereits die Stapelverfolgung? Informationen zu Stack-Traces finden Sie unter " Was ist ein Stack-Trace und wie kann ich damit meine Anwendungsfehler debuggen? "

Das Problem

Ihre Bewerbung wurde beendet, weil ein Ungefangener RuntimeExceptiongeworfen wurde.
Die häufigste davon ist die NullPointerException.

Wie man es löst?

Jedes Mal, wenn eine Android-Anwendung abstürzt (oder eine Java-Anwendung), Stack tracewird a in die Konsole geschrieben (in diesem Fall logcat). Diese Stapelverfolgung enthält wichtige Informationen zur Lösung Ihres Problems.

Android Studio

Suchen des Stack-Trace in Android Studio

Klicken Sie in der unteren Leiste des Fensters auf die LogcatSchaltfläche. Alternativ können Sie alt+ drücken 6. Stellen Sie sicher, dass Ihr Emulator oder Gerät im DevicesBedienfeld ausgewählt ist. Versuchen Sie als Nächstes, die Stapelverfolgung zu finden, die rot angezeigt wird. Möglicherweise sind viele Dinge in logcat angemeldet, daher müssen Sie möglicherweise ein wenig scrollen. Eine einfache Möglichkeit, den Stack-Trace zu finden, besteht darin, den Logcat zu löschen (mithilfe des Papierkorbs auf der rechten Seite) und die App erneut abstürzen zu lassen.

Ich habe die Stapelverfolgung gefunden, was nun?

Yay! Sie sind auf halbem Weg zur Lösung Ihres Problems.
Sie müssen nur herausfinden, was genau Ihre Anwendung zum Absturz gebracht hat, indem Sie den Stack-Trace analysieren.

Informationen zu Stack-Traces finden Sie unter " Was ist ein Stack-Trace und wie kann ich damit meine Anwendungsfehler debuggen? "

Ich kann mein Problem immer noch nicht lösen!

Wenn Sie Ihre Exceptionund die Zeile gefunden haben, in der sie aufgetreten ist, und immer noch nicht herausfinden können, wie sie behoben werden können, zögern Sie nicht, eine Frage zu StackOverflow zu stellen.

Versuchen Sie, so präzise wie möglich zu sein: Veröffentlichen Sie den Stack-Trace und den entsprechenden Code (z. B. ein paar Zeilen bis zu der Zeile, die den geworfen hat Exception).

nhaarman
quelle
33
Ich weiß , dass dieser Beitrag ist alt: aber wenn Sie IntelliJ IDEA verwenden , können Sie gehen hinein Android > Devices|Logcatund einen neuen Filter (add i.imgur.com/145dtkx.png ), und es Filter für by Log Messagehier können Sie setzen FATAL EXCEPTION( i.imgur.com/HpELhaU .png ) so können Sie in dieser Box alle lesen, Exceptionsdie von Ihrer Anwendung geworfen werden. Damit müssen Sie logcat nicht löschen und den Absturz erneut ausführen. Ich denke, Android Studio hat diese Option auch.
Marco Acierno
1
Das Filtern von logcat in Eclipse kann durch Eingabe des Java-Paketnamens in das Feld Anwendungsname des Filters erfolgen.
Stephane
Ich denke, der Hauptpunkt ist das Verständnis der Rückverfolgung, die man erhält, wenn die Ausnahme auftritt. FCs sind ein bisschen schlecht, wenn es keine Spur gibt oder keine brauchbare, wo es haarig wird. Aber ich denke, diese Erklärung ist eine nette erste Einführung in das Finden / Identifizieren solcher Fehler.
DooMMasteR
4
Die Dinge sind einfach, wenn Ihr Logcat eine Spur von Fehlern aufweist, aber was ist, wenn Logcat nichts hat? stackoverflow.com/questions/32455645/…
Marian Paździoch
4
Das Problem ist, dass die Zeile nicht den Fehler enthält, der vom Stack-Trace geschrieben und angezeigt wird.
Hilal
117

Sie können das ADB-Tool von Google verwenden , um Logcat filedas Problem zu analysieren.

adb logcat > logcat.txt

Öffnen Sie die logcat.txtDatei und suchen Sie nach Ihrem Anwendungsnamen. Es sollte Informationen darüber geben, warum es fehlgeschlagen ist, die Zeilennummer, den Klassennamen usw.

Vlad Bezden
quelle
Das ist großartig. Es zeigt Ihnen schnell, was auf dem Gerät vor sich geht, auch wenn Ihr Debugger es nicht abfängt. Dies kann für Xamarin passieren, wenn die Laufzeit nicht geladen werden kann.
Jvenema
1
Ich konnte nicht sehen, warum meine App im Android Studio Logcat abstürzte, es gab überhaupt keine Fehler. Diese Antwort gab mir, was ich brauchte. Später stellte ich jedoch fest, dass im Studio Logcat ein Filter aktiviert war, der mich daran hinderte, den Fehler zu erkennen. Ich wechselte zurück zu "Nur ausgewählte Anwendung anzeigen" und war wieder betriebsbereit.
Yannick
Sie sollten hinzufügen -d, andernfalls wechseln Sie zu Strg-C, um logcat zu beenden. Ich tueadb logcat -v time -d > filename.txt
Karakuri
37

Zuerst überprüfen Sie, an welcher Stelle Ihre App abgestürzt ist ( Unfortunately, MyApp has stopped.). Hierfür können Sie Log.e("TAG", "Message");über diese Zeile Ihr App-Log in Logcat sehen.

Danach finden Sie heraus, welcher Punkt Ihre App gestoppt hat. Es ist sehr einfach, ihn an Ihrer Seite zu lösen.

Hiren Vaghela
quelle
28

Überprüfen Sie einfach den Fehler in log cat.

Sie erhalten die Option log cat von in Eclipse:

Fenster-> Ansicht anzeigen-> Andere-> Android-> Logcat

Protokollkatze enthält Fehler.

Andernfalls können Sie den Fehler auch überprüfen, indem Sie eine Anwendung im Debug-Modus ausführen. Setzen Sie danach zunächst den Haltepunkt, indem Sie Folgendes tun:

Klicken Sie mit der rechten Maustaste auf Projekt-> Debuggen als-> Android-Anwendung

Rahil Ali
quelle
27

Hinweis: Diese Antwort verwendet Android Studio 2.2.2

Hinweis 2: Ich gehe davon aus, dass Ihr Gerät erfolgreich verbunden wurde.


Das erste, was Sie tun, wenn Ihre Anwendung abstürzt, ist ein Blick in die LogCat. Am Ende von Android Studio befindet sich eine Symbolleiste mit einer Liste von Menüs:

Bild

Klicken Sie auf den "Android Monitor" (den, den ich im obigen Bild unterstrichen habe. ^)

Jetzt erhalten Sie ungefähr Folgendes:

Bild

Ändern Sie " Verbose" in " Error". Jetzt werden nur noch protokollierte Fehler angezeigt. Mach dir jetzt keine Sorgen über all diese Fehler (wenn du sie hast).

Bild

OK. Tun Sie jetzt, was Sie getan haben, um Ihre App zum Absturz zu bringen. Wechseln Sie nach dem Absturz Ihrer App zu Ihrem Logcat. Sie sollten ein neues Absturzprotokoll finden, das viele enthält at:x.x.x: und Caused by: TrumpIsPresidentExceptionzum Beispiel. Gehen Sie zu dieser Caused by:Anweisung in Ihrem Logcat.

Bild

Neben , dass Caused By:, sollte es die Ausnahme sein, was geschehen. In meinem Fall ist es ein RuntimeExceptionund darunter sollte eine Zeile stehen, die einen blauen Link enthält , wie zum Beispiel:

Bild

Wenn dasCaused by: KEINE Zeile mit einem blauen Text irgendwo darunter hat, suchen Sie nach einer anderen Caused by:, die dies tut.

Klicken Sie auf diesen blauen Link . Es sollte Sie dorthin bringen, wo das Problem aufgetreten ist. In meinem Fall lag es an dieser Zeile:

throw new RuntimeException();

Jetzt weiß ich also, warum es abstürzt. Es ist, weil ich die Ausnahme selbst werfe. Dies war ein offensichtlicher Fehler .


Nehmen wir jedoch an, ich habe einen weiteren Fehler erhalten:

java.lang.NullPointerException

Ich habe meinen Logcat überprüft, auf den blauen Link geklickt, den er mir gegeben hat, und er hat mich hierher geführt:

mTextView.setText(myString);

Also, jetzt möchte ich debuggen. Gemäß dieser StackOverflow-Frage sagt eine NullPointerException, dass etwas ist null.

Lassen Sie uns also herausfinden, was null ist . Es gibt zwei Möglichkeiten. Entweder mTextViewist null oder myStringist null. Um herauszufinden, mTextView.setText(mString)füge ich vor der Zeile diese beiden Zeilen hinzu:

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

Jetzt, wie zuvor (wir haben Verose in Error geändert), möchten wir "Error" in "Debug" ändern. Da wir uns durch Debuggen anmelden. Hier sind alle Protokollmethoden:

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

Da wir verwendet haben Log.d, checken wir Debug ein. Deshalb haben wir es in Debug geändert.

Hinweis Log.dhat einen ersten Parameter, in unserem Fall "AppDebug". Klicken Sie oben rechts im Logcat auf das Dropdown-Menü "Keine Filter". Wählen Sie "Filterkonfiguration bearbeiten", geben Sie Ihrem Filter einen Namen und geben Sie in "Log Tag" "App Debug" ein. OK klicken". Jetzt sollten im Logcat zwei Zeilen angezeigt werden:

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

Jetzt wissen wir also, dass mTextView null ist.

Ich beobachte meinen Code, jetzt merke ich etwas.

Ich habe mich private TextView mTextViewan der Spitze meiner Klasse erklärt. Aber ich definiere es nicht.

Grundsätzlich habe ich vergessen, dies in meinem onCreate () zu tun:

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

Deshalb mTextViewist das null, weil ich vergessen habe, meiner App zu sagen, was es ist. Also füge ich diese Zeile hinzu, starte meine App und jetzt stürzt die App nicht ab.


Ab ِ
quelle
1
Dies sind gute Informationen, aber die Verwendung von Bildern des Stack Trace verringert dessen Nützlichkeit - Bilder können nicht durchsucht, nicht kopiert und eingefügt werden, können nicht von Bildschirmlesern aufgenommen werden und sind schwieriger zu lesen. (Ich habe übrigens nicht abgelehnt, nur darauf hingewiesen).
EJoshuaS
1
@EJoshuaS Ich habe nicht gesagt, Bilder zu liefern.
Ab
19

Dieses Popup wird nur angezeigt, wenn in Ihrem Code eine schwerwiegende Ausnahme auftritt, die die Ausführung der App stoppt. Es könnte jede Ausnahme sein NullPointerException, OutOfMemoryExceptionetc.

Am besten überprüfen Sie über Logcat, ob Sie die App noch in Android Studio entwickeln. Auf diese Weise können Sie schnell die Stapelverfolgung lesen und die Ursache der App überprüfen.

Wenn Ihre App bereits aktiv ist, können Sie logcat nicht verwenden . Zu diesem Zweck können CrashlyticsSie Fehlerberichte für alle auftretenden Ausnahmen implementieren .

Ani
quelle
17

Überprüfen Sie Ihre LogcatNachricht und sehen Sie Ihre ManifestDatei. Es sollte etwas fehlen, wie das Definieren der Activity,Benutzerberechtigung usw.

Manoj ahirwar
quelle
14

Sie können eines dieser Tools verwenden:

  1. adb logcat

  2. adb logcat> logs.txt (Sie können Editoren verwenden, um Fehler zu öffnen und zu suchen.)

  3. eclipse logcat (Wenn in eclipse nicht sichtbar, gehen Sie zu Windows-> Ansicht anzeigen-> Andere-> Android-> LogCat)

  4. Android Debug Monitor oder Android Device Monitor (Befehlsmonitor eingeben oder über die Benutzeroberfläche öffnen)

Geben Sie hier die Bildbeschreibung ein

  1. Android Studio

Ich schlage vor, Android Debug Monitor zu verwenden , es ist gut. Weil Eclipse hängt, wenn zu viele Protokolle vorhanden sind, und durch den ADB-Logcat-Filter und alles schwierig.

Shiv Buyya
quelle
12

Sie müssen das überprüfen Stack trace

Wie geht das?

auf Ihrer IDE Überprüfen Sie die Fenster von LOGCAT

Wenn Sie die Logcat-Fenster nicht sehen können, gehen Sie zu diesem Pfad und öffnen Sie ihn

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

Wenn Sie Google-Api verwenden, gehen Sie zu diesem Pfad

adb logcat> logcat.txt

Alireza Amini
quelle
10

In der folgenden showToast () -Methode müssen Sie einen anderen Parameter für den Kontext oder den Anwendungskontext übergeben, indem Sie dies versuchen.

  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();
}
Mayank Nema
quelle
9

Lassen Sie mich eine grundlegende Logcat-Analyse für den Fall teilen, dass Sie einen Force Close treffen (wenn die App nicht mehr funktioniert).

DOCS

Das grundlegende Tool von Android zum Sammeln / Analysieren von Protokollen ist der Logcat.

HIER ist die Android-Seite über Logcat

Wenn Sie Android Studio verwenden, können Sie diesen LINK auch überprüfen .

Erfassen

Grundsätzlich können Sie logcat mit dem folgenden Befehl MANUELL erfassen (oder einfach das AndroidMonitor-Fenster in AndroidStudio überprüfen):

adb logcat

Es gibt viele Parameter, die Sie dem Befehl hinzufügen können, mit denen Sie die gewünschte Nachricht filtern und anzeigen können ... Dies ist persönlich ... Ich verwende immer den folgenden Befehl, um den Zeitstempel der Nachricht abzurufen:

adb logcat -v time

Sie können die Ausgabe in eine Datei umleiten und in einem Texteditor analysieren.

Analysieren

Wenn Ihre App abstürzt, erhalten Sie Folgendes:

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

Dieser Teil des Protokolls zeigt Ihnen viele Informationen:

  • Als das Problem auftrat: 07-09 08:29:13.475

Es ist wichtig zu überprüfen, wann das Problem aufgetreten ist ... Möglicherweise finden Sie mehrere Fehler in einem Protokoll ... Sie müssen sicher sein, dass Sie die richtigen Meldungen überprüfen :)

  • Welche App ist abgestürzt: com.example.khan.abc

Auf diese Weise wissen Sie, welche App abgestürzt ist (um sicherzugehen, dass Sie die Protokolle Ihrer Nachricht überprüfen).

  • Welcher FEHLER: java.lang.NullPointerException

Ein NULL-Zeiger-Ausnahmefehler

  • Detaillierte Informationen zum Fehler: Attempt to invoke virtual method 'void android.support.v4.app.FragmentActivity.onBackPressed()' on a null object reference

Sie haben versucht, die Methode onBackPressed()von einem FragmentActivityObjekt aus aufzurufen . Dieses Objekt war jedoch, nullals Sie es getan haben.

  • Stapelverfolgung: Die Stapelverfolgung zeigt Ihnen die Reihenfolge des Methodenaufrufs an ... Manchmal tritt der Fehler in der aufrufenden Methode (und nicht in der aufgerufenen Methode) auf.

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

Fehler in Datei com.example.khan.abc.AudioFragment.java, innerhalb der onClick()Methode in Zeile: 125(Stacktrace zeigt die Zeile, in der der Fehler aufgetreten ist)

Es wurde aufgerufen von:

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

Welches wurde aufgerufen von:

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

welches aufgerufen wurde von:

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

usw....

Überblick

Dies war nur eine Übersicht ... Nicht alle Protokolle sind einfach usw. ... Es dient nur dazu, die Idee zu teilen und Ihnen Informationen für Einsteiger bereitzustellen ...

Ich hoffe ich konnte dir irgendwie helfen ... Grüße

W0rmH0le
quelle
8

Verwenden Sie die LogCat und versuchen Sie herauszufinden, was den Absturz der App verursacht.

Um zu sehen , Logcat wenn Sie verwenden Android Studio dann Drücken Sie ALT + 6 oder

Wenn Sie Eclipse verwenden, dann Fenster -> Perspektive öffnen -> Andere - LogCat

Gehen Sie zu LogCat und wählen Sie im Dropdown-Menü einen Fehler aus. Diese enthält alle erforderlichen Informationen zum Debuggen. Wenn dies nicht hilft, senden Sie die LogCat als Bearbeitung an Ihre Frage, und jemand wird Ihnen helfen.

Biswajit Karmakar
quelle
7

Wenn Ihre App aus irgendeinem Grund ohne gute Stapelverfolgung abstürzt. Versuchen Sie, es in der ersten Zeile zu debuggen, und gehen Sie Zeile für Zeile bis zum Absturz. Dann haben Sie eine Antwort, welche Leitung Ihnen Probleme bereitet. Wahrscheinlich könnten Sie es dann in try catch block verpacken und Fehler ausgeben.

felislynx.silae
quelle
5

Sie können diese Fehlermeldung auch einzeln erhalten, ohne Stapelverfolgung oder weitere Fehlermeldung.

In diesem Fall müssen Sie sicherstellen, dass Ihr Android-Manifest korrekt konfiguriert ist (einschließlich der Zusammenführung von Manifesten aus einer Bibliothek und aller Aktivitäten, die aus einer Bibliothek stammen würden), und besonders auf die erste Aktivität achten, die in Ihrer Anwendung in Ihren Manifestdateien angezeigt wird .

Pelpotronic
quelle
3
Es würde mich interessieren, ob Sie ein Projekt hochladen könnten, das dieses Phänomen demonstriert.
CommonsWare
5

Absturz während der Entwicklung

Probieren Sie meine bevorzugte Tool- Protokollansicht aus , um die Protokolle abzurufen und während der Entwicklung zu analysieren.
Achten Sie darauf , zu kennzeichnen ./logviewund ./lib/logview.jarals ausführbar , wenn unter Linux läuft.

Wenn es Ihnen nicht gefällt, gibt es viele alternative Desktop-Protokoll-Viewer für Android .

Absturz in freier Wildbahn

Integrieren Sie ein Echtzeit-Crash-Reporting-Tool wie Firebase Crashlytics , um Stapelspuren nicht behandelter Ausnahmen zu erhalten, die auf den Geräten der Benutzer aufgetreten sind.

Lesen Sie, wie Sie eine Buggy-App veröffentlichen (und leben, um die Geschichte zu erzählen) , um mehr über den Umgang mit Fehlern vor Ort zu erfahren.

naXa
quelle
4

Die Leute machen Fehler und damit auch das Codieren.

Wenn jemals etwas errorpassiert ist, wenden Sie sich immer an den Logcat mit dem Text in roter Farbe. Sie können jedoch das eigentliche Problem in blauem Text mit Unterstreichung in diesem roten Text herausfinden .

Stellen Sie sicher, wenn Sie eine neue erstellen activity, deklarieren Sie immer die activityin der AndroidManifestDatei.

Wenn Sie eine Berechtigung hinzufügen, deklarieren Sie diese ebenfalls in der AndroidMainifestDatei.

Kopi Bryant
quelle
4

Logcat - Zum Überprüfen der Protokolle in der Entwicklungsphase von Android Studio

Löschen Sie zunächst den Logcat und lassen Sie die App erneut abstürzen, damit Sie nur abgestürzte Protokolldetails erhalten. Sie müssen die Stapelverfolgung überprüfen

Leider hat MyApp aufgehört. Dafür gibt es viele Gründe. Sie können dies auch in Protokollen überprüfen. Hierfür können Sie Log.e ("TAG", "Message") verwenden;

Häufiger Fehler beim Absturz der App wie:

  1. Codierungsfehler (falsche Verwendung von Schlüsselwörtern).
  2. Name der Eigenschaft stimmt nicht überein.
  3. Nicht unterstütztes Plugin (vielleicht).
  4. Nicht übereinstimmende Version (vielleicht).
  5. Aktivität fehlt in AndroidManifest-Datei.
  6. Berechtigung fehlt in AndroidManifest-Datei.
  7. Häufigste NullPointerException.
  8. Deklariert, aber nicht definiert.

So beheben Sie einen App-Absturzfehler:

  • Beachten Sie die obigen Punkte und gehen Sie sie durch.
  • Mit dem Fehler erhalten Sie den Dateinamen auch in blauer Farbe (klicken Sie darauf und springen Sie zum Code, wenn ein Fehler auftritt).
Ashish
quelle
3

Zuerst müssen Sie überprüfen, wo und warum Ihre App abgestürzt ist. (Unfortunately, MyApp has stopped.).Mithilfe von LOGkönnen Sie herausfinden, was schief gelaufen ist.

Danach finden Sie heraus, an welchem ​​Punkt Ihre App aufgehört hat, dies von Ihrem Punkt aus zu beheben.

Mehul Solanki
quelle
3

Wenn Sie in Ihrem Terminal kein interessantes Protokoll haben (oder diese nicht direkt mit Ihrer App zusammenhängen), liegt Ihr Problem möglicherweise an einer nativen Bibliothek. In diesem Fall sollten Sie in Ihrem Terminal nach "Tombstone" -Dateien suchen.

Der Standardspeicherort für die Tombstone-Dateien hängt von jedem Gerät ab. In diesem Fall wird jedoch in einem Protokoll Folgendes angegeben: Tombstone written to: /data/tombstones/tombstone_06

Weitere Informationen finden Sie unter https://source.android.com/devices/tech/debug .

zapotec
quelle
0

Auch das Ausführen dieses Befehls im Terminal kann helfen, das Problem zu finden:

gradlew build > log.txt 2>details.txt

Dann sollten Sie zum Speicherort der gradlew-Datei in den beiden oben genannten Protokolldateien gehen.

Mohsen Emami
quelle