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:
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'
Ejecute
pod install
desde laiOS
carpeta .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"
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
- Seleccione <YOUR_APP> ->Libraries y quite los archivos siguientes:
React Native comando de vínculo no reconocido
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.
Asegúrese de que todos los
appcenter
paquetes usan la misma versión principal. Actualícelos connpm install
oyarn
si es necesario.Vaya a la carpeta ios del proyecto y quite Podfile.lock y la carpeta Pods .
Ejecute
pod install --repo-update
en la carpeta ios .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 link
y 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.
CocoaPods no puede encontrar una especificación para AppCenterReactNativeShared durante el vínculo nativo de React
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
Abra Podfile y reemplace las dependencias de App Center en la línea siguiente:
use_native_modules!
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:
npm uninstall --save appcenter appcenter-analytics appcenter-crashes
para desinstalar paquetes antiguos de App Center.npm install --save-exact appcenter appcenter-analytics appcenter-crashes
para instalar los paquetes más recientes de App Center.pod repo update
para asegurarse de que el repositorio de especificaciones de CocoaPods está actualizado.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.