Compartir a través de


Solución de problemas del SDK nativo de React

Importante

Visual Studio App Center se retiró el 31 de marzo de 2025, excepto las características de análisis y diagnóstico, que seguirán siendo compatibles hasta el 30 de junio de 2026. Más información.

No se encontró el archivo 'React/RCTDefines.h'

Este error aparece cuando no se referencian correctamente las bibliotecas principales de React Native, lo cual podría deberse a diferentes problemas de integración o vinculación. A menudo sucede cuando tiene las dependencias vinculadas mediante la ruta relativa en un Podfile, en lugar de estáticamente en un proyecto.

Nuestro script de vinculación solo admite la forma estándar de vincular pods, por lo que para resolver el problema:

  1. Reemplace las dependencias en su Podfile con rutas relativas.

    Antes:

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

    Despué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. Ejecute pod install desde la iOS carpeta .

  3. Dentro de AppDelegate.m, reemplace las importaciones:

    Antes:

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

    Después:

    #import "AppCenterReactNative.h"
    #import "AppCenterReactNativeAnalytics.h"
    #import "AppCenterReactNativeCrashes.h"
    
  4. Quite las dependencias de AppCenter del proyecto (haga clic con el botón derecho en la dependencia > Quitar dependencia).

    • Seleccione <YOUR_APP> ->Libraries (Bibliotecas ) y quite los archivos siguientes:
      • AppCenterReactNative.xcodeproj
      • AppCenterReactNativeAnalytics.xcodeproj
      • AppCenterReactNativeCrashes.xcodeproj
    • Abra la configuración del proyecto y, en la pestaña General , en la sección Marcos vinculados y bibliotecas , quite los nuevos elementos que hacen referencia a las bibliotecas de destino quitadas en el paso anterior:
      • libAppCenterReactNative.a
      • libAppCenterReactNativeAnalytics.a
      • libAppCenterReactNativeCrashes.a
    • Modifique las rutas de búsqueda de encabezados para quitar los encabezados de los proyectos de complementos nativos de AppCenter React. Abra la configuración del proyecto y, en la pestaña Configuración de compilación, en la sección Rutas de búsqueda de encabezado, quite las siguientes ubicaciones para los archivos de encabezado:
      • $(SRCROOT)/../node_modules/appcenter/ios/AppCenterReactNative
      • $(SRCROOT)/../node_modules/appcenter-analytics/ios/AppCenterReactNativeAnalytics
      • $(SRCROOT)/../node_modules/appcenter-crashes/ios/AppCenterReactNativeCrashes

Si ha yarn instalado en el equipo, react-native init {myapp} inicializará la aplicación e instalará las dependencias mediante yarn en lugar de npm. Si ve el siguiente mensaje de error al ejecutar react-native link, es probable que las dependencias de App Center se instalen desde npm install {package} en lugar de yarn add {package} para que npm y yarn se mezclan durante la instalación.

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

En este caso, corra npm install e inténtelo react-native link de nuevo.

Error de compilación: archivo "AppCenterCrashes/MSACErrorReport.h" no encontrado

React-Native 0,60 y versiones posteriores

La causa probable es el conflicto entre las versiones principales del paquete debido a un cambio importante en nuestro SDK de Apple.

  1. Asegúrese de que todos los appcenter paquetes usen la misma versión principal. Actualícelos con npm install o yarn si es necesario.

  2. Vaya a la carpeta ios del proyecto y quite Podfile.lock y la carpeta Pods .

  3. Ejecute pod install --repo-update en la carpeta ios .

  4. Compruebe que Podfile.lock contiene appcenter dependencias de la misma versión principal.

React Native inferior a 0,60

Una posible causa es cuando se ejecuta react-native link sin CocoaPods instalado.

Para confirmar la causa, ejecute react-native linky en los registros, compruebe la siguiente línea:

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

Esta línea se encuentra en la sección siguiente de los registros:

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 ve ese error, asegúrese de que el pod comando de CocoaPods está disponible en la variable de entorno PATH del sistema.

Después de corregir la instalación de CocoaPods , ejecute pod install en la carpeta ios para corregir el proyecto.

Si ve el siguiente mensaje de error de CocoaPods durante react-native link, es probable que el clon local (~/.cocoapods/repos en la máquina) del repositorio de especificaciones de CocoaPods no esté actualizado.

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

Ejecute pod repo update para actualizar el repositorio de especificaciones e inténtelo react-native link de nuevo. Para obtener más información sobre los comandos de CocoaPods, consulte la Referencia de línea de comandos de CocoaPods.

Actualización de la aplicación mediante el SDK de App Center de React Native 0.59 a 0.60

Para actualizar React Native a la versión 0.60.0, use el siguiente comando:

react-native upgrade 0.60.0

Nota:

Si durante una actualización recibe este error Command failed: git status -s fatal: not a git repository (or any of the parent directories): .git, realice los pasos siguientes:

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

Después de finalizar la actualización, puede quitar el .git directorio.

Actualización de React Native iOS

  1. Abra Podfile y reemplace las dependencias de App Center en la línea siguiente:

    use_native_modules!
    
  2. Ejecute el siguiente comando:

    pod repo update
    

Actualización del SDK de React Native a la versión más reciente

Si ya ha integrado nuestro SDK en la aplicación y quiere actualizar a una versión más reciente del SDK, siga estos pasos para actualizar:

  1. npm uninstall --save appcenter appcenter-analytics appcenter-crashes para desinstalar paquetes antiguos de App Center.

  2. npm install --save-exact appcenter appcenter-analytics appcenter-crashes para instalar los paquetes más recientes de App Center.

  3. pod repo update para asegurarse de que el repositorio de especificaciones de CocoaPods está actualizado.

  4. react-native link.

Sugerencia

Si ve un mensaje de error similar al siguiente mensaje de error de CocoaPods durante react-native link, elimine el Podfile.lock generado automáticamente en la carpeta ios y ejecute react-native link nuevamente.

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

Migración de jCenter a Maven Central

Debido a la finalización del soporte de jCenter, todos nuestros ensambles se movieron al repositorio de Maven Central. Para usar App Center, debe agregar mavenCentral() al repositorio en el archivo de Gradle como se indica a continuación:

repositories {
   google()
   mavenCentral()
}

Protege el valor del secreto de App Center

app_secret es un identificador de la aplicación, es necesario saber a qué aplicación se aplica el tráfico y no se puede usar para recuperar o editar datos existentes. Si su app_secret está expuesto, el mayor riesgo es enviar datos incorrectos a su aplicación, pero no tendrá ningún efecto en la seguridad de los datos.

Para recuperar cualquier dato confidencial, tendría que proporcionar un token de aplicación o usuario, que se genera en el lado del cliente. No hay ninguna manera de proteger completamente los datos en el lado del cliente.

Puede mejorar la seguridad de la aplicación mediante una variable de entorno para insertar el secreto de la aplicación en el código. De este modo, el secreto no es visible en el código.