Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrar versión de SDK de Expo a la versión 51 #26

Closed
5 tasks done
suehtemorp opened this issue Jun 1, 2024 · 3 comments
Closed
5 tasks done

Migrar versión de SDK de Expo a la versión 51 #26

suehtemorp opened this issue Jun 1, 2024 · 3 comments
Assignees
Labels
help wanted Extra attention is needed

Comments

@suehtemorp
Copy link
Collaborator

suehtemorp commented Jun 1, 2024

Resumen

Migrar el SDK de Expo de v50 a v51, junto a los paquetes y sus dependencias a versiones compatibles con él.

Justificación

Migración de SDK de Expo:

  • Para poder ejecutar un proyecto de Expo nativamente, es común utilizar la plataforma de Expo en móvil mediante la aplicación Expo Go.
  • Expo Go únicamente soporta la última versión del SDK en release según lo indica la documentación oficial de migración
  • Para poder ejecutar Expo Go en modo de desarrollador nativamente, el projecto debe entonces utilizar la última versión del SDK de Expo Go.

Eliminación de Flipper:

  • Según el RFC0641, la funcionalidad de debugging que ofrece Flipper será des-acoplada del núcleo de React Native y eliminada de sus dependencias.
  • La versión de React Native (v.0.74) que es compatible con la última versión del SDK de Expo se suscribe a las indicaciones del RFC anterior.
  • Expo utiliza Flipper por defecto en Android según lo indica la documentación oficial pero aún así puede ser deshabilitado.
  • No deshabilitarlo en Expo puede llevar a problemas de compilación, como ejemplifica este PR de Facebook

Correcciones

  • Migrar SDK.
  • Migrar paquetes.
  • Deshabilitar Flipper.
  • Regenerar configuración de prebuild.
  • Actualizar NDK para construcción.

Validación

Esta es la configuración de entorno relevante bajo la cual logré compilar y ejecutar la aplicación.

Plataformas de SDK:

  • Android SDK Platform: 34 (UpsideDownCake) y 13 (Tiramisu).
  • Sources for Android: 34 y 33.

Herramientas de SDK:

  • NDK: 26.1.10909125 y 26.3.11579264 (ambas Side-by-side).
  • Cmake: 3.22.1.
  • Android SDK Build Tools: 34, 33.0.1 y 33.0.0.
  • Android SDK Command-line Tools: latest (12.0).

Notas

  • Es posible que los paquetes actualizados introduzcan breaking changes. Se debe de hacer una valorización por cada funcionalidad.
  • Vale la pena eliminar el caché y prebuild (mediante npx expo prebuild --clean) si el proceso de build local (npx expo run:android) fracasa.
  • Es importante cerciorar un toolchain compatible. Especialmente el NDK y SDK
@suehtemorp suehtemorp self-assigned this Jun 1, 2024
@suehtemorp suehtemorp added the help wanted Extra attention is needed label Jun 1, 2024
@suehtemorp suehtemorp linked a pull request Jun 5, 2024 that will close this issue
@suehtemorp
Copy link
Collaborator Author

Gracias a @lizethcorrales descubrimos que una advertencia emerge:
Warning: TextInputComponent: Support for defaultProps will be removed from function components in a future major release. Use JavaScript default parameters instead.

Esta advertencia proviene de una implementación de un componente de entrada de texto que forma parte de la biblioteca react-native-element-dropdown disponible en la versión actual del fuente.

Este issue lo ilustra: hoaphantn7604/react-native-element-dropdown#271

Es posible circunvenir esta advertencia utilizando una versión modificada de la biblioteca (haciendo un fork), o incluso creando el componente de dropdown desde cero, pero creo no es rentable.

@suehtemorp
Copy link
Collaborator Author

suehtemorp commented Jun 6, 2024

Esta lista de pendientes la coloco aquí para aclarar los pasos en la descripción y expandir un poco más

  • Pasarse a la rama y revisar que esté al día con respecto al remoto.
  • Instalar el NDK (Side-by-side) correspondiente (quizás mediante Android Studio).
  • Limpiar los nódulos de node en (node_modules/).
  • Regenerar la carpeta de trabajo en Android (npx expo prebuild --platform android --clean).
  • Revisar la compatibilidad de los paquetes con el SDK de Expo (npx expo install --check).
  • Reparar instalación de paquetes para coincidir con el SDK de Expo (npx expo install --fix).
  • De fracasar alguno de los dos comandos, probar utilizar el administrador de paquetes de Node directamente (npm install) y luego reintentar.
  • Configurar y compilar localmente el proyecto (npm run android).
  • Probar que la funcionalidad presente en la rama de desarrollo develop se mantenga con ésta rama.

Respecto a ese último punto, gracias a @lizethcorrales logré validar que la funcionalidad se mantiene al día de hoy en su computadora también (aparte de la mía). Eso es, omitiendo la advertencia del comentario anterior.

@suehtemorp
Copy link
Collaborator Author

Reciente encontré esta guía para utilizar una versión desactualizada del cliente de Expo Go en un teléfono Android, pero no sé si es de fiar:
https://dev.to/sasurau4/the-way-to-downgrade-expo-client-on-android-2mca

Ya realizé la consulta al profesor junto a su opinión, por aquello. Estaremos al tanto.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants