Share via


Solución de problemas del SDK de React Native

Importante

Visual Studio App Center está programado para la retirada el 31 de marzo de 2025. Aunque puede seguir usando Visual Studio App Center hasta que se retire por completo, hay varias alternativas recomendadas a las que puede considerar la posibilidad de migrar.

Obtenga más información sobre las escalas de tiempo de soporte técnico y las alternativas.

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

Este error aparece cuando no se hace referencia correctamente a las bibliotecas principales de RN, lo que puede deberse a diferentes tipos de problemas de integración o vinculación. A menudo sucede cuando tiene las dependencias vinculadas mediante la ruta de acceso 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 resolver el problema:

  1. Reemplace las dependencias de por Podfile rutas de acceso de vinculación 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 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 encabezados de los proyectos de complementos de AppCenter React Native. Abra la configuración del proyecto y, en la pestaña Configuración de compilación de 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 la máquina, 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, ejecute npm install e inténtelo de react-native link nuevo.

Error de compilación, como el 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 el SDK de Apple.

  1. Asegúrese de que todos los appcenter paquetes usan 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 cocoaPods durante react-native link, es probable que el clon local (~/.cocoapods/repos en la máquina) del repositorio de especificaciones 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 de react-native link nuevo. Para obtener más información sobre los comandos de CocoaPods, vea 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.

Actualizar 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 cocoaPods durante react-native link, elimine el podfile.lock generado automáticamente en la carpeta ios y vuelva a ejecutarse react-native link .

[!] 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 de jCenter, todos los ensamblados se movieron al repositorio de Maven Central. Para usar App Center, debe agregar mavenCentral() al repositorio en el archivo gradle como se indica a continuación:

repositories {
   google()
   mavenCentral()
}

Protección del 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. app_secret Si se expone, el mayor riesgo es enviar datos incorrectos a la aplicación, pero no tendrá ningún efecto en la seguridad de los datos.

Para recuperar los datos confidenciales, debe 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.