Problembehandlung für React Native SDK

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 eine Migration in Betracht ziehen können.

Erfahren Sie mehr über Supportzeitpläne und Alternativen.

Datei "React/RCTDefines.h" nicht gefunden

Dieser Fehler tritt auf, wenn auf RN-Kernbibliotheken nicht ordnungsgemäß verwiesen wird, was durch verschiedene Arten von Integrations- oder Verknüpfungsproblemen verursacht werden kann. Dies geschieht häufig, wenn Sie Ihre Abhängigkeiten mithilfe des relativen Pfads in einer Poddatei und nicht statisch in einem Projekt verknüpft haben.

Unser Verknüpfungsskript unterstützt nur die Standardmethode zum Verknüpfen von Pods, um das Problem zu beheben:

  1. Ersetzen Sie die Abhängigkeiten in Ihrer Podfile durch relative Verknüpfungspfade:

    Vorher:

    pod 'AppCenter/Analytics', '~> 1.14.0'
    pod 'AppCenter/Crashes', '~> 1.14.0'
    pod 'AppCenterReactNativeShared', '~> 1.13.0'
    

    Nachher:

    pod 'appcenter', path: '../node_modules/appcenter/ios'
    pod 'appcenter-analytics', path: '../node_modules/appcenter-analytics/ios'
    pod 'appcenter-crashes', path: '../node_modules/appcenter-crashes/ios'
    
  2. Führen Sie pod install aus dem Ordner aus iOS .

  3. Ersetzen Sie in AppDelegate.m importe:

    Vorher:

    #import <AppCenterReactNative/AppCenterReactNative.h>
    #import <AppCenterReactNativeAnalytics/AppCenterReactNativeAnalytics.h>
    #import <AppCenterReactNativeCrashes/AppCenterReactNativeCrashes.h>
    

    Nachher:

    #import "AppCenterReactNative.h"
    #import "AppCenterReactNativeAnalytics.h"
    #import "AppCenterReactNativeCrashes.h"
    
  4. Entfernen Sie AppCenter-Abhängigkeiten aus dem Projekt (klicken Sie mit der rechten Maustaste auf die Abhängigkeit > Abhängigkeit entfernen).

    • Wählen Sie <YOUR_APP> ->Libraries aus, und entfernen Sie die nächsten Dateien:
      • AppCenterReactNative.xcodeproj
      • AppCenterReactNativeAnalytics.xcodeproj
      • AppCenterReactNativeCrashes.xcodeproj
    • Öffnen Sie Ihre Projekteinstellungen, und entfernen Sie auf der Registerkarte Allgemein im Abschnitt Verknüpfte Frameworks und Bibliotheken neue Elemente, die auf Zielbibliotheken verweisen, die im vorherigen Schritt entfernt wurden:
      • libAppCenterReactNative.a
      • libAppCenterReactNativeAnalytics.a
      • libAppCenterReactNativeCrashes.a
    • Ändern Sie Headersuchpfade, um Header aus dem AppCenter React Native Plug-In-Projekten zu entfernen. Öffnen Sie Ihre Projekteinstellungen, und entfernen Sie auf der Registerkarte Buildeinstellungen im Abschnitt Headersuchpfade die folgenden Speicherorte für Headerdateien:
      • $(SRCROOT)/../node_modules/appcenter/ios/AppCenterReactNative
      • $(SRCROOT)/../node_modules/appcenter-analytics/ios/AppCenterReactNativeAnalytics
      • $(SRCROOT)/../node_modules/appcenter-crashes/ios/AppCenterReactNativeCrashes

Wenn Sie auf Ihrem Computer installiert haben yarn , react-native init {myapp} initialisiert Ihre App und installiert Abhängigkeiten mit yarn anstelle npmvon . Wenn bei der Ausführung die folgende Fehlermeldung angezeigt react-native linkwird, besteht die Wahrscheinlichkeit, dass npmyarn App Center-Abhängigkeiten von npm install {package} installiert werden und während der yarn add {package} Installation gemischt werden.

Command `link` unrecognized. Make sure that you have run `npm install` and that you are inside a react-native project.

Führen Sie in diesem Fall aus npm install , und versuchen Sie es react-native link erneut.

Buildfehler, z. B. "AppCenterCrashes/MSACErrorReport.h"-Datei nicht gefunden

React-Native 0.60 und höher

Die wahrscheinliche Ursache ist der Konflikt zwischen hauptpaketversionen aufgrund einer Breaking Change in unserem Apple SDK.

  1. Stellen Sie sicher, dass alle appcenter Pakete dieselbe Hauptversion verwenden. Aktualisieren Sie sie bei Bedarf mit npm install oder yarn .

  2. Wechseln Sie zum Ordner ios Ihres Projekts, und entfernen Sie Podfile.lock und den Ordner Pods .

  3. Führen Sie pod install --repo-update in Ihrem Ios-Ordner aus.

  4. Überprüfen Sie, ob Podfile.lock Abhängigkeiten derselben Hauptversion enthält appcenter .

React Native niedriger als 0,60

Eine mögliche Ursache ist die Ausführung react-native link ohne installierte CocoaPods .

Um die Ursache zu bestätigen, führen Sie react-native linkaus, und suchen Sie in den Protokollen nach der folgenden Zeile:

Could not configure AppCenter for iOS. Error Reason - spawn pod ENOENT

Diese Zeile befindet sich im folgenden Abschnitt der Protokolle:

Added code to initialize iOS AppCenter SDK in ios/TestApp/AppDelegate.m
Installing Cocoapods dependencies...
Could not configure AppCenter for iOS. Error Reason - spawn pod ENOENT
rnpm-install info Platform 'ios' module appcenter-analytics is already linked
rnpm-install info Platform 'android' module appcenter-analytics is already linked

Wenn dieser Fehler angezeigt wird, stellen Sie sicher, dass der pod Befehl von CocoaPods in der PATH-Umgebungsvariablen Ihres Systems verfügbar ist.

Nachdem Sie die CocoaPods-Installation behoben haben, führen Sie im Ordner ios auspod install, um das Projekt zu beheben.

Wenn während react-native linkdie folgende CocoaPods-Fehlermeldung angezeigt wird, ist Ihr lokaler Klon (~/.cocoapods/repos auf Ihrem Computer) des CocoaPods-Spezifikationsrepositorys wahrscheinlich nicht auf dem neuesten Stand.

Analyzing dependencies [!] Unable to find a specification for AppCenterReactNativeShared (~> {version})

Führen Sie aus pod repo update , um das Spezifikationsrepository zu aktualisieren, und versuchen Sie es react-native link erneut. Weitere Informationen zu CocoaPods-Befehlen finden Sie unter CocoaPods-Befehlszeilenreferenz.

Aktualisieren der App mit dem App Center SDK von React Native 0.59 auf 0.60

Verwenden Sie den folgenden Befehl, um React Native auf Version 0.60.0 zu aktualisieren:

react-native upgrade 0.60.0

Hinweis

Wenn während eines Upgrades dieser Fehler angezeigt wird Command failed: git status -s fatal: not a git repository (or any of the parent directories): .git, führen Sie die nächsten Schritte aus:

git init
git add .
git commit -m "Upgrade react-native"

Nach Abschluss des Upgrades können Sie das .git Verzeichnis entfernen.

Aktualisieren React Native iOS

  1. Öffnen Sie Podfile, und ersetzen Sie App Center-Abhängigkeiten in der folgenden Zeile:

    use_native_modules!
    
  2. Führen Sie den folgenden Befehl aus:

    pod repo update
    

Aktualisieren React Native SDK auf die neueste Version

Wenn Sie unser SDK bereits in Ihre Anwendung integriert haben und ein Upgrade auf eine neuere Version des SDK durchführen möchten, führen Sie die folgenden Schritte aus, um ein Upgrade durchzuführen:

  1. npm uninstall --save appcenter appcenter-analytics appcenter-crashes , um alte App Center-Pakete zu deinstallieren.

  2. npm install --save-exact appcenter appcenter-analytics appcenter-crashes , um die neuesten App Center-Pakete zu installieren.

  3. pod repo update , um sicherzustellen, dass Ihr CocoaPods-Spezifikationsrepository auf dem neuesten Stand ist.

  4. react-native link.

Tipp

Wenn während react-native linkeine Fehlermeldung ähnlich der folgenden CocoaPods-Fehlermeldung angezeigt wird, löschen Sie die automatisch generierte Podfile.lock in Ihrem Ios-Ordner , und führen Sie sie erneut aus react-native link .

[!] Unable to satisfy the following requirements:

- `AppCenter/Core (= 1.0.0)` required by `Podfile.lock`
- `AppCenter/Core (= 1.0.0)` required by `AppCenter/Crashes (1.0.0)`
- `AppCenter/Core (= 1.0.0)` required by `AppCenter/Analytics (1.0.0)`
- `AppCenter/Core (= 1.0.1)` required by `AppCenterReactNativeShared (1.0.1)`

Migration von jCenter zu Maven Central

Aufgrund der Beendigung der jCenter-Unterstützung wurden alle unsere Assemblys in das Maven Central-Repository verschoben. Um App Center verwenden zu können, müssen Sie dem Repository in Ihrer Gradle-Datei wie folgt hinzufügen mavenCentral() :

repositories {
   google()
   mavenCentral()
}

Schützen des App Center-Geheimniswerts

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

Zum Abrufen vertraulicher Daten müssen Sie ein App-/ Benutzertoken bereitstellen, das auf der Clientseite generiert wird. Es gibt keine Möglichkeit, Daten auf clientseitiger Seite vollständig sicher zu machen.

Sie können die Sicherheit Ihrer App verbessern, indem Sie eine Umgebungsvariable verwenden, um das App-Geheimnis in Ihren Code einzufügen. Auf diese Weise ist das Geheimnis in Ihrem Code nicht sichtbar.