Rozwiązywanie problemów z zestawem SDK React Native

Ważne

Program Visual Studio App Center ma zostać wycofany 31 marca 2025 r. Chociaż możesz nadal używać programu Visual Studio App Center do momentu jego pełnego wycofania, istnieje kilka zalecanych alternatyw, do których można rozważyć migrację.

Dowiedz się więcej o osiach czasu pomocy technicznej i alternatywach.

Nie można odnaleźć pliku "React/RCTDefines.h"

Ten błąd pojawia się, gdy biblioteki podstawowe RN nie są poprawnie przywoływane, co może być spowodowane różnymi rodzajami problemów z integracją lub łączeniem. Często zdarza się to, gdy masz połączone zależności przy użyciu ścieżki względnej w pliku podfile, a nie statycznie w projekcie.

Nasz skrypt łączenia obsługuje tylko standardowy sposób łączenia zasobników, aby rozwiązać problem:

  1. Zastąp zależności w pliku Podfile względnymi ścieżkami łączenia:

    Przed:

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

    Po:

    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. Uruchom polecenie pod install z iOS folderu.

  3. Wewnątrz pliku AppDelegate.m zastąp importy:

    Przed:

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

    Po:

    #import "AppCenterReactNative.h"
    #import "AppCenterReactNativeAnalytics.h"
    #import "AppCenterReactNativeCrashes.h"
    
  4. Usuń zależności AppCenter z projektu (kliknij prawym przyciskiem myszy zależność > Usuń zależność).

    • Wybierz <pozycję YOUR_APP> ->Libraries (Biblioteki ) i usuń następne pliki:
      • AppCenterReactNative.xcodeproj
      • AppCenterReactNativeAnalytics.xcodeproj
      • AppCenterReactNativeCrashes.xcodeproj
    • Otwórz ustawienia projektu i na karcie Ogólne w sekcji Połączone struktury i biblioteki usuń nowe elementy odwołujące się do bibliotek docelowych usuniętych w poprzednim kroku:
      • libAppCenterReactNative.a
      • libAppCenterReactNativeAnalytics.a
      • libAppCenterReactNativeCrashes.a
    • Zmodyfikuj ścieżki wyszukiwania nagłówków, aby usunąć nagłówki z projektów wtyczek React Native AppCenter. Otwórz ustawienia projektu i na karcie Ustawienia kompilacji w sekcji Ścieżki wyszukiwania nagłówków usuń następujące lokalizacje dla plików nagłówków:
      • $(SRCROOT)/../node_modules/appcenter/ios/AppCenterReactNative
      • $(SRCROOT)/../node_modules/appcenter-analytics/ios/AppCenterReactNativeAnalytics
      • $(SRCROOT)/../node_modules/appcenter-crashes/ios/AppCenterReactNativeCrashes

yarn Jeśli zainstalowano aplikację na komputerze, react-native init {myapp} zainicjuje aplikację i zainstaluje zależności przy użyciu yarn zamiast npm. Jeśli podczas uruchamiania react-native linkprogramu zostanie wyświetlony następujący komunikat o błędzie, istnieje prawdopodobieństwo, że zależności centrum aplikacji są zainstalowane npm install {package} zamiast yarn add {package} tak, że npm i yarn są mieszane podczas instalacji.

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

W takim przypadku uruchom polecenie npm install i spróbuj react-native link ponownie.

Nie można odnaleźć błędu kompilacji, takiego jak plik "AppCenterCrashes/MSACErrorReport.h"

React-Native 0,60 i nowszych

Prawdopodobną przyczyną jest konflikt między głównymi wersjami pakietów z powodu zmiany powodującej niezgodność w zestawie APPLE SDK.

  1. Upewnij się, że wszystkie appcenter pakiety używają tej samej wersji głównej. Zaktualizuj je przy użyciu npm install polecenia lub yarn w razie potrzeby.

  2. Przejdź do folderu ios projektu i usuń plik Podfile.lock i folder Zasobniki .

  3. Uruchom polecenie pod install --repo-update w folderze systemu ios .

  4. Sprawdź, czy plik Podfile.lock zawiera appcenter zależności tej samej wersji głównej.

React Native niższe niż 0,60

Jedną z możliwych przyczyn jest uruchomienie bez react-native link zainstalowanego narzędzia CocoaPods .

Aby potwierdzić przyczynę, wykonaj polecenie react-native linki w dziennikach, sprawdź następujący wiersz:

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

Ten wiersz znajduje się w następującej sekcji dzienników:

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

Jeśli widzisz ten błąd, upewnij się, że pod polecenie z narzędzia CocoaPods jest dostępne w zmiennej środowiskowej PATH systemu.

Po naprawieniu instalacji narzędzia CocoaPods uruchom polecenie pod install w folderze systemu ios , aby naprawić projekt.

Jeśli podczas wykonywania react-native linkpolecenia zostanie wyświetlony następujący komunikat o błędzie CocoaPods, prawdopodobieństwo, że klon lokalny (~/.cocoapods/repos na maszynie) repozytorium specyfikacji CocoaPods nie jest aktualne.

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

Uruchom polecenie pod repo update , aby zaktualizować repozytorium specyfikacji i spróbuj react-native link ponownie. Aby uzyskać więcej informacji na temat poleceń cocoaPods, zobacz CocoaPods command line reference (Dokumentacja wiersza polecenia cocoaPods).

Jak uaktualnić aplikację przy użyciu zestawu SDK centrum aplikacji z React Native 0.59 do 0.60

Aby uaktualnić React Native do wersji 0.60.0, użyj następującego polecenia:

react-native upgrade 0.60.0

Uwaga

Jeśli podczas uaktualniania wystąpi ten błąd Command failed: git status -s fatal: not a git repository (or any of the parent directories): .git, wykonaj następujące kroki:

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

Po zakończeniu uaktualniania .git możesz usunąć katalog.

Aktualizowanie React Native systemu iOS

  1. Otwórz plik Podfile i zastąp zależności usługi App Center w następującym wierszu:

    use_native_modules!
    
  2. Uruchom następujące polecenie:

    pod repo update
    

Jak zaktualizować zestaw SDK React Native do najnowszej wersji

Jeśli zestaw SDK został już zintegrowany z aplikacją i chcesz uaktualnić go do nowszej wersji zestawu SDK, wykonaj następujące kroki, aby uaktualnić:

  1. npm uninstall --save appcenter appcenter-analytics appcenter-crashes aby odinstalować stare pakiety usługi App Center.

  2. npm install --save-exact appcenter appcenter-analytics appcenter-crashes aby zainstalować najnowsze pakiety usługi App Center.

  3. pod repo update aby upewnić się, że repozytorium spec CocoaPods jest aktualne.

  4. react-native link.

Porada

Jeśli podczas wykonywania react-native linkpolecenia zostanie wyświetlony komunikat o błędzie podobny do następującego komunikatu o błędzie CocoaPods, usuń automatycznie wygenerowany plik Podfile.lock w folderze systemu ios i uruchom react-native link go ponownie.

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

Migracja z programu jCenter do usługi Maven Central

Ze względu na zakończenie obsługi programu jCenter wszystkie nasze zestawy zostały przeniesione do repozytorium Maven Central. Aby użyć usługi App Center, musisz dodać mavenCentral() element do repozytorium w pliku narzędzia Gradle w następujący sposób:

repositories {
   google()
   mavenCentral()
}

Ochrona wartości wpisu tajnego centrum aplikacji

Jest app_secret to identyfikator aplikacji, który musi wiedzieć, której aplikacji dotyczy ruch, i nie można jej użyć do pobrania ani edytowania istniejących danych. Jeśli dane app_secret są narażone, największym ryzykiem jest wysłanie nieprawidłowych danych do aplikacji, ale nie będzie miało to wpływu na bezpieczeństwo danych.

Aby pobrać wszelkie poufne dane, należy podać token aplikacji/użytkownika, który jest generowany po stronie klienta. Nie ma możliwości całkowitego zabezpieczenia danych po stronie klienta.

Bezpieczeństwo aplikacji można poprawić przy użyciu zmiennej środowiskowej w celu wstrzyknięcia wpisu tajnego aplikacji do kodu. Dzięki temu wpis tajny nie jest widoczny w kodzie.