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.
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:
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'
Führen Sie
pod install
aus dem Ordner ausiOS
.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"
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
- Wählen Sie <YOUR_APP> ->Libraries aus, und entfernen Sie die nächsten Dateien:
React Native Linkbefehl nicht erkannt
Wenn Sie auf Ihrem Computer installiert haben yarn
, react-native init {myapp}
initialisiert Ihre App und installiert Abhängigkeiten mit yarn
anstelle npm
von . Wenn bei der Ausführung die folgende Fehlermeldung angezeigt react-native link
wird, besteht die Wahrscheinlichkeit, dass npm
yarn
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.
Stellen Sie sicher, dass alle
appcenter
Pakete dieselbe Hauptversion verwenden. Aktualisieren Sie sie bei Bedarf mitnpm install
oderyarn
.Wechseln Sie zum Ordner ios Ihres Projekts, und entfernen Sie Podfile.lock und den Ordner Pods .
Führen Sie
pod install --repo-update
in Ihrem Ios-Ordner aus.Ü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 link
aus, 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.
CocoaPods konnte während des react-nativen Links keine Spezifikation für AppCenterReactNativeShared finden.
Wenn während react-native link
die 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
Öffnen Sie Podfile, und ersetzen Sie App Center-Abhängigkeiten in der folgenden Zeile:
use_native_modules!
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:
npm uninstall --save appcenter appcenter-analytics appcenter-crashes
, um alte App Center-Pakete zu deinstallieren.npm install --save-exact appcenter appcenter-analytics appcenter-crashes
, um die neuesten App Center-Pakete zu installieren.pod repo update
, um sicherzustellen, dass Ihr CocoaPods-Spezifikationsrepository auf dem neuesten Stand ist.react-native link
.
Tipp
Wenn während react-native link
eine 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.