-
Defina JDK 17 e ANDROID_HOME antes do Gradle: React Native 0.86 / AGP 8.x esperam JDK 17. Aponte ANDROID_HOME para o Android SDK e adicione platform-tools ao PATH - falhas crípticas do Gradle geralmente rastreiam a deriva da cadeia de ferramentas.
-
Use npx expo run:android para loops nativos diários: O Android Studio Run ▶ não conecta o Metro da maneira que os clientes de desenvolvimento do Expo esperam. Builds orientados por terminal correspondem a como o EAS e o CI compilam.
-
Trate android/ como gerado em CNG: Edite app.config.ts e plugins de configuração, não mescle manualmente build.gradle a cada atualização de SDK. Execute npx expo prebuild --clean apenas quando a configuração nativa realmente mudou.
-
Conheça o mapa do Gradle: settings.gradle registra módulos, app/build.gradle contém applicationId e dependências, gradle.properties contém flags JVM e New Arch. Inspecione AndroidManifest.xml mesclado para permissões finais.
-
Filtre adb logcat para sinais RN: As tags ReactNativeJS, ReactNative e AndroidRuntime exibem logs JS e crashes nativos. A depuração USB precisa de adb reverse tcp:8081 tcp:8081 para o Metro.
-
Teste em emuladores API 34–35: Imagens de API antigas ocultam o comportamento edge-to-edge, seletor de fotos, permissão de notificação e gesto de voltar que o RN 0.86 visa.
-
Envolva o app em SafeAreaProvider: O Android edge-to-edge (padrão RN 0.86) desenha atrás das barras do sistema - os hooks de margem exigem um provedor no layout raiz.
-
Combine expo-status-bar com preenchimento de margem: Módulos de barra de status estilam a cor dos ícones; eles não preenchem o conteúdo. Use react-native-safe-area-context para clareza de layout.
-
Tematize a barra de navegação com expo-navigation-bar: Barras de navegação por gestos transparentes precisam de setBackgroundColorAsync e setButtonStyleAsync - frequentemente reaplicadas por tela ao focar.
-
Atribua um proprietário de margem por eixo: Não empilhe SafeAreaView e insets.top manual na mesma borda. Telas de aba omitem a borda segura inferior quando a barra de aba a gerencia.
-
Solicite permissões em contexto: Explique o porquê em uma tela, então chame requestPermission - nunca um dump de permissão no splash. A política do Play rejeita acesso sensível "não central para o propósito do app".
-
Prefira o seletor de fotos do sistema: Fluxos únicos do expo-image-picker devem evitar READ_MEDIA_IMAGES amplo, a menos que a sincronização contínua da galeria seja um recurso principal.
-
Audite o manifesto mesclado após o prebuild: rg uses-permission android/app/src/main/AndroidManifest.xml - capture permissões transitivas de SDKs não utilizados e remova com blockedPermissions.
-
Mantenha a segurança de dados alinhada com os SDKs: Cada SDK de análise, crash, autenticação ou pagamento deve aparecer no Data Safety do Play Console e em sua política de privacidade - "nenhum dado coletado" com Sentry instalado é um caminho de rejeição.
-
Solicite POST_NOTIFICATIONS em API 33+: Antes de getExpoPushTokenAsync, verifique e solicite permissão de notificação - pushes falham silenciosamente sem ela.
-
Habilite o Play App Signing em novas listagens: O Google detém a chave de assinatura do app; você mantém uma chave de upload. A perda da chave de upload é recuperável; a perda da chave de assinatura do app não é.
-
Deixe o EAS gerenciar os keystores de upload: Use eas credentials como fonte de verdade da equipe - nunca cometa arquivos .jks ou senhas no git. Armazene um backup baixado.
-
Coloque o SHA-256 do Play App Signing em assetlinks.json: Links do aplicativo Android de produção Android App Links verificam contra o certificado de re-assinatura do Google - não sua impressão digital de upload ou debug.
-
Incremente versionCode a cada upload para o Play: Inteiros monotônicos em todas as trilhas. Use autoIncrement: true em eas.json ou aumente android.versionCode em app.config.ts.
-
Envie a trilha interna antes da produção: eas submit com "track": "internal" captura problemas de assinatura, Data safety, IAP e App Links antes do lançamento público escalonado.
-
Teste builds entregues pelo Play para recursos da loja: Links de APK do EAS e builds de depuração sideload não exercitam totalmente a re-assinatura do Play, faturamento ou App Links verificados - instale a partir da trilha interna.
-
Valide o tamanho de página de 16 KB na API 35: Use AVDs com tamanho de página de 16 KB quando disponíveis; teste rápido de inicialização a frio de bibliotecas nativas antes do lançamento. SDKs de terceiros .so são a lacuna de conformidade usual.
-
Mantenha uma matriz de dispositivos além do Pixel: Inclua Samsung A-series de baixa RAM, navegação por gestos vs 3 botões e um tablet ou largura dobrável - QA apenas com emulador perde o comportamento de margem e memória do OEM.
-
Ajuste o JVM e o cache do Gradle: Defina org.gradle.jvmargs, parallel e caching em gradle.properties - evite prebuild --clean habitual. Habilite o cache de build do EAS para compilações na nuvem.
-
Profile o Gradle com --scan quando os builds regredirem: Meça o tempo da tarefa antes de adivinhar - CMake, codegen e mesclagens dex dominam o RN 0.86; corrija a tarefa lenta real.
Versões da pilha: Esta página foi escrita para React 19.2.3, React Native 0.86.0 e Expo SDK 57 (expo ~57.0.4).