Megosztás a következőn keresztül:


A React natív SDK hibaelhárítása

Fontos

A Visual Studio App Center 2025. március 31-én megszűnt, kivéve az Elemzési és diagnosztikai funkciókat, amelyek 2026. június 30-ig továbbra is támogatottak lesznek. Tudj meg többet.

A React/RCTDefines.h fájl nem található

Ez a hiba akkor jelenik meg, ha a rendszer nem megfelelően hivatkozik az RN-alapkódtárakra, amelyet különböző integrálási vagy csatolási problémák okozhatnak. Ez gyakran akkor fordul elő, ha a függőségek relatív elérési úttal vannak összekapcsolva egy podfájlban, nem pedig statikusan egy projektben.

A csatolási szkriptünk csak a podok csatolásának szabványos módját támogatja, így megoldhatja a problémát:

  1. Cserélje le a függőségeket Podfile relatív csatolási útvonalakra:

    Előtte:

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

    Utána:

    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. Futtassa pod install a(z) iOS mappából.

  3. Az AppDelegate.m-en belül cserélje le az importokat:

    Előtte:

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

    Utána:

    #import "AppCenterReactNative.h"
    #import "AppCenterReactNativeAnalytics.h"
    #import "AppCenterReactNativeCrashes.h"
    
  4. Távolítsa el az AppCenter-függőségeket a projektből (kattintson a jobb gombbal a függőségre > Függőség eltávolítása >).

    • Válassza a <YOUR_APP> ->Libraries lehetőséget, és távolítsa el a következő fájlokat:
      • AppCenterReactNative.xcodeproj
      • AppCenterReactNativeAnalytics.xcodeproj
      • AppCenterReactNativeCrashes.xcodeproj
    • Nyissa meg a projekt beállításait, és a Csatolt keretrendszerek és tárak szakasz Általános lapja alatt távolítsa el az előző lépésben eltávolított céltárakra hivatkozó új elemeket:
      • libAppCenterReactNative.a
      • libAppCenterReactNativeAnalytics.a
      • libAppCenterReactNativeCrashes.a
    • Módosítsa a fejléckeresési útvonalakat , hogy eltávolítsa a fejléceket az AppCenter React natív beépülő modulprojektjeiből. Nyissa meg a projekt beállításait, és a Fejléckeresési útvonalak szakasz Buildbeállítások lapján távolítsa el a fejlécfájlok következő helyeit:
      • $(SRCROOT)/../node_modules/appcenter/ios/AppCenterReactNative
      • $(SRCROOT)/../node_modules/appcenter-analytics/ios/AppCenterReactNativeAnalytics
      • $(SRCROOT)/../node_modules/appcenter-crashes/ios/AppCenterReactNativeCrashes

Ha yarn van telepítve a gépén, akkor a react-native init {myapp} inicializálja az alkalmazást és a függőségeket ahelyett, hogy a yarn, a npm használatával telepíti. Ha a futtatáskor react-native linka következő hibaüzenet jelenik meg, valószínű, hogy az App Center-függőségek nem így vannak telepítve npm install {package}yarn add {package} , npm és yarn a telepítés során vegyesek lesznek.

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

Ebben az esetben futtassa npm install , majd próbálkozzon react-native link újra.

Az "AppCenterCrashes/MSACErrorReport.h" típusú buildelési hiba nem található

React-Native 0,60 vagy újabb

Ennek valószínű oka a főbb csomagverziók közötti ütközés, amely az Apple SDK kompatibilitástörő változása miatt fordul elő.

  1. Győződjön meg arról, hogy minden appcenter csomag ugyanazt a főverziót használja. Frissítse őket npm install-val vagy yarn-val, ha szükséges.

  2. Nyissa meg a projekt ios mappáját, és távolítsa el a Podfile.lock és a Pods mappát.

  3. Futtassa pod install --repo-update az ios-mappában .

  4. Ellenőrizze, hogy a Podfile.lock ugyanahhoz a főverzióhoz tartozó függőségeket tartalmaz-e appcenter .

A React Natív 0,60-nál kisebb

Az egyik lehetséges ok az, ha a react-native link telepítése nélkül fut.

Az ok megerősítéséhez futtassa a react-native link parancsot, majd a naplókban keresse a következő sort:

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

Ez a sor a naplók következő szakaszában található:

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

Ha ezt a hibát látja, győződjön meg arról, hogy a podCocoaPods parancsa elérhető a rendszer PATH környezeti változójában.

A CocoaPods telepítése után futtassa pod install az ios mappában a projekt kijavításához.

Ha a következő CocoaPods-hibaüzenet jelenik meg a cocoaPods soránreact-native link, valószínű, hogy a ~/.cocoapods/repos (a gépen) nem naprakész.

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

Futtassa pod repo update a spec adattár frissítéséhez, majd próbálkozzon react-native link újra. A CocoaPods-parancsokról további információt a CocoaPods parancssori hivatkozásában talál.

Alkalmazás frissítése az App Center SDK-val a React Natív 0.59-ről 0.60-ra

A React Native 0.60.0-s verziójára való frissítéséhez használja a következő parancsot:

react-native upgrade 0.60.0

Megjegyzés:

Ha egy frissítés során ez a hiba Command failed: git status -s fatal: not a git repository (or any of the parent directories): .gitjelenik meg, hajtsa végre a következő lépéseket:

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

A frissítés befejezése után eltávolíthatja a könyvtárat .git .

A React natív iOS frissítése

  1. Nyissa meg a Podfile-t , és cserélje le az App Center függőségeit a következő sorban:

    use_native_modules!
    
  2. Futtassa a következő parancsot:

    pod repo update
    

A React Natív SDK frissítése a legújabb verzióra

Ha már integrálta az SDK-t az alkalmazásba, és az SDK újabb verziójára szeretne frissíteni, a frissítéshez kövesse az alábbi lépéseket:

  1. npm uninstall --save appcenter appcenter-analytics appcenter-crashes a régi App Center-csomagok eltávolításához.

  2. npm install --save-exact appcenter appcenter-analytics appcenter-crashes a legújabb App Center-csomagok telepítéséhez.

  3. pod repo update biztosítsd, hogy a CocoaPods spec adattár naprakész legyen.

  4. react-native link.

Jótanács

Ha a következő CocoaPods-hibaüzenethez hasonló hibaüzenet jelenik meg, react-native linktörölje az automatikusan létrehozott Podfile.lock fájlt az ios mappában , és futtassa react-native link újra.

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

Migrálás a jCenterből a Maven Centralba

A jCenter támogatásának megszűnése miatt az összes szerelvényeket áthelyeztük a Maven Central-adattárba. Az App Center használatához hozzá kell adnia mavenCentral() az adattárhoz a Gradle-fájlban, az alábbiakhoz hasonlóan:

repositories {
   google()
   mavenCentral()
}

Az App Center titkos kódértékének védelme

Az app_secret alkalmazás azonosítója, tudnia kell, hogy melyik alkalmazásra vonatkozik a forgalom, és nem használható a meglévő adatok lekérésére vagy szerkesztésére. Ha a app_secret rendszer nyilvánosságra kerül, a legnagyobb kockázat az, hogy rossz adatokat küld az alkalmazásnak, de ez nem befolyásolja az adatok biztonságát.

A bizalmas adatok lekéréséhez meg kell adnia egy alkalmazás-/felhasználói jogkivonatot, amely az ügyfél oldalán jön létre. Az ügyfél oldalán nem lehet teljesen biztonságossá tenni az adatokat.

Az alkalmazás biztonságát úgy javíthatja, hogy egy környezeti változóval beszúrja az alkalmazás titkos kódját a kódba. Így a titkos kód nem látható a kódban.