Partager via


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

Important

Visual Studio App Center doit être mis hors service le 31 mars 2025. Bien que vous puissiez continuer à utiliser Visual Studio App Center jusqu’à ce qu’il soit entièrement mis hors service, il existe plusieurs alternatives recommandées vers lesquelles vous pouvez envisager de migrer.

En savoir plus sur les chronologies et les alternatives de support.

Fichier 'React/RCTDefines.h' introuvable

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

Notre script de liaison prend uniquement en charge la méthode standard de liaison 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 iOS dossier.

  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 de 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 de 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 de plutôt que de npm. Si vous voyez le message d’erreur suivant lors de l’exécution react-native linkde , il est probable que yarnnpm les dépendances App Center soient installées à partir de npm install {package} au lieu de yarn add {package} et soient mélangées 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 génération telle que le 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 SDK Apple.

  1. Assurez-vous que tous les appcenter packages utilisent la même version majeure. 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 majeure.

React Native inférieur à 0,60

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

Pour confirmer la cause, exécutez react-native linket dans les journaux, case activée pour 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 pod commande de CocoaPods est disponible dans la variable d’environnement PATH de votre système.

Une fois que vous avez résolu votre installation CocoaPods , exécutez pod install dans le dossier ios pour corriger votre projet.

Si vous voyez le message d’erreur CocoaPods suivant pendant react-native link, il y a de fortes chances 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 Informations de référence sur la ligne de commande CocoaPods.

Comment mettre à niveau une 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

Notes

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, effectuez les étapes suivantes :

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 React Native SDK 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 KIT de développement logiciel (SDK), procédez comme suit :

  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

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 l’arrêt de la prise en charge de jCenter , tous nos assemblys ont été déplacés vers le référentiel Maven Central. Pour utiliser App Center, vous devez ajouter mavenCentral() au dépôt dans votre fichier Gradle, comme ci-dessous :

repositories {
   google()
   mavenCentral()
}

Protéger la valeur de secret App Center

app_secret est un identificateur de votre application, il est nécessaire de savoir à quelle application 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é du côté du 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.