App Center stürzt ab (Cordova)

Wichtig

Visual Studio App Center wird am 31. März 2025 eingestellt. Sie können Visual Studio App Center zwar weiterhin verwenden, bis es vollständig eingestellt ist, es gibt jedoch mehrere empfohlene Alternativen, zu denen Sie möglicherweise eine Migration in Erwägung ziehen.

Erfahren Sie mehr über Supportzeitpläne und Alternativen.

Hinweis

Der Support für Cordova Apps wurde im April 2022 eingestellt. Weitere Informationen finden Sie im App Center-Blog.

App Center-Abstürze generiert automatisch ein Absturzprotokoll, wenn Ihre App abstürzt. Das Protokoll wird zuerst in den Speicher des Geräts geschrieben, und wenn der Benutzer die App erneut startet, wird der Absturzbericht an App Center gesendet. Das Sammeln von Abstürze funktioniert sowohl für Beta- als auch für Live-Apps, d. h. für solche, die an die App Store übermittelt werden. Absturzprotokolle enthalten wertvolle Informationen, die Sie bei der Behebung des Absturzes unterstützen.

Folgen Sie dem Abschnitt Erste Schritte, wenn Sie das SDK noch nicht in Ihrer Anwendung eingerichtet haben.

Generieren eines Testabsturzes

App Center Crashes bietet Ihnen eine API zum Generieren eines Testabsturzes zum einfachen Testen des SDK. Diese API kann nur in Test-/Beta-Apps verwendet werden und wird in Produktions-Apps nicht ausgeführt.

AppCenter.Crashes.generateTestCrash();

Hinweis

Ihre Cordova-App muss im Releasemodus kompiliert werden, damit dieser Absturz an App Center gesendet wird.

Weitere Informationen zu einem vorherigen Absturz

App Center Crashes verfügt über zwei APIs, die Ihnen weitere Informationen liefern, falls Ihre App abgestürzt ist.

Hat die App in der vorherigen Sitzung eine Warnung zu wenig Arbeitsspeicher erhalten?

Nach dem Starten des SDK können Sie jederzeit überprüfen, ob die App in der vorherigen Sitzung eine Speicherwarnung erhalten hat:

var success = function(hadLowMemoryWarning) {
    console.log(`there was ${hadLowMemoryWarning ? "a" : "no"} memory warning`);
}

var error = function(error) {
    console.error(error);
}

AppCenter.Crashes.hasReceivedMemoryWarningInLastSession(success, error);

Hinweis

In einigen Fällen löst die Ausführung des arbeitsspeicherarmen Geräts möglicherweise keine nachverfolgbaren Ereignisse aus.

Ist die App in der vorherigen Sitzung abgestürzt?

Nach dem Starten des SDK können Sie jederzeit überprüfen, ob die App beim vorherigen Start abgestürzt ist:

var success = function(didCrash) {
    console.log("there was " + (didCrash ? "a" : "no") + " crash");
}

var error = function(error) {
    console.error(error);
}

AppCenter.Crashes.hasCrashedInLastSession(success, error);

Dies ist nützlich, wenn Sie das Verhalten oder die Benutzeroberfläche Ihrer App nach einem Absturz anpassen möchten. Einige Entwickler möchten möglicherweise etwas zeigen, um sich bei ihren Benutzern zu entschuldigen oder sich nach einem Absturz mit ihnen in Verbindung zu setzen.

Details zum letzten Absturz

Wenn Ihre App zuvor abgestürzt ist, können Sie Details zum letzten Absturz abrufen.

var success = function(crashReport) {
    //do something with crash report
}

var error = function(error) {
    console.error(error);
}

AppCenter.Crashes.lastSessionCrashReport(success, error);

Anpassen der Nutzung von App Center-Abstürze

App Center Crashes bietet Entwicklern die Möglichkeit, zusätzliche Aktionen vor und beim Senden von Absturzprotokollen an App Center auszuführen.

Verarbeitungsabstürze in JavaScript

Sie können das SDK so konfigurieren, dass Absturzberichte automatisch gesendet oder Abstürze in JavaScript verarbeitet werden, indem Sie den Einstellungswert APPCENTER_CRASHES_ALWAYS_SEND in config.xmländern. Legen Sie zum Verarbeiten von Abstürze in JavaScript auf falsefest.

<preference name="APPCENTER_CRASHES_ALWAYS_SEND" value="false" />

Anschließend können Sie die Methode verwenden AppCenter.Crashes.process(processFunction, errorCallback) , um die Prozession von Abstürze anzupassen.

Sollte der Absturz verarbeitet werden?

Übergeben Sie false an den sendCallback , wenn Sie entscheiden möchten, ob ein bestimmter Absturz verarbeitet werden muss oder nicht. Beispielsweise kann es zu einem Absturz auf Systemebene kommen, den Sie ignorieren möchten und den Sie nicht an App Center senden möchten.

var errorCallback = function(error) {
    console.error(error);
};

var processFunction = function(attachments, sendCallback) {
    sendCallback(false); //crash won't be sent
};

AppCenter.Crashes.process(processFunction, errorCallback);

Andernfalls übergeben Sie true die sendCallback Funktion, und der Absturz wird gesendet.

var errorCallback = function(error) {
    console.error(error);
};

var processFunction = function(attachments, sendCallback) {
    sendCallback(true); //crash will be sent
};

AppCenter.Crashes.process(processFunction, errorCallback);

Hinweis

Um dieses Feature verwenden zu können, müssen Sie den Einstellungswert in config.xml auf falsefestlegenAPPCENTER_CRASHES_ALWAYS_SEND.

Dieses Feature ist daher von der Verarbeitung von Abstürze in JavaScript abhängig.

Hinzufügen von Anlagen zu einem Absturzbericht

Sie können Binär- und Textanlagen zu einem Absturzbericht hinzufügen. Das SDK sendet sie zusammen mit dem Absturz, sodass Sie sie im App Center-Portal sehen können. Der folgende Rückruf wird direkt vor dem Senden eines gespeicherten Absturzes von früheren Anwendungsstarts aufgerufen, jedoch nicht zum Absturzzeitpunkt. Stellen Sie sicher, dass die Anlagedatei nicht benannt minidump.dmp ist, da dieser Name für Minidump-Dateien reserviert ist. Hier sehen Sie ein Beispiel für das Anfügen eines Texts und eines Bilds an einen Absturz:

var errorCallback = function(error) {
    console.error(error);
};

var processFunction = function(attachments, sendCallback) {
    for (var i = 0; i < attachments.length; i++) {
        attachments[i].addTextAttachment('Hello text attachment!', 'hello.txt');
        var imageAsBase64string = '...';
        attachments[i].addBinaryAttachment(imageAsBase64string, 'logo.png', 'image/png');
    }
    sendCallback(true); //crash will be sent
};

AppCenter.Crashes.process(processFunction, errorCallback);

Hinweis

Um dieses Feature zu verwenden, müssen Sie den Einstellungswert in config.xml auf falsefestlegenAPPCENTER_CRASHES_ALWAYS_SEND.

Dieses Feature ist daher von der Verarbeitung von Abstürze in JavaScript abhängig.

Hinweis

Die Größenbeschränkung beträgt derzeit 1,4 MB unter Android und 7 MB unter iOS. Der Versuch, eine größere Anlage zu senden, löst einen Fehler aus.

Aktivieren oder Deaktivieren von App Center-Abstürze zur Laufzeit

Sie können App Center-Abstürze zur Laufzeit aktivieren und deaktivieren. Wenn Sie es deaktivieren, wird vom SDK keine Absturzberichte für die App ausgeführt.

var success = function() {
    console.log("crashes disabled");
}

var error = function(error) {
    console.error(error);
}

AppCenter.Crashes.setEnabled(false, success, error);

Um App Center-Abstürze erneut zu aktivieren, verwenden Sie dieselbe API, übergeben true sie aber als Parameter.

var success = function() {
    console.log("crashes enabled");
}

var error = function(error) {
    console.error(error);
}

AppCenter.Crashes.setEnabled(true, success, error);

Der Zustand wird im Speicher des Geräts bei allen Anwendungsstarts beibehalten.

Überprüfen, ob App Center-Abstürze aktiviert ist

Sie können auch überprüfen, ob App Center-Abstürze aktiviert ist:

var success = function(result) {
    console.log("crashes " + (result) ? "enabled" : "disabled");
}

var error = function(error) {
    console.error(error);
}
AppCenter.Crashes.isEnabled(success, error);