Condividi tramite


Risoluzione dei problemi di React Native SDK

Importante

Visual Studio App Center è pianificato per il ritiro il 31 marzo 2025. Anche se è possibile continuare a usare Visual Studio App Center fino a quando non viene completamente ritirato, esistono diverse alternative consigliate a cui è possibile prendere in considerazione la migrazione.

Altre informazioni sulle sequenze temporali di supporto e sulle alternative.

File 'React/RCTDefines.h' non trovato

Questo errore viene visualizzato quando le librerie principali RN non fanno riferimento correttamente, che possono essere causate da diversi tipi di problemi di integrazione o collegamento. Spesso si verifica quando le dipendenze sono collegate usando il percorso relativo in un podfile, anziché in modo statico in un progetto.

Lo script di collegamento supporta solo il modo standard per collegare i pod, in modo da risolvere il problema:

  1. Sostituire le dipendenze nell'oggetto Podfile con i percorsi di collegamento relativi:

    Prima di:

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

    Dopo:

    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. Eseguire pod install dalla iOS cartella .

  3. All'interno di AppDelegate.m sostituire le importazioni:

    Prima di:

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

    Dopo:

    #import "AppCenterReactNative.h"
    #import "AppCenterReactNativeAnalytics.h"
    #import "AppCenterReactNativeCrashes.h"
    
  4. Rimuovere le dipendenze di AppCenter dal progetto (fare clic con il pulsante destro del mouse sulla dipendenza > Rimuovi dipendenza).

    • Selezionare <YOUR_APP> ->Libraries (Librerie ) e rimuovere i file successivi:
      • AppCenterReactNative.xcodeproj
      • AppCenterReactNativeAnalytics.xcodeproj
      • AppCenterReactNativeCrashes.xcodeproj
    • Aprire le impostazioni del progetto e nella scheda Generale nella sezione Framework e librerie collegati rimuovere i nuovi elementi che fanno riferimento alle librerie di destinazione rimosse nel passaggio precedente:
      • libAppCenterReactNative.a
      • libAppCenterReactNativeAnalytics.a
      • libAppCenterReactNativeCrashes.a
    • Modificare i percorsi di ricerca intestazione per rimuovere le intestazioni dai progetti appCenter React Native plug-in. Aprire le impostazioni del progetto e nella scheda Impostazioni di compilazione nella sezione Percorsi di ricerca intestazione rimuovere i percorsi seguenti per i file di intestazione:
      • $(SRCROOT)/../node_modules/appcenter/ios/AppCenterReactNative
      • $(SRCROOT)/../node_modules/appcenter-analytics/ios/AppCenterReactNativeAnalytics
      • $(SRCROOT)/../node_modules/appcenter-crashes/ios/AppCenterReactNativeCrashes

Se è yarn stato installato nel computer, react-native init {myapp} inizializzerà l'app e installerà le dipendenze usando yarn anziché npm. Se viene visualizzato il messaggio di errore seguente durante l'esecuzione react-native linkdi , è probabile che le dipendenze di App Center vengano installate da npm install {package} anziché yarn add {package} in modo che npm e yarn vengano miste durante l'installazione.

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

In questo caso, eseguire npm install e riprovare react-native link .

Errore di compilazione, ad esempio il file 'AppCenterCrashes/MSACErrorReport.h' non trovato

React-Native 0,60 e versioni successive

La causa probabile è il conflitto tra le versioni principali del pacchetto a causa di una modifica sostanziale nell'SDK apple.

  1. Assicurarsi che tutti i appcenter pacchetti usino la stessa versione principale. Aggiornarli con npm install o yarn se necessario.

  2. Passare alla cartella ios del progetto e rimuovere Podfile.lock e la cartella Pods .

  3. Eseguire pod install --repo-update nella cartella ios .

  4. Verificare che Podfile.lock contenga appcenter dipendenze della stessa versione principale.

React Native inferiore a 0,60

Una possibile causa è l'esecuzione react-native link senza CocoaPods installato.

Per confermare la causa, eseguire react-native linke nei log, verificare la riga seguente:

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

Questa riga si trova nella sezione seguente dei log:

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

Se viene visualizzato l'errore, assicurarsi che il pod comando di CocoaPods sia disponibile nella variabile di ambiente PATH del sistema.

Dopo aver corretto l'installazione di CocoaPods , eseguire pod install nella cartella ios per correggere il progetto.

Se viene visualizzato il seguente messaggio di errore CocoaPods durante react-native link, è probabile che il clone locale (~/.cocoapods/repos nel computer) del repository della specifica CocoaPods non sia aggiornato .

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

Eseguire pod repo update per aggiornare il repository della specifica e riprovare react-native link . Per altre informazioni sui comandi CocoaPods, vedere CocoaPods command line reference (Informazioni di riferimento sulla riga di comando di CocoaPods).

Come aggiornare l'app con App Center SDK da React Native 0.59 a 0.60

Per aggiornare React Native alla versione 0.60.0, usare il comando seguente:

react-native upgrade 0.60.0

Nota

Se durante un aggiornamento viene visualizzato questo errore Command failed: git status -s fatal: not a git repository (or any of the parent directories): .git, seguire questa procedura:

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

Al termine dell'aggiornamento, è possibile rimuovere la .git directory.

Aggiornare React Native iOS

  1. Aprire Podfile e sostituire le dipendenze di App Center nella riga seguente:

    use_native_modules!
    
  2. Eseguire il comando seguente:

    pod repo update
    

Come aggiornare React Native SDK alla versione più recente

Se l'SDK è già stato integrato nell'applicazione e si vuole eseguire l'aggiornamento a una versione più recente dell'SDK, seguire questa procedura per eseguire l'aggiornamento:

  1. npm uninstall --save appcenter appcenter-analytics appcenter-crashes per disinstallare i pacchetti precedenti di App Center.

  2. npm install --save-exact appcenter appcenter-analytics appcenter-crashes per installare i pacchetti più recenti di App Center.

  3. pod repo update per assicurarsi che il repository della specifica CocoaPods sia aggiornato.

  4. react-native link.

Suggerimento

Se viene visualizzato un messaggio di errore simile al seguente messaggio di errore CocoaPods durante react-native link, eliminare il podfile.lock generato automaticamente nella cartella ios ed eseguire react-native link di nuovo.

[!] 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)`

Migrazione da jCenter a Maven Central

A causa della chiusura del supporto di jCenter , tutti gli assembly sono stati spostati nel repository Maven Central. Per usare App Center, è necessario aggiungere mavenCentral() al repository nel file Gradle come indicato di seguito:

repositories {
   google()
   mavenCentral()
}

Proteggere il valore del segreto di App Center

app_secret è un identificatore dell'app, è necessario sapere a quale app si applica il traffico e non può essere usata per recuperare o modificare i dati esistenti. app_secret Se l'utente è esposto, il rischio maggiore è l'invio di dati non validi all'app, ma non avrà alcun effetto sulla sicurezza dei dati.

Per recuperare i dati sensibili, è necessario fornire un token app/utente generato sul lato del client. Non è possibile rendere completamente sicuri i dati sul lato client.

È possibile migliorare la sicurezza dell'app usando una variabile di ambiente per inserire il segreto dell'app nel codice. In questo modo, il segreto non è visibile nel codice.