Partager via


Résolution des problèmes liés au Kit de développement logiciel (SDK) React Native

Important

Visual Studio App Center a été mis hors service le 31 mars 2025, à l’exception des fonctionnalités d’analyse et de diagnostic, qui continueront d’être prises en charge jusqu’au 30 juin 2026. En savoir plus.

Fichier 'React/RCTDefines.h' introuvable

Cette erreur s’affiche lorsque les bibliothèques principales RN ne sont pas référencées correctement, ce qui peut être dû à différents types d’intégration ou de liaison de problèmes. Cela se produit souvent lorsque vous avez vos dépendances liées à l’aide d’un chemin relatif dans un podfile, plutôt que statiquement dans un projet.

Notre script de liaison prend uniquement en charge la façon standard de lier des pods, afin de résoudre le problème :

  1. Remplacez les dépendances dans votre Podfile par des chemins de liaison relatifs.

    Avant:

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

    Après :

    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. Exécutez pod install à partir du dossier iOS.

  3. Dans AppDelegate.m, remplacez les importations :

    Avant:

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

    Après :

    #import "AppCenterReactNative.h"
    #import "AppCenterReactNativeAnalytics.h"
    #import "AppCenterReactNativeCrashes.h"
    
  4. Supprimez les dépendances AppCenter du projet (cliquez avec le bouton droit sur la dépendance Supprimer la dépendance > ).

    • Sélectionnez <YOUR_APP> ->Bibliothèques et supprimez les fichiers suivants :
      • AppCenterReactNative.xcodeproj
      • AppCenterReactNativeAnalytics.xcodeproj
      • AppCenterReactNativeCrashes.xcodeproj
    • Ouvrez les paramètres de votre projet et, sous l’onglet Général , dans la section Infrastructures et bibliothèques liées , supprimez les nouveaux éléments référençant les bibliothèques cibles supprimées à l’étape précédente :
      • libAppCenterReactNative.a
      • libAppCenterReactNativeAnalytics.a
      • libAppCenterReactNativeCrashes.a
    • Modifiez les chemins de recherche d’en-tête pour supprimer les en-têtes des projets de plug-ins AppCenter React Native. Ouvrez les paramètres de votre projet et, sous l’onglet Paramètres de build , dans la section Chemins de recherche d’en-tête , supprimez les emplacements suivants pour les fichiers d’en-tête :
      • $(SRCROOT)/../node_modules/appcenter/ios/AppCenterReactNative
      • $(SRCROOT)/../node_modules/appcenter-analytics/ios/AppCenterReactNativeAnalytics
      • $(SRCROOT)/../node_modules/appcenter-crashes/ios/AppCenterReactNativeCrashes

Si vous avez yarn installé sur votre ordinateur, react-native init {myapp} initialisera votre application et installera les dépendances à l’aide yarn du lieu de npm. Si vous voyez le message d'erreur suivant lors de l'exécution de react-native link, il est probable que les dépendances d'App Center soient installées à partir de npm install {package} au lieu de yarn add {package}, ce qui entraîne un mélange entre npm et yarn pendant l'installation.

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

Dans ce cas, exécutez npm install et réessayez react-native link .

Erreur de compilation : fichier « AppCenterCrashes/MSACErrorReport.h » introuvable

React-Native 0,60 et versions ultérieures

La cause probable est le conflit entre les principales versions de package en raison d’un changement cassant dans notre Kit de développement logiciel (SDK) Apple.

  1. Assurez-vous que tous les appcenter packages utilisent la même version principale. Mettez-les à jour avec npm install ou yarn si nécessaire.

  2. Accédez au dossier ios de votre projet et supprimez Podfile.lock et le dossier Pods .

  3. Exécutez pod install --repo-update dans votre dossier iOS.

  4. Vérifiez que Podfile.lock contient appcenter des dépendances de la même version principale.

React Native inférieur à 0,60

L’une des causes possibles est lors de l’exécution react-native link sans CocoaPods installé.

Pour confirmer la cause, exécuter react-native link et dans les journaux, vérifiez la ligne suivante :

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

Cette ligne se trouve dans la section suivante des journaux :

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

Si vous voyez cette erreur, vérifiez que la commande de pod est disponible dans la variable d’environnement PATH de votre système.

Après avoir corrigé l’installation de CocoaPods , exécutez pod install le dossier ios pour corriger votre projet.

Si vous voyez le message d’erreur CocoaPods suivant pendant react-native link, il est probable que votre clone local (~/.cocoapods/repos sur votre ordinateur) du référentiel de spécification CocoaPods ne soit pas à jour.

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

Exécutez pod repo update pour mettre à jour le référentiel de spécifications, puis réessayez react-native link . Pour plus d'informations sur les commandes CocoaPods, consultez la référence de la ligne de commande CocoaPods.

Mise à niveau de l’application à l’aide du Kit de développement logiciel (SDK) App Center de React Native 0.59 à 0.60

Pour mettre à niveau React Native vers la version 0.60.0, utilisez la commande suivante :

react-native upgrade 0.60.0

Remarque

Si, pendant une mise à niveau, vous obtenez cette erreur Command failed: git status -s fatal: not a git repository (or any of the parent directories): .git, procédez comme suit :

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

Une fois la mise à niveau terminée, vous pouvez supprimer le .git répertoire.

Mettre à jour React Native iOS

  1. Ouvrez Podfile et remplacez les dépendances App Center sur la ligne suivante :

    use_native_modules!
    
  2. Exécutez la commande suivante:

    pod repo update
    

Comment mettre à jour le SDK React Native vers la dernière version

Si vous avez déjà intégré notre Kit de développement logiciel (SDK) à votre application et que vous souhaitez effectuer une mise à niveau vers une version plus récente du SDK, suivez les étapes suivantes pour effectuer la mise à niveau :

  1. npm uninstall --save appcenter appcenter-analytics appcenter-crashes pour désinstaller les anciens packages App Center.

  2. npm install --save-exact appcenter appcenter-analytics appcenter-crashes pour installer les derniers packages App Center.

  3. pod repo update pour vous assurer que votre dépôt de spécification CocoaPods est à jour.

  4. react-native link.

Conseil / Astuce

Si vous voyez un message d’erreur similaire au message d’erreur CocoaPods suivant pendant react-native link, supprimez le podfile.lock généré automatiquement dans votre dossier Ios et réexécutez 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 de jCenter vers Maven Central

En raison de la fin de la prise en charge de jCenter , tous nos assemblys ont été déplacés vers le dépôt Maven Central. Pour utiliser App Center, vous devez ajouter mavenCentral() au référentiel dans votre fichier Gradle comme ci-dessous :

repositories {
   google()
   mavenCentral()
}

Protéger la valeur secrète de l'App Center

Il app_secret s’agit d’un identificateur de votre application, il est nécessaire de connaître l’application à laquelle le trafic s’applique et il ne peut pas être utilisé pour récupérer ou modifier des données existantes. Si votre app_secret est exposé, le plus grand risque est d’envoyer des données incorrectes à votre application, mais cela n’aura pas d’effet sur la sécurité des données.

Pour récupérer des données sensibles, vous devez fournir un jeton d’application/utilisateur, qui est généré côté client. Il n’existe aucun moyen de sécuriser complètement les données côté client.

Vous pouvez améliorer la sécurité de votre application à l’aide d’une variable d’environnement pour injecter le secret d’application dans votre code. Ainsi, le secret n’est pas visible dans votre code.