Freigeben über


Problembehandlung beim iOS SDK

Von Bedeutung

Visual Studio App Center wurde am 31. März 2025 eingestellt, mit Ausnahme der Analyse- und Diagnosefeatures, die bis zum 30. Juni 2026 weiterhin unterstützt werden. Weitere Informationen

Probleme während der Einrichtung

  1. Suchen Sie in der Konsole nach einem Assert-Protokoll mit der Meldung "App Center SDK wurde erfolgreich konfiguriert". Die Meldung impliziert, dass das SDK erfolgreich konfiguriert ist.
  2. Wenn Sie Cocoapods verwenden, um App Center in Ihre iOS-App zu integrieren, und eine Fehlermeldung erhalten: CocoaPods - Unable to find a specification for AppCenter, führen Sie pod repo update aus, um Ihr lokales Cocoapods-Repository zu aktualisieren, und führen Sie anschließend pod install erneut aus.
  3. Wenn Sie CocoaPods verwenden, um App Center in Ihre iOS-App zu integrieren, und während der Projektkompilierung ein Fehler mit der Meldung framework not found AppCenter.xcframework auftritt, dann müssen Sie CocoaPods auf die neueste Version aktualisieren (neu installieren), indem Sie [sudo] gem install cocoapods ausführen.
  4. Wenn Sie die SDK-Binärdateien manuell integrieren, stellen Sie sicher, dass Für Ihr Projekt Module aktiviert sind.

Analysedaten werden nicht im Portal angezeigt

  1. Stellen Sie sicher, dass Sie die SDK-Module ordnungsgemäß integriert haben.

  2. Stellen Sie sicher, dass der richtige App-Schlüssel zusammen mit dem start:withServices: Methodenaufruf enthalten ist. Sie können den exakten start:withServices:Code kopieren, indem Sie die App im Portal öffnen und zur Seite " Erste Schritte " navigieren.

  3. Wenn Sie die Protokolle anzeigen möchten, die an das Back-End gesendet werden, ändern Sie die Protokollebene in "Ausführlich" in Ihrer Anwendung. Das SDK druckt dann die Protokolle in der Konsole. Fügen Sie den folgenden Aufruf vor dem SDK-Start ein:

    [MSACAppCenter setLogLevel:MSACLogLevelVerbose]
    
    AppCenter.logLevel = .verbose
    

    Stellen Sie sicher, dass "App Center SDK erfolgreich konfiguriert" in den Protokollen (auf INFO-Protokollebene ) angezeigt wird, und überprüfen Sie dann, ob HTTPS-Anforderungsprotokolle angezeigt werden.

  4. Stellen Sie sicher, dass Ihr Gerät online ist.

  5. Manchmal kann es einige Minuten dauern, bis Protokolle im Portal angezeigt werden. Warten Sie einige Zeit, wenn dies der Fall ist.

  6. Um zu überprüfen, ob Das App Center-Back-End Ihre Daten erhalten hat, wechseln Sie zum Abschnitt "Protokollfluss " im Analysedienst . Ihre Ereignisse sollten angezeigt werden, sobald sie gesendet wurden.

Abstürze werden nicht im Portal angezeigt

  1. Stellen Sie sicher, dass Sie die SDK-Module ordnungsgemäß integriert haben.

  2. Stellen Sie sicher, dass der richtige App-Schlüssel zusammen mit dem start:withServices: Methodenaufruf enthalten ist. Sie können den genauen start:withServices: Code kopieren, indem Sie die App im Portal öffnen und zur Seite " Erste Schritte " navigieren.

  3. App Center Crashes sendet das Absturzprotokoll erst weiter, nachdem die App neu gestartet wurde. Außerdem leitet das SDK keine Absturzprotokolle weiter, wenn Sie mit dem Debugger verbunden sind. Stellen Sie sicher, dass der Debugger beim Abstürzen der App nicht verbunden ist.

  4. Wenn Sie die Protokolle anzeigen möchten, die an das Back-End gesendet werden, ändern Sie die Protokollebene in "Ausführlich" in Ihrer Anwendung. Das SDK druckt dann die Protokolle in der Konsole. Fügen Sie den folgenden Aufruf vor dem SDK-Start ein:

    [MSACAppCenter setLogLevel:MSACLogLevelVerbose]
    
    AppCenter.logLevel = .verbose
    

    Stellen Sie sicher, dass "App Center SDK erfolgreich konfiguriert" in den Protokollen (auf INFO-Protokollebene ) angezeigt wird, und überprüfen Sie dann, ob HTTPS-Anforderungsprotokolle angezeigt werden.

  5. Verwenden Sie keine anderen Bibliotheken, die Absturzberichterstattungsfunktionen bereitstellen. Sie können nur ein Absturzberichts-SDK in Ihre App integriert haben.

  6. Stellen Sie sicher, dass Ihr Gerät online ist.

  7. Manchmal kann es einige Minuten dauern, bis Protokolle im Portal angezeigt werden. Warten Sie einige Zeit, wenn dies der Fall ist.

  8. Überprüfen Sie, ob das SDK den Absturz beim nächsten Start der App festgestellt hat. Sie können die API aufrufen, um zu überprüfen, ob die App in der letzten Sitzung abgestürzt ist und eine Warnung anzeigt. Oder Sie können den Absturzrückruf didSucceedSendingErrorReport erweitern, um festzustellen, ob er erfolgreich an den Server gesendet wurde.

  9. Um zu überprüfen, ob das App Center-Back-End den Absturz erhalten hat, wechseln Sie zum Abschnitt "Protokollfluss" im Analysedienst. Ihre Abstürze sollten dort angezeigt werden, sobald sie gesendet wurden.

Die Warnung, die Benutzer zur Eingabe eines Updates auffordert, enthält keine Zeichenfolgen, sondern nur die Schlüssel für sie.

Dies bedeutet, dass AppCenterDistributeResources.bundle nicht zu dem Projekt hinzugefügt wurde. Stellen Sie sicher, dass Sie die Datei in Ihr Xcode-Projekt hinzugefügt haben und in der Build-Phase des App-Ziels Copy Bundle Resources angezeigt wird. Es sollte dort angezeigt werden, wenn Sie die Datei durch Ziehen und Ablegen hinzugefügt haben – Xcode erledigt sie automatisch für Sie. Wenn die Datei in der Buildphase fehlt, fügen Sie sie hinzu, damit sie in das App-Bündel kompiliert wird.

Wenn Sie Cocoapods verwenden, kümmert es sich automatisch um die Ressourcen. Versuchen Sie, den Pod neu zu installieren.

In der Konsole werden Meldungen angezeigt, die angeben, dass die Datenbank nicht geöffnet werden konnte.

Ab Version 0.11.0 des iOS SDK verwendet App Center SQLite zum Speichern von Protokollen, bevor sie an das Back-End gesendet werden. Wenn Sie Ihre Anwendung mit Ihrer eigenen SQLite-Bibliothek bündeln, anstatt das vom Betriebssystem bereitgestellte zu verwenden, werden möglicherweise Fehler wie dies in der Konsole [AppCenter] ERROR: -[MSACDBStorage executeSelectionQuery:]/147 Failed to open database angezeigt, und im Back-End werden keine Analyse- oder Absturzinformationen angezeigt. Aktualisieren Sie das SDK auf Version 0.13.0 oder höher.

Die Verteilung und In-App-Updates blockieren meine automatisierten UI-Tests.

Wenn In-App-Updates aktiviert sind, blockieren sie Ihre automatisierten UI-Tests. Der Updatevorgang versucht, sich beim App Center-Back-End zu authentifizieren. Es wird empfohlen, dass Sie App Center Distribute für Ihr UI-Test-Target nicht aktivieren.

Warum das SDK als "statische Bibliothek" verteilt wird

Die wichtigsten Designziele für das App Center SDK sind die minimalen Auswirkungen auf die App mit App Center und ein modulares SDK zu haben. Dies würde dazu führen, dass das SDK als mehrere dynamisch gelinkte Bibliotheken verteilt wird.

App Center wird jedoch als statisch verknüpfte freigegebene Bibliothek verteilt, die in ein „dickes“ gefälschtes Framework eingeschlossen ist. Dies bedeutet, dass das SDK zur Kompilierungszeit und nicht zur Startzeit für eine bessere Leistung verknüpft ist. Das Laden mehrerer dynamisch gelinkter gemeinschaftlich genutzter Bibliotheken erfordert Zeit.

Apple empfiehlt, den App-Start so zu optimieren, dass es nicht mehr als 400 ms in einer WWDC-Sitzung dauert. Sie empfehlen speziell statische gemeinsam genutzte Bibliotheken anstelle von dynamischen, um dieses Ziel zu erreichen. Die Verteilung des App Center SDK für iOS als statisch verknüpfte freigegebene Bibliothek folgt apples Empfehlung, die beste Leistung und einen minimalen Einfluss auf die App bereitzustellen, die das SDK enthält.

Um mehr über statisch verknüpfte freigegebene Bibliotheken und dynamische verknüpfte freigegebene Bibliotheken zu erfahren, empfehlen wir die allgemeine Dokumentation von Apple zum Thema.

Warum sind die SDK-Binärdateien so groß? Ich bin besorgt über die Größe meiner App

Die AppCenter-Binärdateien werden als "fat"-Frameworks verteilt, die Segmente für alle iPhone-Architekturen und für den iPhone-Simulator enthalten. Aus diesem Grund ist beispielsweise "AppCenter.framework " 10,5 MB zum Herunterladen verfügbar.

Die kompilierte Größe der SDK-Binärdateien ist wesentlich kleiner als die .framework , die Sie Ihrer App in Xcode hinzufügen. Berücksichtigen Sie auch, dass Release-Builds kleiner als Debug-Builds sein werden.

Um dies zu veranschaulichen, haben wir eine leere Objective-C Anwendung mit Xcode 9.2 erstellt, die App Center-Binärdateien zur App hinzugefügt und Releasebuilds an ein iPhone 7 mit iOS 11.3 verteilt.

Wir haben die Tests ohne Bitcode-Aktivierung ausgeführt und App Thinning nicht verwendet. Sie können diese Techniken verwenden, um die Binäre Größe Ihrer App noch weiter zu verkleinern.

Die unten aufgeführten Zahlen können variieren und von Ihren Buildeinstellungen abhängen. Berücksichtigen Sie daher eine grobe Anleitung. Das Hinzufügen des App Center SDK zu Ihrer App hat jedoch minimale Auswirkungen auf die Größe der Anwendungs-Binärdatei.

Verwendete App Center-Module Exportierte IPA-Dateigröße Installationsgröße
Keine (leere App) 24 KB 132 KB
App Center-Analyse 120 KB 377 KB
Absturz im App Center 239 KB 705 KB
App Center verteilen 163 KB 528 KB
Alle App Center-Module 314 KB 930 KB

Den Geheimwert des App Centers schützen

Dies app_secret ist ein Bezeichner Ihrer App, es ist erforderlich, zu wissen, für welche App der Datenverkehr gilt, und es kann nicht zum Abrufen oder Bearbeiten vorhandener Daten verwendet werden. Wenn Ihre app_secret Daten verfügbar gemacht werden, besteht das größte Risiko darin, schlechte Daten an Ihre App zu senden, hat aber keine Auswirkungen auf die Sicherheit der Daten.

Um vertrauliche Daten abzurufen, müssen Sie ein App-/ Benutzertoken bereitstellen, das auf der Clientseite generiert wird. Es gibt keine Möglichkeit, Daten auf der Clientseite vollständig sicher zu machen.

Sie können die Sicherheit Ihrer App verbessern, indem Sie eine Umgebungsvariable verwenden, um den geheimen App-Schlüssel in Ihren Code einzufügen. Auf diese Weise ist der geheime Schlüssel in Ihrem Code nicht sichtbar.