Helaas is MyApp gestopt. Hoe kan ik dit oplossen?

Ik ben een applicatie aan het ontwikkelen, en elke keer dat ik deze start, krijg ik de melding:

Helaas is MyApp gestopt.

Wat kan ik doen om dit op te lossen?


Over deze vraag – uiteraard geïnspireerd door Wat is een stacktracering en hoe kan ik deze gebruiken om fouten in mijn toepassing op te sporen?, er zijn veel vragen die stellen dat hun toepassing is gecrasht, zonder enige verdere details. Deze vraag is bedoeld om beginnende Android-programmeurs te leren hoe ze hun problemen zelf kunnen oplossen of de juiste vragen kunnen stellen.


Antwoord 1, autoriteit 100%

Dit antwoord beschrijft het proces van het ophalen van de stacktracering. Heb je de stacktrace al? Lees meer over stacktraces in “Wat is een stacktracering en hoe kan ik deze gebruiken om fouten in mijn toepassing op te sporen?

Het probleem

Uw toepassing is gestopt omdat er een niet-afgevangen RuntimeExceptionis gegenereerd.
De meest voorkomende hiervan is de NullPointerException.

Hoe los je het op?

Telkens wanneer een Android-applicatie crasht (of welke Java-applicatie dan ook), wordt er een Stack tracenaar de console geschreven (in dit geval logcat). Deze stacktracering bevat essentiële informatie voor het oplossen van uw probleem.

Android Studio

Klik in de onderste balk van het venster op de knop Logcat. Als alternatief kunt u op Alt + 6 drukken. Zorg ervoor dat uw emulator of apparaat is geselecteerd in de Devicespaneel. Probeer vervolgens het stapelspoor te vinden, dat in rood wordt getoond. Er kunnen veel dingen zijn ingelogd in Logcat, dus misschien moet je een beetje scrollen. Een gemakkelijke manier om het stapelspoor te vinden is om de logcat (met behulp van de prullenbak aan de rechterkant te wissen) en laat de app weer crashen.

Ik heb het stapel trace gevonden, nu wat?

yay! Je bent halverwege het oplossen van je probleem.
U hoeft alleen maar te weten te komen wat uw aanvraagpunt niet heeft gemaakt, door het stapelspoor te analyseren.

Lees op stapelsporen in "Wat is een stapeltracatie en hoe kan ik het gebruiken om mijn aanvraagfouten te debuggen? "

Ik kan mijn probleem nog steeds niet oplossen!

Als u uw Exceptionhebt gevonden en de lijn waar het is opgetreden, en nog steeds niet kan achterhalen hoe u het kunt oplossen, aarzel dan niet om een ​​vraag op Stackoverflow te stellen.

Probeer zo beknopt mogelijk te zijn: plaats het stapelspoor en de relevante -code (bijvoorbeeld een paar regels tot op de lijn die de Exception) gooide.


2, Autoriteit 16%

U kunt Google's adb-tool gebruiken om Logcat fileom het probleem te analyseren.

adb logcat > logcat.txt

Open logcat.txtbestand en zoek naar uw applicatienaam. Er zouden informatie moeten zijn over waarom het is mislukt, het lijnnummer, de klasnaam, enz.


3, Autoriteit 5%

Eerst controleer je op welk punt je app is gecrasht (Unfortunately, MyApp has stopped.). Hiervoor kunt u Log.e("TAG", "Message");gebruiken, met deze regel kunt u uw app-log in logcat zien.

Daarna ontdekt u welk punt uw app is gestopt, het is heel eenvoudig aan uw zijde op te lossen.


Antwoord 4, autoriteit 4%

Controleer de fout in log cat.

Je krijgt de logkat-optie van in eclipse:

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

Log kat bevat fout.

Anders kunt u de fout ook controleren door een toepassing in debug-modus uit te voeren.
Stel daarna eerst het breekpunt in door te doen:

klik met de rechtermuisknop op project->debug as->Android-toepassing


5, Autoriteit 2%

Controleer uw LogcatBericht en zie uw ManifestBestand. Er ontbreekt iets als het definiëren van de Activity,Gebruikersrechten`, enz.


6, Autoriteit 2%

U kunt een van deze tools gebruiken:

  1. ADB LOGCAT

  2. ADB LOGCAT & GT; Logs.TXT (u kunt editors gebruiken om fouten te openen en te zoeken.)

  3. Eclipse Logcat (zo niet zichtbaar in Eclipse, ga naar Windows- & GT; Bekijk weergave- & GT; Anderen- & GT; Android- & GT; Logcat)

  4. Android Debug Monitor of Android-apparaatmonitor (Type-opdracht Monitor of open via UI)

  1. Android Studio

Ik raad aan om Android Debug Monitorte gebruiken, dat is goed. Omdat eclipse blijft hangen als er te veel logs zijn, en via adb logcat-filter en allemaal moeilijk.


Antwoord 7, autoriteit 2%

U moet de Stack trace

controleren

Hoe doe je dat?

op uw IDE Controleer het vensterformulier LOGCAT

Als je de logcat-vensters niet kunt zien, ga dan naar dit pad en open het

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

als je Google-Api gebruikt, ga dan naar dit pad

adb logcat > logcat.txt


Antwoord 8, autoriteit 2%

In de onderstaande showToast()-methode moet je een andere parameter voor context of applicatiecontext doorgeven, zodat je het kunt proberen.

 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();
}

9

Als uw app om een ​​of andere reden crasht zonder goede stacktrace. Probeer het debuggen van de eerste regel en ga regel per regel totdat deze crasht. Dan heb je antwoord, welke regel je problemen veroorzaakt. Beveiligbaar zou je het dan kunnen wikkelen in Probeer Catch Block and Print Fout Output.


10

U kunt deze foutmelding ook op zichzelf krijgen, zonder een stapelveld of een ander foutbericht.

In dit geval moet u ervoor zorgen dat uw Android-manifest correct is geconfigureerd (inclusief enig kennerend samenvoeging die plaatsvindt van een bibliotheek en elke activiteit die uit een bibliotheek zou komen) en bijzondere aandacht besteden aan de eerste activiteit die in uw toepassing in uw aanvraag in uw aanvraag zou letten je manifest-bestanden.


11

Mensen maken fouten, en zo coderen ook.

Wanneer u ooit een errorhebt gebeurd, controleer dan altijd met de logcat met de tekst in rode kleur, maar u kunt het echt probleem in blauwe kleurtekst met onderstreping vinden. rode kleurtekst.

Zorg ervoor of u een nieuwe activitymaakt, altijd de activityin de AndroidManifest-bestand.

Als u toestemming toevoegt, verklaar deze dan ook in de AndroidMainifest-bestand.


12

Logcat - Om de logboeken in de ontwikkelingsfase van Android Studio

te controleren

Wis aanvankelijk de logcat en laat de app weer crashen, zodat u alleen crashed log detail kunt krijgen. U moet het stapelpunt controleren

Hoewel, helaas is MyApp gestopt. Er zijn veel redenen voor. Je kunt hetzelfde in logboeken controleren. Hiervoor kunt u de log.e ("tag", "bericht") gebruiken;

Gemeenschappelijke fout tijdens de app-crash zoals:

  1. Coderingsfout (verkeerd gebruik van trefwoorden).
  2. Mismatch Property Name.
  3. niet-ondersteunde plug-in (misschien).
  4. Mismatch-versie (misschien).
  5. Activiteit ontbreekt in AndroidManifest-bestand.
  6. missing in AndroidManifest-bestand.
  7. meest voorkomende nullpointerexception.
  8. gedeclareerd maar niet gedefinieerd.

om de app-crashfout op te lossen:

  • Houd hierboven in gedachten en ga er doorheen.
  • Met de fout, ontvangt u de bestandsnaam ook in blauwe kleur (klik erop en spring naar code van fout is optreden).

13

Crash tijdens de ontwikkeling

Probeer mijn favoriete tool logview om de logboeken te krijgen en te analyseren Tijdens de ontwikkeling.
Zorg ervoor dat u ./logviewen ./lib/logview.jarAls uitvoerbaar gebruikt bij het uitvoeren van Linux.

Als je het niet leuk vindt, is er veel alternatief Desktop Log Viewers voor Android .

Crash in het wild

Integreer een real-time crash rapportage-tool zoals firebase crosslytics om stapeltraces te krijgen van niet-verwerkte uitzonderingen die plaatsvonden op de apparaten van gebruikers.

Lees Hoe een buggy-app vrij te geven (en live om het verhaal te vertellen) om meer te weten over het hanteren van bugs in het veld.


14

Eerst moet u controleren waar en waarom uw app is gecrasht (Unfortunately, MyApp has stopped.).Met behulp van LOG, kunt u erkennen wat er mis ging.

Hierna vindt u welk punt uw app is gestopt met het oplossen van dat vanaf uw punt.


15

Als u geen enkele soort interessante log in uw terminal hebt (of ze zijn niet rechtstreeks gerelateerd aan uw app), is uw probleem misschien te wijten aan een inheemse bibliotheek. In dat geval moet u controleren op de "Tombstone" -bestanden binnen uw terminal.

De standaardlocatie voor de Tombstone-bestanden is afhankelijk van elk apparaat, maar als dat het geval is, heeft u een loggen: Tombstone written to: /data/tombstones/tombstone_06

Voor meer informatie, controleer dan https://source.android.com/devices/tech / debug .


16

Ook het uitvoeren van deze opdracht in terminal kan helpen het probleem te vinden:

gradlew build > log.txt 2>details.txt

Dan moet u naar de Locatie van de Gradlew-bestand gaan in Lees twee bovenstaande logbestanden.


17

Als uw app zonder fouten , en heeft gecrasht, gebruikte u geen Asset Manager , maar belaste de texturen zoals:

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

Dan is dat het probleem. Ik had dat met mij gebeuren. U moet altijd een Asset Manager gebruiken om een ​​geheugenoverbelasting te voorkomen.

Other episodes