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:
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'
Uruchom polecenie
pod install
ziOS
folderu.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"
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
- Wybierz <pozycję YOUR_APP> ->Libraries (Biblioteki ) i usuń następne pliki:
React Native nierozpoznane polecenie linku
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 link
programu 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.
Upewnij się, że wszystkie
appcenter
pakiety używają tej samej wersji głównej. Zaktualizuj je przy użyciunpm install
polecenia lubyarn
w razie potrzeby.Przejdź do folderu ios projektu i usuń plik Podfile.lock i folder Zasobniki .
Uruchom polecenie
pod install --repo-update
w folderze systemu ios .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 link
i 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.
CocoaPods nie może znaleźć specyfikacji appCenterReactNativeShared podczas linku natywnego react
Jeśli podczas wykonywania react-native link
polecenia 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
Otwórz plik Podfile i zastąp zależności usługi App Center w następującym wierszu:
use_native_modules!
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ć:
npm uninstall --save appcenter appcenter-analytics appcenter-crashes
aby odinstalować stare pakiety usługi App Center.npm install --save-exact appcenter appcenter-analytics appcenter-crashes
aby zainstalować najnowsze pakiety usługi App Center.pod repo update
aby upewnić się, że repozytorium spec CocoaPods jest aktualne.react-native link
.
Porada
Jeśli podczas wykonywania react-native link
polecenia 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.