-
Establece JDK 17 y ANDROID_HOME antes de Gradle: React Native 0.86 / AGP 8.x esperan JDK 17. Apunta ANDROID_HOME al Android SDK y añade platform-tools a PATH - los fallos criptográficos de Gradle generalmente se remontan a la deriva de la cadena de herramientas.
-
Usa npx expo run:android para ciclos nativos diarios: Android Studio Run ▶ no conecta Metro de la manera que los clientes de desarrollo de Expo esperan. Las compilaciones impulsadas por terminal coinciden con la forma en que EAS y CI compilan.
-
Trata android/ como generado en CNG: Edita app.config.ts y plugins de configuración, no fusiones manuales build.gradle en cada actualización de SDK. Ejecuta npx expo prebuild --clean solo cuando la configuración nativa realmente cambió.
-
Conoce el mapa de Gradle: settings.gradle registra módulos, app/build.gradle contiene applicationId y deps, gradle.properties contiene banderas JVM y New Arch. Inspecciona AndroidManifest.xml fusionado para permisos finales.
-
Filtra adb logcat para señales de RN: Las etiquetas ReactNativeJS, ReactNative y AndroidRuntime exponen registros de JS y fallos nativos. La depuración USB necesita adb reverse tcp:8081 tcp:8081 para Metro.
-
Prueba en emuladores API 34-35: Las imágenes de API antiguas ocultan edge-to-edge, selector de fotos, permiso de notificación y comportamiento de gesto atrás que RN 0.86 apunta.
-
Envuelve la app en SafeAreaProvider: Android edge-to-edge (predeterminado de RN 0.86) dibuja detrás de barras del sistema - los hooks de inset requieren un proveedor en la disposición raíz.
-
Empareja expo-status-bar con relleno de inset: Los módulos de barra de estado diseñan el color del icono; no rellenan el contenido. Usa react-native-safe-area-context para despeje de disposición.
-
Tema la barra de navegación con expo-navigation-bar: Las barras de navegación de gesto transparente necesitan setBackgroundColorAsync y setButtonStyleAsync - a menudo reaplicadas por pantalla en el enfoque.
-
Asigna un propietario de inset por eje: No apiles SafeAreaView e inset manual insets.top en el mismo borde. Las pantallas de pestañas omiten el borde seguro inferior cuando la barra de pestañas lo maneja.
-
Solicita permisos en contexto: Explica por qué en una pantalla, luego llama a requestPermission - nunca un volcado de permiso de tiempo de pantalla de inicio. La política de Play rechaza acceso sensible "no central al propósito de la app".
-
Prefiere el selector de fotos del sistema: Los flujos únicos de expo-image-picker deben evitar READ_MEDIA_IMAGES amplio a menos que la sincronización continua de la galería sea una característica central.
-
Audita el manifiesto fusionado después de prebuild: rg uses-permission android/app/src/main/AndroidManifest.xml - detecta permisos transitivos de SDKs no utilizados y elimina con blockedPermissions.
-
Mantén la seguridad de datos alineada con SDKs: Cada SDK de análisis, fallo, autenticación o pago debe aparecer en Play Console Data safety y tu política de privacidad - "sin datos recopilados" con Sentry instalado es una ruta de rechazo.
-
Solicita POST_NOTIFICATIONS en API 33+: Antes de getExpoPushTokenAsync, verifica y solicita permiso de notificación - los empujes fallan silenciosamente sin él.
-
Habilita Play App Signing en nuevas listas: Google mantiene la clave de firma de la app; tú mantienes una clave de carga. La pérdida de la clave de carga es recuperable; la pérdida de la clave de firma de la app no lo es.
-
Deja que EAS maneje almacenes de carga de teclas: Usa eas credentials como fuente de verdad del equipo - nunca confirmes archivos .jks o contraseñas a git. Almacena en bóveda una descarga de respaldo.
-
Pon el SHA-256 de Play App Signing en assetlinks.json: La producción Android App Links verifica contra el certificado de re-firma de Google - no tu clave de carga o huella digital de depuración.
-
Incrementa versionCode en cada carga de Play: Enteros monótonos en todas las pistas. Usa autoIncrement: true en eas.json o bump android.versionCode en app.config.ts.
-
Envía la pista interna antes de producción: eas submit con "track": "internal" detecta firma, Data safety, IAP y problemas de App Links antes del lanzamiento por etapas público.
-
Prueba compilaciones entregadas por Play para características de tienda: Los enlaces EAS APK y compilaciones de depuración de carga lateral no ejercitan completamente la re-firma de Play, facturación o App Links verificadas - instala desde la pista interna.
-
Valida 16 KB page size en API 35: Usa AVDs de 16 KB page size cuando esté disponible; prueba en frío las librerías nativas antes del lanzamiento. Los SDKs de terceros .so son la brecha de cumplimiento habitual.
-
Mantén una matriz de dispositivos más allá de Pixel: Incluye Samsung de bajo RAM serie A, gesto vs navegación de 3 botones, y un ancho de tablet o plegable - QA solo de emulador pierde inset de OEM y comportamiento de memoria.
-
Sintoniza Gradle JVM y caché: Establece org.gradle.jvmargs, parallel y caching en gradle.properties - evita habitual prebuild --clean. Habilita caché de compilación de EAS para compilaciones en la nube.
-
Perfila Gradle con --scan cuando las compilaciones retroceden: Mide el tiempo de tarea antes de adivinar - CMake, codegen y dex merges dominan RN 0.86; arregla la tarea realmente lenta.
Versiones de stack: Esta página fue escrita para React 19.2.3, React Native 0.86.0 y Expo SDK 57 (expo ~57.0.4).